
    m
i                       d Z ddlm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 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 ddlmZmZmZ ddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& erddl'm(Z( ddhZ) e	ded           G d de                      Z* e	ded           G d d                      Z+ e	ded           G d de*                      Z, e	ded           G d d e                      Z-d!S )"zPChain that implements the ReAct paper from https://arxiv.org/pdf/2210.03629.pdf.    )annotations)Sequence)TYPE_CHECKINGAny)
deprecated)Document)BaseLanguageModel)BasePromptTemplate)BaseToolTool)Field)override)AGENT_DEPRECATION_WARNING)AgentAgentExecutorAgentOutputParser)	AgentTypeReActOutputParserTEXTWORLD_PROMPTWIKI_PROMPT)validate_tools_single_input)DocstoreLookupSearchz0.1.0z1.0)messageremovalc                      e Zd ZU dZ ee          Zded<   ee	dd                        Z
edd
            Zee	dd                        Zed fd            Zedd            Zedd            Zedd            Z xZS )ReActDocstoreAgentzAgent for the ReAct chain.)default_factoryr   output_parserkwargsr   returnc                    t                      S )Nr   )clsr$   s     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langchain_classic/agents/react/base.py_get_default_output_parserz-ReActDocstoreAgent._get_default_output_parser)   s     !"""    strc                    t           j        S )z#Return Identifier of an agent type.)r   REACT_DOCSTOREselfs    r(   _agent_typezReActDocstoreAgent._agent_type.   s     ''r*   toolsSequence[BaseTool]r
   c                    t           S zReturn default prompt.r   r'   r1   s     r(   create_promptz ReActDocstoreAgent.create_prompt3   s
     r*   Nonec                <   t          | j        |           t                                          |           t	          |          t	          t
                    k    rd| }t          |          d |D             }|t
          k    rd| }t          |          d S )Nz-Exactly two tools must be specified, but got c                    h | ]	}|j         
S  name.0tools     r(   	<setcomp>z5ReActDocstoreAgent._validate_tools.<locals>.<setcomp>@       222Ddi222r*   z,Tool names should be Lookup and Search, got )r   __name__super_validate_toolslen_LOOKUP_AND_SEARCH_TOOLS
ValueErrorr'   r1   msg
tool_names	__class__s       r(   rD   z"ReActDocstoreAgent._validate_tools9   s    #CL%888&&&u::56666I%IICS//!22E222
111MMMCS//! 21r*   c                    dS )z&Prefix to append the observation with.zObservation: r:   r.   s    r(   observation_prefixz%ReActDocstoreAgent.observation_prefixE   s	     r*   	list[str]c                    dgS )Nz
Observation:r:   r.   s    r(   _stopzReActDocstoreAgent._stopJ   s     !!r*   c                    dS )z#Prefix to append the LLM call with.zThought:r:   r.   s    r(   
llm_prefixzReActDocstoreAgent.llm_prefixN   s	     zr*   )r$   r   r%   r   r%   r+   r1   r2   r%   r
   r1   r2   r%   r7   r%   rN   )rB   
__module____qualname____doc__r   r   r#   __annotations__classmethodr   r)   propertyr0   r6   rD   rM   rP   rR   __classcell__rK   s   @r(   r!   r!      sD         %$',u=N'O'O'OMOOOO# # # X [# ( ( ( X(    X [ 	" 	" 	" 	" 	" [	"    X " " " X"    X    r*   r!   c                  Z    e Zd ZdZddZddZdd	Zedd
            Zedd            Z	dS )DocstoreExplorerz5Class to assist with exploration of a document store.docstorer   c                >    || _         d| _        d| _        d| _        dS )z=Initialize with a docstore, and set initial document to None.N r   )ra   document
lookup_strlookup_index)r/   ra   s     r(   __init__zDocstoreExplorer.__init__\   s%     )-r*   termr+   r%   c                    | j                             |          }t          |t                    r|| _        | j        S d| _        |S )z5Search for a term in the docstore, and if found save.N)ra   search
isinstancer   rd   _summary)r/   rh   results      r(   rj   zDocstoreExplorer.searchc   sD    %%d++fh'' 	!"DM= r*   c                     j         d}t          |          |                                 j        k    r!|                                 _        d _        n xj        dz  c_         fd j        D             }t          |          dk    rdS  j        t          |          k    rdS d j        dz    d	t          |           d
}| d| j                  S )z%Lookup a term in document (if saved).Nz/Cannot lookup without a successful search firstr      c                J    g | ]}j         |                                v | S r:   )re   lower)r>   pr/   s     r(   
<listcomp>z+DocstoreExplorer.lookup.<locals>.<listcomp>v   s-    OOO$/QWWYY2N2N12N2N2Nr*   z
No ResultszNo More Resultsz(Result /) )rd   rG   rq   re   rf   _paragraphsrE   )r/   rh   rI   lookupsresult_prefixs   `    r(   lookupzDocstoreExplorer.lookupl   s    = CCS//!::<<4?**"jjllDO !D"OOOOd.OOOw<<1<G,,$$J4#4q#8JJ3w<<JJJ>>'$*;"<>>>r*   c                    | j         d         S )Nr   )rw   r.   s    r(   rl   zDocstoreExplorer._summary~   s    ""r*   rN   c                p    | j         d}t          |          | j         j                            d          S )Nz(Cannot get paragraphs without a documentz

)rd   rG   page_contentsplit)r/   rI   s     r(   rw   zDocstoreExplorer._paragraphs   s4    = <CS//!})//777r*   N)ra   r   )rh   r+   r%   r+   rS   rV   )
rB   rW   rX   rY   rg   rj   rz   r\   rl   rw   r:   r*   r(   r`   r`   T   s         @?      ? ? ? ?$ # # # X# 8 8 8 X8 8 8r*   r`   c                  \     e Zd ZdZeed	d                        Zed
 fd            Z xZS )ReActTextWorldAgentz$Agent for the ReAct TextWorld chain.r1   r2   r%   r
   c                    t           S r4   r   r5   s     r(   r6   z!ReActTextWorldAgent.create_prompt   s
      r*   r7   c                   t          | j        |           t                                          |           t	          |          dk    rd| }t          |          d |D             }|dhk    rd| }t          |          d S )Nro   z,Exactly one tool must be specified, but got c                    h | ]	}|j         
S r:   r;   r=   s     r(   r@   z6ReActTextWorldAgent._validate_tools.<locals>.<setcomp>   rA   r*   PlayzTool name should be Play, got )r   rB   rC   rD   rE   rG   rH   s       r(   rD   z#ReActTextWorldAgent._validate_tools   s    #CL%888&&&u::??HHHCS//!22E222
&!!?:??CS//! "!r*   rT   rU   )	rB   rW   rX   rY   r[   r   r6   rD   r]   r^   s   @r(   r   r      sy         /.      X [  	" 	" 	" 	" 	" [	" 	" 	" 	" 	"r*   r   c                  $     e Zd ZdZd	 fdZ xZS )

ReActChainz3[Deprecated] Chain that implements the ReAct paper.llmr	   ra   r   r$   r   c                    t          |          }t          d|j        d          t          d|j        d          g}t                              ||          } t                      j        d||d| dS )	z'Initialize with the LLM and a docstore.r   z"Search for a term in the docstore.)r<   funcdescriptionr   zLookup a term in the docstore.)agentr1   Nr:   )r`   r   rj   rz   r!   from_llm_and_toolsrC   rg   )r/   r   ra   r$   docstore_explorerr1   r   rK   s          r(   rg   zReActChain.__init__   s    ,X66&-@  
 &-<  
 #55c5AA<uE<<V<<<<<r*   )r   r	   ra   r   r$   r   )rB   rW   rX   rY   rg   r]   r^   s   @r(   r   r      sE         >== = = = = = = = = =r*   r   N).rY   
__future__r   collections.abcr   typingr   r   langchain_core._apir   langchain_core.documentsr   langchain_core.language_modelsr	   langchain_core.promptsr
   langchain_core.toolsr   r   pydanticr   typing_extensionsr   "langchain_classic._api.deprecationr   langchain_classic.agents.agentr   r   r   $langchain_classic.agents.agent_typesr   ,langchain_classic.agents.react.output_parserr   /langchain_classic.agents.react.textworld_promptr   *langchain_classic.agents.react.wiki_promptr   langchain_classic.agents.utilsr   !langchain_community.docstore.baser   rF   r!   r`   r   r   r:   r*   r(   <module>r      s   V V " " " " " " $ $ $ $ $ $ % % % % % % % % * * * * * * - - - - - - < < < < < < 5 5 5 5 5 5 / / / / / / / /       & & & & & & H H H H H H R R R R R R R R R R : : : : : : J J J J J J L L L L L L B B B B B B F F F F F F ;:::::: %h/  %  
- - - - - - - 
-` %  
.8 .8 .8 .8 .8 .8 .8 
.8b %  
" " " " ", " " 
", %  
= = = = = = = 
= = =r*   