
    Ngz                     J    d dl mZ d dlmZmZ d dlmZ  G d de          ZdS )    )Union)AgentActionAgentFinish)AgentOutputParserc                   Z    e Zd ZdZdedeeef         fdZdefdZ	e
defd            ZdS )XMLAgentOutputParsera'  Parses tool invocations and final answers in XML format.

    Expects output to be in one of two formats.

    If the output signals that an action should be taken,
    should be in the below format. This will result in an AgentAction
    being returned.

    ```
    <tool>search</tool>
    <tool_input>what is 2 + 2</tool_input>
    ```

    If the output signals that a final answer should be given,
    should be in the below format. This will result in an AgentFinish
    being returned.

    ```
    <final_answer>Foo</final_answer>
    ```
    textreturnc                    d|v r|                     d          \  }}|                     d          d         }|                     d          d         }d|v r|                     d          d         }t          |||          S d|v rJ|                     d          \  }}d	|v r|                     d	          d         }t          d
|i|          S t          )Nz</tool>z<tool>   z<tool_input>z</tool_input>r   )tool
tool_inputlogz<final_answer>z</final_answer>output)return_valuesr   )splitr   r   
ValueError)selfr	   r   r   _tool_tool_input_answers           _/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain/agents/output_parsers/xml.pyparsezXMLAgentOutputParser.parse   s    #zz)44D*JJx((+E$**>::1=K+--)//@@CEktLLLL%%

#344IAv F**&788;h-?TJJJJ    c                     t           )N)NotImplementedErrorr   s    r   get_format_instructionsz,XMLAgentOutputParser.get_format_instructions/   s    !!r   c                     dS )Nz	xml-agent r   s    r   _typezXMLAgentOutputParser._type2   s    {r   N)__name__
__module____qualname____doc__strr   r   r   r   r   propertyr"   r!   r   r   r   r      s         ,# %[(@"A     " " " " " s    X  r   r   N)typingr   langchain_core.agentsr   r   langchain.agentsr   r   r!   r   r   <module>r,      sv          : : : : : : : : . . . . . ., , , , ,, , , , , ,r   