XMLAgent Class — langchain Architecture
Architecture documentation for the XMLAgent class in base.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 282deafd_7db7_2eb5_f124_f5c450b624d7["XMLAgent"] 2066c331_3189_1880_ba09_f5a3c375c553["BaseSingleActionAgent"] 282deafd_7db7_2eb5_f124_f5c450b624d7 -->|extends| 2066c331_3189_1880_ba09_f5a3c375c553 c2f0c081_8237_df3b_5e48_c1a86e2e0cd0["base.py"] 282deafd_7db7_2eb5_f124_f5c450b624d7 -->|defined in| c2f0c081_8237_df3b_5e48_c1a86e2e0cd0 e4dc2519_9571_ff21_248b_61287645ca21["input_keys()"] 282deafd_7db7_2eb5_f124_f5c450b624d7 -->|method| e4dc2519_9571_ff21_248b_61287645ca21 9f0cac88_f4fe_5851_bdd6_cc3c59b6a6ea["get_default_prompt()"] 282deafd_7db7_2eb5_f124_f5c450b624d7 -->|method| 9f0cac88_f4fe_5851_bdd6_cc3c59b6a6ea a745a3db_d2a2_ab6e_046a_54702ad6486c["get_default_output_parser()"] 282deafd_7db7_2eb5_f124_f5c450b624d7 -->|method| a745a3db_d2a2_ab6e_046a_54702ad6486c 6cb59e5d_1cfb_c4ce_368c_4757582bc20c["plan()"] 282deafd_7db7_2eb5_f124_f5c450b624d7 -->|method| 6cb59e5d_1cfb_c4ce_368c_4757582bc20c 6394cebd_874c_adb3_3ef7_6782c24bfdc3["aplan()"] 282deafd_7db7_2eb5_f124_f5c450b624d7 -->|method| 6394cebd_874c_adb3_3ef7_6782c24bfdc3
Relationship Graph
Source Code
libs/langchain/langchain_classic/agents/xml/base.py lines 23–112
class XMLAgent(BaseSingleActionAgent):
"""Agent that uses XML tags.
Args:
tools: list of tools the agent can choose from
llm_chain: The LLMChain to call to predict the next action
Examples:
```python
from langchain_classic.agents import XMLAgent
from langchain
tools = ...
model =
```
"""
tools: list[BaseTool]
"""List of tools this agent has access to."""
llm_chain: LLMChain
"""Chain to use to predict action."""
@property
@override
def input_keys(self) -> list[str]:
return ["input"]
@staticmethod
def get_default_prompt() -> ChatPromptTemplate:
"""Return the default prompt for the XML agent."""
base_prompt = ChatPromptTemplate.from_template(agent_instructions)
return base_prompt + AIMessagePromptTemplate.from_template(
"{intermediate_steps}",
)
@staticmethod
def get_default_output_parser() -> XMLAgentOutputParser:
"""Return an XMLAgentOutputParser."""
return XMLAgentOutputParser()
@override
def plan(
self,
intermediate_steps: list[tuple[AgentAction, str]],
callbacks: Callbacks = None,
**kwargs: Any,
) -> AgentAction | AgentFinish:
log = ""
for action, observation in intermediate_steps:
log += (
f"<tool>{action.tool}</tool><tool_input>{action.tool_input}"
f"</tool_input><observation>{observation}</observation>"
)
tools = ""
for tool in self.tools:
tools += f"{tool.name}: {tool.description}\n"
inputs = {
"intermediate_steps": log,
"tools": tools,
"question": kwargs["input"],
"stop": ["</tool_input>", "</final_answer>"],
}
response = self.llm_chain(inputs, callbacks=callbacks)
return response[self.llm_chain.output_key]
@override
async def aplan(
self,
intermediate_steps: list[tuple[AgentAction, str]],
callbacks: Callbacks = None,
**kwargs: Any,
) -> AgentAction | AgentFinish:
log = ""
for action, observation in intermediate_steps:
log += (
f"<tool>{action.tool}</tool><tool_input>{action.tool_input}"
f"</tool_input><observation>{observation}</observation>"
)
tools = ""
for tool in self.tools:
Extends
Source
Frequently Asked Questions
What is the XMLAgent class?
XMLAgent is a class in the langchain codebase, defined in libs/langchain/langchain_classic/agents/xml/base.py.
Where is XMLAgent defined?
XMLAgent is defined in libs/langchain/langchain_classic/agents/xml/base.py at line 23.
What does XMLAgent extend?
XMLAgent extends BaseSingleActionAgent.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free