{"version":3,"file":"load.cjs","names":["QA_PROMPT_SELECTOR","StuffDocumentsChain","LLMChain","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,SAAS,KACtC;CACH,MAAM,EAAE,SAAS;AACjB,KAAI,SAAS,QACX,QAAO,iBAAiB,KAAK,OAAO;AAEtC,KAAI,SAAS,aACX,QAAO,qBAAqB,KAAK,OAAO;AAE1C,KAAI,SAAS,SACX,QAAO,kBAAkB,KAAK,OAAO;AAEvC,OAAM,IAAI,MAAM,kBAAkB,OAAO;;;;;;;;;AAkB3C,SAAgB,iBACd,KACA,SAA6B,EAAE,EAC/B;CACA,MAAM,EAAE,SAASA,sBAAAA,mBAAmB,UAAU,IAAI,EAAE,YAAY;AAGhE,QADc,IAAIC,2BAAAA,oBAAoB;EAAE,UADvB,IAAIC,kBAAAA,SAAS;GAAE;GAAQ;GAAK;GAAS,CAAC;EACL;EAAS,CAAC;;;;;;;;;AAsB9D,SAAgB,qBACd,KACA,SAAiC,EAAE,EACnC;CACA,MAAM,EACJ,mBAAmBC,2BAAAA,2BAA2B,UAAU,IAAI,EAC5D,gBAAgBC,2BAAAA,wBAAwB,UAAU,IAAI,EACtD,SACA,YACA,4BACE;AAkBJ,QANc,IAAIC,2BAAAA,wBAAwB;EACxC,UAZe,IAAIH,kBAAAA,SAAS;GAAE,QAAQ;GAAkB;GAAK;GAAS,CAAC;EAavE,sBAP2B,IAAID,2BAAAA,oBAAoB;GACnD,UANsB,IAAIC,kBAAAA,SAAS;IACnC,QAAQ;IACR,KAAK,cAAc;IACnB;IACD,CAAC;GAGA,sBAAsB;GACtB;GACD,CAAC;EAIA;EACA;EACD,CAAC;;;;;;;;;AAqBJ,SAAgB,kBACd,KACA,SAA8B,EAAE,EAChC;CACA,MAAM,EACJ,iBAAiBI,uBAAAA,yBAAyB,UAAU,IAAI,EACxD,eAAeC,uBAAAA,uBAAuB,UAAU,IAAI,EACpD,WACA,YACE;AAaJ,QALc,IAAIC,2BAAAA,qBAAqB;EACrC,UARe,IAAIN,kBAAAA,SAAS;GAAE,QAAQ;GAAgB;GAAK;GAAS,CAAC;EASrE,gBARqB,IAAIA,kBAAAA,SAAS;GAClC,QAAQ;GACR,KAAK,aAAa;GAClB;GACD,CAAC;EAKA;EACD,CAAC"}