UNPKG

@langchain/core

Version:
1 lines 3.89 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;EAE7B,OADe,KAAK,UAAU,GAClB,CAAC,CAAC,QAAQ,SAAS,oBAAoB,CAAC,CAAC;CACvD;AACF;;;;;;AAOA,IAAa,4BAAb,cAA+C,mBAAmB;CAChE;CAEA;CAOA,YACE,gBACA,eAKI,CAAC,GACL;EACA,MAAM;EACN,KAAK,gBAAgB;EACrB,KAAK,eAAe;CACtB;;;;;;;CAQA,UAAU,KAAqD;EAC7D,KAAK,MAAM,CAAC,WAAW,WAAW,KAAK,cACrC,IAAI,UAAU,GAAG,GACf,OAAO;EAGX,OAAO,KAAK;CACd;AACF;;;;;AAMA,SAAgB,MAAM,KAAiD;CACrE,OAAO,IAAI,WAAW,MAAM;AAC9B;;;;;AAMA,SAAgB,YACd,KACsB;CACtB,OAAO,IAAI,WAAW,MAAM;AAC9B"}