Source code for langchain.agents.output_parsers.xml

from typing import Union

from langchain_core.agents import AgentAction, AgentFinish

from langchain.agents import AgentOutputParser


[docs]class XMLAgentOutputParser(AgentOutputParser): """解析工具调用和最终答案的XML格式。 期望输出是以下两种格式之一。 如果输出信号表示应采取某种操作, 应该是以下格式。这将导致返回AgentAction。 ``` <tool>search</tool> <tool_input>what is 2 + 2</tool_input> ``` 如果输出信号表示应给出最终答案, 应该是以下格式。这将导致返回AgentFinish。 ``` <final_answer>Foo</final_answer> ```"""
[docs] def parse(self, text: str) -> Union[AgentAction, AgentFinish]: if "</tool>" in text: tool, tool_input = text.split("</tool>") _tool = tool.split("<tool>")[1] _tool_input = tool_input.split("<tool_input>")[1] if "</tool_input>" in _tool_input: _tool_input = _tool_input.split("</tool_input>")[0] return AgentAction(tool=_tool, tool_input=_tool_input, log=text) elif "<final_answer>" in text: _, answer = text.split("<final_answer>") if "</final_answer>" in answer: answer = answer.split("</final_answer>")[0] return AgentFinish(return_values={"output": answer}, log=text) else: raise ValueError
[docs] def get_format_instructions(self) -> str: raise NotImplementedError
@property def _type(self) -> str: return "xml-agent"