{"version":3,"file":"stuff.cjs","names":["StringOutputParser","DEFAULT_DOCUMENT_PROMPT","DOCUMENTS_KEY","RunnableSequence","RunnablePassthrough","RunnablePick","formatDocuments"],"sources":["../../../src/chains/combine_documents/stuff.ts"],"sourcesContent":["import { LanguageModelLike } from \"@langchain/core/language_models/base\";\nimport {\n  BaseOutputParser,\n  StringOutputParser,\n} from \"@langchain/core/output_parsers\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport {\n  RunnablePassthrough,\n  RunnablePick,\n  RunnableSequence,\n} from \"@langchain/core/runnables\";\n\nimport {\n  DEFAULT_DOCUMENT_PROMPT,\n  DEFAULT_DOCUMENT_SEPARATOR,\n  DOCUMENTS_KEY,\n  formatDocuments,\n} from \"./base.js\";\n\n/**\n * Create a chain that passes a list of documents to a model.\n * \n * @param llm Language model to use for responding.\n * @param prompt Prompt template. Must contain input variable \"context\", which will be\n    used for passing in the formatted documents.\n * @param outputParser Output parser. Defaults to `StringOutputParser`.\n * @param documentPrompt Prompt used for formatting each document into a string. Input\n    variables can be \"page_content\" or any metadata keys that are in all documents.\n    \"page_content\" will automatically retrieve the `Document.page_content`, and all \n    other inputs variables will be automatically retrieved from the `Document.metadata` dictionary. Default to a prompt that only contains `Document.page_content`.\n * @param documentSeparator String separator to use between formatted document strings.\n * @returns An LCEL `Runnable` chain.\n    Expects a dictionary as input with a list of `Document`s being passed under\n    the \"context\" key.\n    Return type depends on the `output_parser` used.\n */\nexport async function createStuffDocumentsChain<RunOutput = string>({\n  llm,\n  prompt,\n  outputParser = new StringOutputParser() as unknown as BaseOutputParser<RunOutput>,\n  documentPrompt = DEFAULT_DOCUMENT_PROMPT,\n  documentSeparator = DEFAULT_DOCUMENT_SEPARATOR,\n}: {\n  llm: LanguageModelLike;\n  prompt: BasePromptTemplate;\n  outputParser?: BaseOutputParser<RunOutput>;\n  documentPrompt?: BasePromptTemplate;\n  documentSeparator?: string;\n}) {\n  if (!prompt.inputVariables.includes(DOCUMENTS_KEY)) {\n    throw new Error(`Prompt must include a \"${DOCUMENTS_KEY}\" variable`);\n  }\n\n  return RunnableSequence.from(\n    [\n      RunnablePassthrough.assign({\n        [DOCUMENTS_KEY]: new RunnablePick(DOCUMENTS_KEY).pipe(\n          (documents, config) =>\n            formatDocuments({\n              documents,\n              documentPrompt,\n              documentSeparator,\n              config,\n            })\n        ),\n      }),\n      prompt,\n      llm,\n      outputParser,\n    ],\n    \"stuff_documents_chain\"\n  );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoCA,eAAsB,0BAA8C,EAClE,KACA,QACA,eAAe,IAAIA,+BAAAA,oBAAoB,EACvC,iBAAiBC,aAAAA,yBACjB,oBAAA,UAOC;AACD,KAAI,CAAC,OAAO,eAAe,SAAA,UAAuB,CAChD,OAAM,IAAI,MAAM,0BAA0BC,aAAAA,cAAc,YAAY;AAGtE,QAAOC,0BAAAA,iBAAiB,KACtB;EACEC,0BAAAA,oBAAoB,OAAO,GACxBF,aAAAA,gBAAgB,IAAIG,0BAAAA,aAAaH,aAAAA,cAAc,CAAC,MAC9C,WAAW,WACVI,aAAAA,gBAAgB;GACd;GACA;GACA;GACA;GACD,CAAC,CACL,EACF,CAAC;EACF;EACA;EACA;EACD,EACD,wBACD"}