{"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"}