@langchain/core
Version:
Core LangChain.js abstractions and schemas
1 lines • 4.17 kB
Source Map (JSON)
{"version":3,"file":"conditional.cjs","names":["llm: BaseLanguageModelInterface","options?: BaseGetPromptAsyncOptions","default_prompt: BasePromptTemplate","conditionals: Array<\n [\n condition: (llm: BaseLanguageModelInterface) => boolean,\n prompt: BasePromptTemplate\n ]\n >"],"sources":["../../src/example_selectors/conditional.ts"],"sourcesContent":["import type { BaseChatModel } from \"../language_models/chat_models.js\";\nimport type { BasePromptTemplate } from \"../prompts/base.js\";\nimport type { BaseLanguageModelInterface } from \"../language_models/base.js\";\nimport type { BaseLLM } from \"../language_models/llms.js\";\nimport type { PartialValues } from \"../utils/types/index.js\";\n\nexport type BaseGetPromptAsyncOptions = {\n partialVariables?: PartialValues;\n};\n\n/**\n * Abstract class that defines the interface for selecting a prompt for a\n * given language model.\n */\nexport abstract class BasePromptSelector {\n /**\n * Abstract method that must be implemented by any class that extends\n * `BasePromptSelector`. It takes a language model as an argument and\n * returns a prompt template.\n * @param llm The language model for which to get a prompt.\n * @returns A prompt template.\n */\n abstract getPrompt(llm: BaseLanguageModelInterface): BasePromptTemplate;\n\n /**\n * Asynchronous version of `getPrompt` that also accepts an options object\n * for partial variables.\n * @param llm The language model for which to get a prompt.\n * @param options Optional object for partial variables.\n * @returns A Promise that resolves to a prompt template.\n */\n async getPromptAsync(\n llm: BaseLanguageModelInterface,\n options?: BaseGetPromptAsyncOptions\n ): Promise<BasePromptTemplate> {\n const prompt = this.getPrompt(llm);\n return prompt.partial(options?.partialVariables ?? {});\n }\n}\n\n/**\n * Concrete implementation of `BasePromptSelector` that selects a prompt\n * based on a set of conditions. It has a default prompt that it returns\n * if none of the conditions are met.\n */\nexport class ConditionalPromptSelector extends BasePromptSelector {\n defaultPrompt: BasePromptTemplate;\n\n conditionals: Array<\n [\n condition: (llm: BaseLanguageModelInterface) => boolean,\n prompt: BasePromptTemplate\n ]\n >;\n\n constructor(\n default_prompt: BasePromptTemplate,\n conditionals: Array<\n [\n condition: (llm: BaseLanguageModelInterface) => boolean,\n prompt: BasePromptTemplate\n ]\n > = []\n ) {\n super();\n this.defaultPrompt = default_prompt;\n this.conditionals = conditionals;\n }\n\n /**\n * Method that selects a prompt based on a set of conditions. If none of\n * the conditions are met, it returns the default prompt.\n * @param llm The language model for which to get a prompt.\n * @returns A prompt template.\n */\n getPrompt(llm: BaseLanguageModelInterface): BasePromptTemplate {\n for (const [condition, prompt] of this.conditionals) {\n if (condition(llm)) {\n return prompt;\n }\n }\n return this.defaultPrompt;\n }\n}\n\n/**\n * Type guard function that checks if a given language model is of type\n * `BaseLLM`.\n */\nexport function isLLM(llm: BaseLanguageModelInterface): llm is BaseLLM {\n return llm._modelType() === \"base_llm\";\n}\n\n/**\n * Type guard function that checks if a given language model is of type\n * `BaseChatModel`.\n */\nexport function isChatModel(\n llm: BaseLanguageModelInterface\n): llm is BaseChatModel {\n return llm._modelType() === \"base_chat_model\";\n}\n"],"mappings":";;;;;;AAcA,IAAsB,qBAAtB,MAAyC;;;;;;;;CAiBvC,MAAM,eACJA,KACAC,SAC6B;EAC7B,MAAM,SAAS,KAAK,UAAU,IAAI;AAClC,SAAO,OAAO,QAAQ,SAAS,oBAAoB,CAAE,EAAC;CACvD;AACF;;;;;;AAOD,IAAa,4BAAb,cAA+C,mBAAmB;CAChE;CAEA;CAOA,YACEC,gBACAC,eAKI,CAAE,GACN;EACA,OAAO;EACP,KAAK,gBAAgB;EACrB,KAAK,eAAe;CACrB;;;;;;;CAQD,UAAUH,KAAqD;AAC7D,OAAK,MAAM,CAAC,WAAW,OAAO,IAAI,KAAK,aACrC,KAAI,UAAU,IAAI,CAChB,QAAO;AAGX,SAAO,KAAK;CACb;AACF;;;;;AAMD,SAAgB,MAAMA,KAAiD;AACrE,QAAO,IAAI,YAAY,KAAK;AAC7B;;;;;AAMD,SAAgB,YACdA,KACsB;AACtB,QAAO,IAAI,YAAY,KAAK;AAC7B"}