a
    agJ                     @   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                   @   sb   e Zd ZU dZdZeed< eZeed< edddZ	ee
eef dd	d
Zeed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   {/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain/agents/conversational/output_parser.pyget_format_instructions   s    z)ConvoOutputParser.get_format_instructions)textr   c                 C   s   | j  d|v r4td|| j  dd  i|S d}t||tj}|s\td| d|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actionZaction_inputr   r   r   parse   s    

zConvoOutputParser.parsec                 C   s   dS )NZconversationalr   r   r   r   r   _type/   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   