§
    ™Štj¹  ã                  ó  — 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2.0.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     úa/var/www/html/CA-Chatbot/venv/lib/python3.11/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Ð2 D�d”iÐ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    ø€ å# C¤L°%Ñ8Ô8Ð8Ý‰Œ×Ò Ñ&Ô&Ð&Ýˆu‰:Œ:�Õ5Ñ6Ô6Ò6Ð6ØIÀ%ÐIÐIˆCÝ˜S‘/”/Ð!Ø2Ð2¨EÐ2Ñ2Ô2ˆ
ØÕ1Ò1Ð1ØMÀÐMÐMˆCÝ˜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Ô'O€MÐ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Ñ+Ô+ˆÝ�f�hÑ'Ô'ð 	!Ø"ˆDŒMØ”=Ð ØˆŒØˆ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˜°$´/ÀQÇWÂWÁYÄYÐ2NÐ2N�1Ð2NÐ2NÐ2Nr*   z
No ResultszNo More Resultsz(Result ú/ú)ú )rd   rG   rq   re   rf   Ú_paragraphsrE   )r/   rh   rI   ÚlookupsÚresult_prefixs   `    r(   ÚlookupzDocstoreExplorer.lookupl   sí   ø€ àŒ=Ð ØCˆCÝ˜S‘/”/Ð!Ø�:Š:‰<Œ<˜4œ?Ò*Ð*Ø"Ÿjšj™lœlˆDŒOØ !ˆDÔÐàÐÔ Ñ"ÐÔØOÐOÐOÐO˜dÔ.ÐOÑOÔOˆÝˆw‰<Œ<˜1ÒÐØ�<ØÔ¥ G¡¤Ò,Ð,Ø$Ð$ØJ 4Ô#4°qÑ#8ÐJÐJ½3¸w¹<¼<Ð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–   ø€ å# C¤L°%Ñ8Ô8Ð8Ý‰Œ×Ò Ñ&Ô&Ð&Ýˆu‰:Œ:˜Š?ˆ?ØHÀÐHÐHˆCÝ˜S‘/”/Ð!Ø2Ð2¨EÐ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Ò5°c¸5ÑAÔAˆØ�‰ŒÔÐ<˜u¨EÐ<Ð<°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ñô ð
.8ðb €ØØ%Øðñ ô ð
"ð "ð "ð "ð "Ð,ñ "ô "ñô ð
"ð, €ØØ%Øðñ ô ð
=ð =ð =ð =ð =�ñ =ô =ñô ð
=ð =ð =r*   