{"version":3,"file":"output_parser.cjs","names":["AgentActionOutputParser","OutputParserException"],"sources":["../../../src/agents/openai_functions/output_parser.ts"],"sourcesContent":["import type { OpenAIClient } from \"@langchain/openai\";\nimport { AgentAction, AgentFinish } from \"@langchain/core/agents\";\nimport { BaseMessage, isBaseMessage } from \"@langchain/core/messages\";\nimport { ChatGeneration } from \"@langchain/core/outputs\";\nimport { OutputParserException } from \"@langchain/core/output_parsers\";\nimport { AgentActionOutputParser } from \"../types.js\";\n\n/**\n * Type that represents an agent action with an optional message log.\n */\nexport type FunctionsAgentAction = AgentAction & {\n  messageLog?: BaseMessage[];\n};\n\n/**\n * @example\n * ```typescript\n *\n * const prompt = ChatPromptTemplate.fromMessages([\n *   [\"ai\", \"You are a helpful assistant\"],\n *   [\"human\", \"{input}\"],\n *   new MessagesPlaceholder(\"agent_scratchpad\"),\n * ]);\n *\n * const modelWithFunctions = new ChatOpenAI({\n *   model: \"gpt-4\",\n *   temperature: 0,\n * }).bindTools(tools);\n *\n * const runnableAgent = RunnableSequence.from([\n *   {\n *     input: (i) => i.input,\n *     agent_scratchpad: (i) => formatAgentSteps(i.steps),\n *   },\n *   prompt,\n *   modelWithFunctions,\n *   new OpenAIFunctionsAgentOutputParser(),\n * ]);\n *\n * const result = await runnableAgent.invoke({\n *   input: \"What is the weather in New York?\",\n *   steps: agentSteps,\n * });\n *\n * ```\n */\nexport class OpenAIFunctionsAgentOutputParser extends AgentActionOutputParser {\n  lc_namespace = [\"langchain\", \"agents\", \"openai\"];\n\n  static lc_name() {\n    return \"OpenAIFunctionsAgentOutputParser\";\n  }\n\n  async parse(text: string): Promise<AgentAction | AgentFinish> {\n    throw new Error(\n      `OpenAIFunctionsAgentOutputParser can only parse messages.\\nPassed input: ${text}`\n    );\n  }\n\n  async parseResult(generations: ChatGeneration[]) {\n    if (\"message\" in generations[0] && isBaseMessage(generations[0].message)) {\n      return this.parseAIMessage(generations[0].message);\n    }\n    throw new Error(\n      \"parseResult on OpenAIFunctionsAgentOutputParser only works on ChatGeneration output\"\n    );\n  }\n\n  /**\n   * Parses the output message into a FunctionsAgentAction or AgentFinish\n   * object.\n   * @param message The BaseMessage to parse.\n   * @returns A FunctionsAgentAction or AgentFinish object.\n   */\n  parseAIMessage(message: BaseMessage): FunctionsAgentAction | AgentFinish {\n    if (message.content && typeof message.content !== \"string\") {\n      throw new Error(\"This agent cannot parse non-string model responses.\");\n    }\n    if (message.additional_kwargs.function_call) {\n      const function_call: OpenAIClient.Chat.ChatCompletionMessage.FunctionCall =\n        message.additional_kwargs.function_call;\n      try {\n        const toolInput = function_call.arguments\n          ? JSON.parse(function_call.arguments)\n          : {};\n        return {\n          tool: function_call.name as string,\n          toolInput,\n          log: `Invoking \"${function_call.name}\" with ${\n            function_call.arguments ?? \"{}\"\n          }\\n${message.content}`,\n          messageLog: [message],\n        };\n      } catch (error) {\n        throw new OutputParserException(\n          `Failed to parse function arguments from chat model response. Text: \"${function_call.arguments}\". ${error}`\n        );\n      }\n    } else {\n      return {\n        returnValues: { output: message.content },\n        log: message.content,\n      };\n    }\n  }\n\n  getFormatInstructions(): string {\n    throw new Error(\n      \"getFormatInstructions not implemented inside OpenAIFunctionsAgentOutputParser.\"\n    );\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,IAAa,mCAAb,cAAsDA,cAAAA,wBAAwB;CAC5E,eAAe;EAAC;EAAa;EAAU;EAAS;CAEhD,OAAO,UAAU;AACf,SAAO;;CAGT,MAAM,MAAM,MAAkD;AAC5D,QAAM,IAAI,MACR,4EAA4E,OAC7E;;CAGH,MAAM,YAAY,aAA+B;AAC/C,MAAI,aAAa,YAAY,OAAA,GAAA,yBAAA,eAAoB,YAAY,GAAG,QAAQ,CACtE,QAAO,KAAK,eAAe,YAAY,GAAG,QAAQ;AAEpD,QAAM,IAAI,MACR,sFACD;;;;;;;;CASH,eAAe,SAA0D;AACvE,MAAI,QAAQ,WAAW,OAAO,QAAQ,YAAY,SAChD,OAAM,IAAI,MAAM,sDAAsD;AAExE,MAAI,QAAQ,kBAAkB,eAAe;GAC3C,MAAM,gBACJ,QAAQ,kBAAkB;AAC5B,OAAI;IACF,MAAM,YAAY,cAAc,YAC5B,KAAK,MAAM,cAAc,UAAU,GACnC,EAAE;AACN,WAAO;KACL,MAAM,cAAc;KACpB;KACA,KAAK,aAAa,cAAc,KAAK,SACnC,cAAc,aAAa,KAC5B,IAAI,QAAQ;KACb,YAAY,CAAC,QAAQ;KACtB;YACM,OAAO;AACd,UAAM,IAAIC,+BAAAA,sBACR,uEAAuE,cAAc,UAAU,KAAK,QACrG;;QAGH,QAAO;GACL,cAAc,EAAE,QAAQ,QAAQ,SAAS;GACzC,KAAK,QAAQ;GACd;;CAIL,wBAAgC;AAC9B,QAAM,IAAI,MACR,iFACD"}