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
@property
def _type(self) -> str:
return "xml-agent"