{"version":3,"file":"output_parser.cjs","names":["AgentActionOutputParser","isBaseMessage","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;CAAQ;CAE/C,OAAO,UAAU;EACf,OAAO;CACT;CAEA,MAAM,MAAM,MAAkD;EAC5D,MAAM,IAAI,MACR,4EAA4E,MAC9E;CACF;CAEA,MAAM,YAAY,aAA+B;EAC/C,IAAI,aAAa,YAAY,OAAA,GAAMC,yBAAAA,cAAAA,CAAc,YAAY,EAAE,CAAC,OAAO,GACrE,OAAO,KAAK,eAAe,YAAY,EAAE,CAAC,OAAO;EAEnD,MAAM,IAAI,MACR,qFACF;CACF;;;;;;;CAQA,eAAe,SAA0D;EACvE,IAAI,QAAQ,WAAW,OAAO,QAAQ,YAAY,UAChD,MAAM,IAAI,MAAM,qDAAqD;EAEvE,IAAI,QAAQ,kBAAkB,eAAe;GAC3C,MAAM,gBACJ,QAAQ,kBAAkB;GAC5B,IAAI;IACF,MAAM,YAAY,cAAc,YAC5B,KAAK,MAAM,cAAc,SAAS,IAClC,CAAC;IACL,OAAO;KACL,MAAM,cAAc;KACpB;KACA,KAAK,aAAa,cAAc,KAAK,SACnC,cAAc,aAAa,KAC5B,IAAI,QAAQ;KACb,YAAY,CAAC,OAAO;IACtB;GACF,SAAS,OAAO;IACd,MAAM,IAAIC,+BAAAA,sBACR,uEAAuE,cAAc,UAAU,KAAK,OACtG;GACF;EACF,OACE,OAAO;GACL,cAAc,EAAE,QAAQ,QAAQ,QAAQ;GACxC,KAAK,QAAQ;EACf;CAEJ;CAEA,wBAAgC;EAC9B,MAAM,IAAI,MACR,gFACF;CACF;AACF"}