
    @h                     r    S SK r S SKJr  S SKJrJr  S SKJr  S SKJ	r	  S SK
Jr  SrSrS	rS
r " S S\	5      rg)    N)Union)AgentActionAgentFinish)OutputParserException)AgentOutputParser)FORMAT_INSTRUCTIONSzFinal Answer:z1Invalid Format: Missing 'Action:' after 'Thought:z7Invalid Format: Missing 'Action Input:' after 'Action:'zHParsing LLM output produced both a final answer and a parse-able action:c                   l    \ rS rSr% Sr\r\\S'    S\4S jr	S\S\
\\4   4S jr\S\4S j5       rS	rg
)MRKLOutputParser   z&MRKL Output parser for the chat agent.format_instructionsreturnc                     U R                   $ )z<Returns formatting instructions for the given output parser.)r   selfs    [/var/www/html/shao/venv/lib/python3.13/site-packages/langchain/agents/mrkl/output_parser.pyget_format_instructions(MRKLOutputParser.get_format_instructions   s    '''    textc                 R   [         U;   nSn[        R                  " X1[        R                  5      nU(       a  U(       a  UR	                  [         5      UR	                  UR                  S5      5      :  aX  UR	                  [         5      [        [         5      -   nUR	                  SU5      n[        SXU R                  5       0USU 5      $ [         SU 3n[        U5      eU(       ar  UR                  S5      R                  5       nUR                  S5      n	U	R                  S	5      n
U
R                  S
5      SL a  U
R                  S5      n
[        XU5      $ U(       a2  [        SUR                  [         5      S   R                  5       0U5      $ [        R                  " SU[        R                  5      (       d  SU S3n[        U[        USS9e[        R                  " SU[        R                  5      (       d  SU S3n[        U[        USS9eSU S3n[        U5      e)zParse the output from the agent into
an AgentAction or AgentFinish object.

Args:
    text: The text to parse.

Returns:
    An AgentAction or AgentFinish object.

Raises:
    OutputParserException: If the output could not be parsed.
zFAction\s*\d*\s*:[\s]*(.*?)[\s]*Action\s*\d*\s*Input\s*\d*\s*:[\s]*(.*)r   z

outputNz:        zSELECT F"zAction\s*\d*\s*:[\s]*(.*?)zCould not parse LLM output: ``T)observation
llm_outputsend_to_llmz,[\s]*Action\s*\d*\s*Input\s*\d*\s*:[\s]*(.*))FINAL_ANSWER_ACTIONresearchDOTALLfindgrouplenr   strip.FINAL_ANSWER_AND_PARSABLE_ACTION_ERROR_MESSAGEr   
startswithr   split*MISSING_ACTION_AFTER_THOUGHT_ERROR_MESSAGE/MISSING_ACTION_INPUT_AFTER_ACTION_ERROR_MESSAGE)r   r   includes_answerregexaction_matchstart_index	end_indexmsgactionaction_input
tool_inputs              r   parseMRKLOutputParser.parse    s    .5U 	 yybii8Oyy,-		,:L:LQ:O0PP"ii(;<sCV?WW IIfk:	"t	:@@BC)$  DDBtfMC',,!''*002F'--a0L%++C0J$$Y/58'--c2
v4884::&9:2>DDFG 
 yy6biiHH1$q9C'F 	  yy;II
 

 2$q9C'K 	  .dV15#C((r   c                     g)Nmrkl r   s    r   _typeMRKLOutputParser._typee   s    r   r;   N)__name__
__module____qualname____firstlineno____doc__r   r   str__annotations__r   r   r   r   r7   propertyr<   __static_attributes__r;   r   r   r
   r
      s[    022)( (C)# C)%[(@"A C)J s  r   r
   )r"   typingr   langchain_core.agentsr   r   langchain_core.exceptionsr   langchain.agents.agentr   langchain.agents.mrkl.promptr   r!   r,   r-   r)   r
   r;   r   r   <module>rL      sI    	  : ; 4 <% 7 + > 0 O /
Q( Qr   