o
    {qiq                     @   s\   d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	 d dl
mZ G dd de	ZdS )	    N)Union)AgentActionAgentFinish)OutputParserException)AgentOutputParser)FORMAT_INSTRUCTIONSc                   @   sh   e Zd ZU dZdZeed< 	 eZeed< 	 defddZ	dede
eef fd	d
ZedefddZdS )ConvoOutputParserz+Output parser for the conversational agent.ZAI	ai_prefixformat_instructionsreturnc                 C   s   | j S )z<Returns formatting instructions for the given output parser.)r
   self r   t/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/langchain/agents/conversational/output_parser.pyget_format_instructions   s   z)ConvoOutputParser.get_format_instructionstextc                 C   s   | j  d|v rtd|| j  dd  i|S d}t||tj}|s0d| d}t||d}|d}t	| |d	d
|S )zParse the output from the agent into
        an AgentAction or AgentFinish object.

        Args:
            text: The text to parse.

        Returns:
            An AgentAction or AgentFinish object.
        :outputz)Action: (.*?)[\n]*Action Input: ([\s\S]*)zCould not parse LLM output: ``       ")
r	   r   splitstripresearchDOTALLr   groupr   )r   r   regexmatchmsgactionZaction_inputr   r   r   parse   s   

zConvoOutputParser.parsec                 C   s   dS )NZconversationalr   r   r   r   r   _type1   s   zConvoOutputParser._typeN)__name__
__module____qualname____doc__r	   str__annotations__r   r
   r   r   r   r   r$   propertyr%   r   r   r   r   r      s   
 r   )r   typingr   Zlangchain_core.agentsr   r   Zlangchain_core.exceptionsr   Zlangchain.agents.agentr   Z&langchain.agents.conversational.promptr   r   r   r   r   r   <module>   s    