Home / Class/ XMLAgent Class — langchain Architecture

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:

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