UNPKG

@langchain/core

Version:
1 lines 3.85 kB
{"version":3,"file":"conditional.cjs","names":[],"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,eACJ,KACA,SAC6B;AAE7B,SADe,KAAK,UAAU,IAAI,CACpB,QAAQ,SAAS,oBAAoB,EAAE,CAAC;;;;;;;;AAS1D,IAAa,4BAAb,cAA+C,mBAAmB;CAChE;CAEA;CAOA,YACE,gBACA,eAKI,EAAE,EACN;AACA,SAAO;AACP,OAAK,gBAAgB;AACrB,OAAK,eAAe;;;;;;;;CAStB,UAAU,KAAqD;AAC7D,OAAK,MAAM,CAAC,WAAW,WAAW,KAAK,aACrC,KAAI,UAAU,IAAI,CAChB,QAAO;AAGX,SAAO,KAAK;;;;;;;AAQhB,SAAgB,MAAM,KAAiD;AACrE,QAAO,IAAI,YAAY,KAAK;;;;;;AAO9B,SAAgB,YACd,KACsB;AACtB,QAAO,IAAI,YAAY,KAAK"}