{"version":3,"file":"load.cjs","names":["QA_PROMPT_SELECTOR","LLMChain","StuffDocumentsChain","COMBINE_QA_PROMPT_SELECTOR","COMBINE_PROMPT_SELECTOR","MapReduceDocumentsChain","QUESTION_PROMPT_SELECTOR","REFINE_PROMPT_SELECTOR","RefineDocumentsChain"],"sources":["../../../src/chains/question_answering/load.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport { LLMChain } from \"../llm_chain.js\";\nimport {\n  StuffDocumentsChain,\n  MapReduceDocumentsChain,\n  RefineDocumentsChain,\n  MapReduceDocumentsChainInput,\n} from \"../combine_docs_chain.js\";\nimport { QA_PROMPT_SELECTOR } from \"./stuff_prompts.js\";\nimport {\n  COMBINE_PROMPT_SELECTOR,\n  COMBINE_QA_PROMPT_SELECTOR,\n} from \"./map_reduce_prompts.js\";\nimport {\n  QUESTION_PROMPT_SELECTOR,\n  REFINE_PROMPT_SELECTOR,\n} from \"./refine_prompts.js\";\n\n/**\n * Represents the parameters for creating a QAChain. It can be of three\n * types: \"stuff\", \"map_reduce\", or \"refine\".\n */\nexport type QAChainParams =\n  | ({\n      type?: \"stuff\";\n    } & StuffQAChainParams)\n  | ({\n      type?: \"map_reduce\";\n    } & MapReduceQAChainParams)\n  | ({\n      type?: \"refine\";\n    } & RefineQAChainParams);\n\nexport const loadQAChain = (\n  llm: BaseLanguageModelInterface,\n  params: QAChainParams = { type: \"stuff\" }\n) => {\n  const { type } = params;\n  if (type === \"stuff\") {\n    return loadQAStuffChain(llm, params);\n  }\n  if (type === \"map_reduce\") {\n    return loadQAMapReduceChain(llm, params);\n  }\n  if (type === \"refine\") {\n    return loadQARefineChain(llm, params);\n  }\n  throw new Error(`Invalid _type: ${type}`);\n};\n\n/**\n * Represents the parameters for creating a StuffQAChain.\n */\nexport interface StuffQAChainParams {\n  prompt?: BasePromptTemplate;\n  verbose?: boolean;\n}\n\n/**\n * Loads a StuffQAChain based on the provided parameters. It takes an LLM\n * instance and StuffQAChainParams as parameters.\n * @param llm An instance of BaseLanguageModel.\n * @param params Parameters for creating a StuffQAChain.\n * @returns A StuffQAChain instance.\n */\nexport function loadQAStuffChain(\n  llm: BaseLanguageModelInterface,\n  params: StuffQAChainParams = {}\n) {\n  const { prompt = QA_PROMPT_SELECTOR.getPrompt(llm), verbose } = params;\n  const llmChain = new LLMChain({ prompt, llm, verbose });\n  const chain = new StuffDocumentsChain({ llmChain, verbose });\n  return chain;\n}\n\n/**\n * Represents the parameters for creating a MapReduceQAChain.\n */\nexport interface MapReduceQAChainParams {\n  returnIntermediateSteps?: MapReduceDocumentsChainInput[\"returnIntermediateSteps\"];\n  combineMapPrompt?: BasePromptTemplate;\n  combinePrompt?: BasePromptTemplate;\n  combineLLM?: BaseLanguageModelInterface;\n  verbose?: boolean;\n}\n\n/**\n * Loads a MapReduceQAChain based on the provided parameters. It takes an\n * LLM instance and MapReduceQAChainParams as parameters.\n * @param llm An instance of BaseLanguageModel.\n * @param params Parameters for creating a MapReduceQAChain.\n * @returns A MapReduceQAChain instance.\n */\nexport function loadQAMapReduceChain(\n  llm: BaseLanguageModelInterface,\n  params: MapReduceQAChainParams = {}\n) {\n  const {\n    combineMapPrompt = COMBINE_QA_PROMPT_SELECTOR.getPrompt(llm),\n    combinePrompt = COMBINE_PROMPT_SELECTOR.getPrompt(llm),\n    verbose,\n    combineLLM,\n    returnIntermediateSteps,\n  } = params;\n  const llmChain = new LLMChain({ prompt: combineMapPrompt, llm, verbose });\n  const combineLLMChain = new LLMChain({\n    prompt: combinePrompt,\n    llm: combineLLM ?? llm,\n    verbose,\n  });\n  const combineDocumentChain = new StuffDocumentsChain({\n    llmChain: combineLLMChain,\n    documentVariableName: \"summaries\",\n    verbose,\n  });\n  const chain = new MapReduceDocumentsChain({\n    llmChain,\n    combineDocumentChain,\n    returnIntermediateSteps,\n    verbose,\n  });\n  return chain;\n}\n\n/**\n * Represents the parameters for creating a RefineQAChain.\n */\nexport interface RefineQAChainParams {\n  questionPrompt?: BasePromptTemplate;\n  refinePrompt?: BasePromptTemplate;\n  refineLLM?: BaseLanguageModelInterface;\n  verbose?: boolean;\n}\n\n/**\n * Loads a RefineQAChain based on the provided parameters. It takes an LLM\n * instance and RefineQAChainParams as parameters.\n * @param llm An instance of BaseLanguageModel.\n * @param params Parameters for creating a RefineQAChain.\n * @returns A RefineQAChain instance.\n */\nexport function loadQARefineChain(\n  llm: BaseLanguageModelInterface,\n  params: RefineQAChainParams = {}\n) {\n  const {\n    questionPrompt = QUESTION_PROMPT_SELECTOR.getPrompt(llm),\n    refinePrompt = REFINE_PROMPT_SELECTOR.getPrompt(llm),\n    refineLLM,\n    verbose,\n  } = params;\n  const llmChain = new LLMChain({ prompt: questionPrompt, llm, verbose });\n  const refineLLMChain = new LLMChain({\n    prompt: refinePrompt,\n    llm: refineLLM ?? llm,\n    verbose,\n  });\n\n  const chain = new RefineDocumentsChain({\n    llmChain,\n    refineLLMChain,\n    verbose,\n  });\n  return chain;\n}\n"],"mappings":";;;;;;AAkCA,MAAa,eACX,KACA,SAAwB,EAAE,MAAM,QAAQ,MACrC;CACH,MAAM,EAAE,SAAS;CACjB,IAAI,SAAS,SACX,OAAO,iBAAiB,KAAK,MAAM;CAErC,IAAI,SAAS,cACX,OAAO,qBAAqB,KAAK,MAAM;CAEzC,IAAI,SAAS,UACX,OAAO,kBAAkB,KAAK,MAAM;CAEtC,MAAM,IAAI,MAAM,kBAAkB,MAAM;AAC1C;;;;;;;;AAiBA,SAAgB,iBACd,KACA,SAA6B,CAAC,GAC9B;CACA,MAAM,EAAE,SAASA,sBAAAA,mBAAmB,UAAU,GAAG,GAAG,YAAY;CAChE,MAAM,WAAW,IAAIC,kBAAAA,SAAS;EAAE;EAAQ;EAAK;CAAQ,CAAC;CAEtD,OAAO,IADWC,2BAAAA,oBAAoB;EAAE;EAAU;CAAQ,CAC/C;AACb;;;;;;;;AAoBA,SAAgB,qBACd,KACA,SAAiC,CAAC,GAClC;CACA,MAAM,EACJ,mBAAmBC,2BAAAA,2BAA2B,UAAU,GAAG,GAC3D,gBAAgBC,2BAAAA,wBAAwB,UAAU,GAAG,GACrD,SACA,YACA,4BACE;CACJ,MAAM,WAAW,IAAIH,kBAAAA,SAAS;EAAE,QAAQ;EAAkB;EAAK;CAAQ,CAAC;CACxE,MAAM,kBAAkB,IAAIA,kBAAAA,SAAS;EACnC,QAAQ;EACR,KAAK,cAAc;EACnB;CACF,CAAC;CACD,MAAM,uBAAuB,IAAIC,2BAAAA,oBAAoB;EACnD,UAAU;EACV,sBAAsB;EACtB;CACF,CAAC;CAOD,OAAO,IANWG,2BAAAA,wBAAwB;EACxC;EACA;EACA;EACA;CACF,CACW;AACb;;;;;;;;AAmBA,SAAgB,kBACd,KACA,SAA8B,CAAC,GAC/B;CACA,MAAM,EACJ,iBAAiBC,uBAAAA,yBAAyB,UAAU,GAAG,GACvD,eAAeC,uBAAAA,uBAAuB,UAAU,GAAG,GACnD,WACA,YACE;CACJ,MAAM,WAAW,IAAIN,kBAAAA,SAAS;EAAE,QAAQ;EAAgB;EAAK;CAAQ,CAAC;CACtE,MAAM,iBAAiB,IAAIA,kBAAAA,SAAS;EAClC,QAAQ;EACR,KAAK,aAAa;EAClB;CACF,CAAC;CAOD,OAAO,IALWO,2BAAAA,qBAAqB;EACrC;EACA;EACA;CACF,CACW;AACb"}