{"version":3,"file":"index.cjs","names":["renderTextDescription","AgentRunnableSequence","RunnablePassthrough","formatLogToString","ReActSingleInputOutputParser"],"sources":["../../../src/agents/react/index.ts"],"sourcesContent":["import type { ToolInterface } from \"@langchain/core/tools\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport type {\n  BaseLanguageModel,\n  BaseLanguageModelInterface,\n} from \"@langchain/core/language_models/base\";\nimport { RunnablePassthrough } from \"@langchain/core/runnables\";\nimport { AgentStep } from \"@langchain/core/agents\";\nimport { renderTextDescription } from \"../../tools/render.js\";\nimport { formatLogToString } from \"../format_scratchpad/log.js\";\nimport { ReActSingleInputOutputParser } from \"./output_parser.js\";\nimport { AgentRunnableSequence } from \"../agent.js\";\n\n/**\n * Params used by the createXmlAgent function.\n */\nexport type CreateReactAgentParams = {\n  /** LLM to use for the agent. */\n  llm: BaseLanguageModelInterface;\n  /** Tools this agent has access to. */\n  tools: ToolInterface[];\n  /**\n   * The prompt to use. Must have input keys for\n   * `tools`, `tool_names`, and `agent_scratchpad`.\n   */\n  prompt: BasePromptTemplate;\n  /**\n   * Whether to invoke the underlying model in streaming mode,\n   * allowing streaming of intermediate steps. Defaults to true.\n   */\n  streamRunnable?: boolean;\n};\n\n/**\n * Create an agent that uses ReAct prompting.\n * @param params Params required to create the agent. Includes an LLM, tools, and prompt.\n * @returns A runnable sequence representing an agent. It takes as input all the same input\n *     variables as the prompt passed in does. It returns as output either an\n *     AgentAction or AgentFinish.\n *\n * @example\n * ```typescript\n * import { AgentExecutor, createReactAgent } from \"langchain/agents\";\n * import { pull } from \"langchain/hub\";\n * import type { PromptTemplate } from \"@langchain/core/prompts\";\n *\n * import { OpenAI } from \"@langchain/openai\";\n *\n * // Define the tools the agent will have access to.\n * const tools = [...];\n *\n * // Get the prompt to use - you can modify this!\n * // If you want to see the prompt in full, you can at:\n * // https://smith.langchain.com/hub/hwchase17/react\n * const prompt = await pull<PromptTemplate>(\"hwchase17/react\");\n *\n * const llm = new OpenAI({\n *   temperature: 0,\n * });\n *\n * const agent = await createReactAgent({\n *   llm,\n *   tools,\n *   prompt,\n * });\n *\n * const agentExecutor = new AgentExecutor({\n *   agent,\n *   tools,\n * });\n *\n * const result = await agentExecutor.invoke({\n *   input: \"what is LangChain?\",\n * });\n * ```\n */\nexport async function createReactAgent({\n  llm,\n  tools,\n  prompt,\n  streamRunnable,\n}: CreateReactAgentParams) {\n  const missingVariables = [\"tools\", \"tool_names\", \"agent_scratchpad\"].filter(\n    (v) => !prompt.inputVariables.includes(v)\n  );\n  if (missingVariables.length > 0) {\n    throw new Error(\n      `Provided prompt is missing required input variables: ${JSON.stringify(\n        missingVariables\n      )}`\n    );\n  }\n  const toolNames = tools.map((tool) => tool.name);\n  const partialedPrompt = await prompt.partial({\n    tools: renderTextDescription(tools),\n    tool_names: toolNames.join(\", \"),\n  });\n  const llmWithStop = (llm as BaseLanguageModel).withConfig({\n    stop: [\"\\nObservation:\"],\n  });\n  const agent = AgentRunnableSequence.fromRunnables(\n    [\n      RunnablePassthrough.assign({\n        agent_scratchpad: (input: { steps: AgentStep[] }) =>\n          formatLogToString(input.steps),\n      }),\n      partialedPrompt,\n      llmWithStop,\n      new ReActSingleInputOutputParser({\n        toolNames,\n      }),\n    ],\n    {\n      name: \"ReactAgent\",\n      streamRunnable,\n      singleAction: true,\n    }\n  );\n  return agent;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EA,eAAsB,iBAAiB,EACrC,KACA,OACA,QACA,kBACyB;CACzB,MAAM,mBAAmB;EAAC;EAAS;EAAc;EAAmB,CAAC,QAClE,MAAM,CAAC,OAAO,eAAe,SAAS,EAAE,CAC1C;AACD,KAAI,iBAAiB,SAAS,EAC5B,OAAM,IAAI,MACR,wDAAwD,KAAK,UAC3D,iBACD,GACF;CAEH,MAAM,YAAY,MAAM,KAAK,SAAS,KAAK,KAAK;CAChD,MAAM,kBAAkB,MAAM,OAAO,QAAQ;EAC3C,OAAOA,qBAAAA,sBAAsB,MAAM;EACnC,YAAY,UAAU,KAAK,KAAK;EACjC,CAAC;CACF,MAAM,cAAe,IAA0B,WAAW,EACxD,MAAM,CAAC,iBAAiB,EACzB,CAAC;AAmBF,QAlBcC,cAAAA,sBAAsB,cAClC;EACEC,0BAAAA,oBAAoB,OAAO,EACzB,mBAAmB,UACjBC,qCAAAA,kBAAkB,MAAM,MAAM,EACjC,CAAC;EACF;EACA;EACA,IAAIC,mCAAAA,6BAA6B,EAC/B,WACD,CAAC;EACH,EACD;EACE,MAAM;EACN;EACA,cAAc;EACf,CACF"}