§
    è˜ºht  ã                   óØ  — d Z ddlmZ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 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 ddl m!Z! ddl"m#Z#  edd¬¦  «         G d„ de¦  «        ¦   «         Z$ edd¬¦  «         G d„ d¦  «        ¦   «         Z% edd¬¦  «         G d„ de$¦  «        ¦   «         Z& edd¬¦  «         G d„ de¦  «        ¦   «         Z'dS )zPChain that implements the ReAct paper from https://arxiv.org/pdf/2210.03629.pdf.é    )ÚAnyÚListÚOptionalÚSequence)Ú
deprecated)ÚDocument)ÚBaseLanguageModel)ÚBasePromptTemplate)ÚField)ÚBaseTool)ÚAgentÚAgentExecutorÚAgentOutputParser)Ú	AgentType©ÚReActOutputParser©ÚTEXTWORLD_PROMPT©ÚWIKI_PROMPT)ÚTool)Úvalidate_tools_single_input)ÚDocstorez0.1.0z0.2.0)Úremovalc                   ó4  ‡ — e Zd ZU dZ ee¬¦  «        Zeed<   e	de
defd„¦   «         Zedefd„¦   «         Ze	dee         defd	„¦   «         Ze	dee         dd
fˆ fd„¦   «         Zedefd„¦   «         Zedee         fd„¦   «         Zedefd„¦   «         Zˆ xZS )ÚReActDocstoreAgentzAgent for the ReAct chain.)Údefault_factoryÚoutput_parserÚkwargsÚreturnc                 ó   — t          ¦   «         S )Nr   )Úclsr   s     úc/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain/agents/react/base.pyÚ_get_default_output_parserz-ReActDocstoreAgent._get_default_output_parser   s   € å Ñ"Ô"Ð"ó    c                 ó   — t           j        S )z#Return Identifier of an agent type.)r   ÚREACT_DOCSTORE©Úselfs    r#   Ú_agent_typezReActDocstoreAgent._agent_type   s   € õ Ô'Ð'r%   Útoolsc                 ó   — t           S ©zReturn default prompt.r   ©r"   r+   s     r#   Úcreate_promptz ReActDocstoreAgent.create_prompt$   s
   € õ Ðr%   Nc                 ó
  •— t          | j        |¦  «         t          ¦   «                              |¦  «         t	          |¦  «        dk    rt          d|› �¦  «        ‚d„ |D ¦   «         }|ddhk    rt          d|› �¦  «        ‚d S )Né   z-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%   ÚLookupÚSearchz,Tool names should be Lookup and Search, got ©r   Ú__name__ÚsuperÚ_validate_toolsÚlenÚ
ValueError©r"   r+   Ú
tool_namesÚ	__class__s      €r#   r@   z"ReActDocstoreAgent._validate_tools)   s›   ø€ å# C¤L°%Ñ8Ô8Ð8Ý‰Œ×Ò Ñ&Ô&Ð&Ýˆu‰:Œ:˜Š?ˆ?ÝÐTÈUÐTÐTÑUÔUÐUØ2Ð2¨EÐ2Ñ2Ô2ˆ
Ø˜( HÐ-Ò-Ð-ÝØK¸zÐKÐKñô ð ð .Ð-r%   c                 ó   — dS )z&Prefix to append the observation with.zObservation: r3   r(   s    r#   Úobservation_prefixz%ReActDocstoreAgent.observation_prefix5   s	   € ð ˆr%   c                 ó   — dgS )Nz
Observation:r3   r(   s    r#   Ú_stopzReActDocstoreAgent._stop:   s   € à Ð!Ð!r%   c                 ó   — dS )z#Prefix to append the LLM call with.zThought:r3   r(   s    r#   Ú
llm_prefixzReActDocstoreAgent.llm_prefix>   s	   € ð ˆzr%   )r>   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   Ú__annotations__Úclassmethodr   r$   ÚpropertyÚstrr*   r   r   r
   r/   r@   rG   r   rI   rK   Ú__classcell__©rE   s   @r#   r   r      s„  ø€ € € € € € à$Ð$à', uÐ=NÐ'OÑ'OÔ'O€MÐ$ÐOÐOÑOàð#°#ð #Ð:Kð #ð #ð #ñ „[ð#ð ð(˜Sð (ð (ð (ñ „Xð(ð ð (¨8Ô"4ð Ð9Kð ð ð ñ „[ðð ð	 H¨XÔ$6ð 	¸4ð 	ð 	ð 	ð 	ð 	ñ „[ð	ð ð Cð ð ð ñ „Xðð ð"�t˜C”yð "ð "ð "ñ „Xð"ð ð˜Cð ð ð ñ „Xðð ð ð ð r%   r   c                   ó‚   — e Zd ZdZdefd„Zdedefd„Zdedefd„Ze	defd„¦   «         Z
e	dee         fd	„¦   «         Zd
S )ÚDocstoreExplorerz5Class to assist with exploration of a document store.Údocstorec                 ó>   — || _         d| _        d| _        d| _        dS )z=Initialize with a docstore, and set initial document to None.NÚ r   )rW   ÚdocumentÚ
lookup_strÚlookup_index)r)   rW   s     r#   Ú__init__zDocstoreExplorer.__init__H   s%   € à ˆŒØ,0ˆŒØˆŒØˆÔÐÐr%   Útermr    c                 óŽ   — | j                              |¦  «        }t          |t          ¦  «        r|| _        | j        S d| _        |S )z5Search for a term in the docstore, and if found save.N)rW   ÚsearchÚ
isinstancer   rZ   Ú_summary)r)   r^   Úresults      r#   r`   zDocstoreExplorer.searchO   sD   € à”×%Ò% dÑ+Ô+ˆÝ�f�hÑ'Ô'ð 	Ø"ˆDŒMØ”=Ð à ˆDŒMØˆMr%   c                 ó°  ‡ — ‰ j         €t          d¦  «        ‚|                     ¦   «         ‰ 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 r3   )r[   Úlower)r7   Úpr)   s     €r#   ú
<listcomp>z+DocstoreExplorer.lookup.<locals>.<listcomp>b   s-   ø€ ÐOÐOÐO˜°$´/ÀQÇWÂWÁYÄYÐ2NÐ2N�1Ð2NÐ2NÐ2Nr%   z
No ResultszNo More Resultsz(Result ú/ú)ú )rZ   rB   rg   r[   r\   Ú_paragraphsrA   )r)   r^   ÚlookupsÚresult_prefixs   `   r#   ÚlookupzDocstoreExplorer.lookupY   së   ø€ àŒ=Ð ÝÐNÑOÔOÐOØ�:Š:‰<Œ<˜4œ?Ò*Ð*Ø"Ÿjšj™lœlˆDŒOØ !ˆDÔÐàÐÔ Ñ"ÐÔØOÐOÐOÐO˜dÔ.ÐOÑOÔOˆÝˆw‰<Œ<˜1ÒÐØ�<ØÔ¥# g¡,¤,Ò.Ð.Ø$Ð$àN tÔ'8¸1Ñ'<ÐNÐN½sÀ7¹|¼|ÐNÐNÐNˆMØ#ÐBÐB g¨dÔ.?Ô&@ÐBÐBÐBr%   c                 ó   — | j         d         S )Nr   )rm   r(   s    r#   rb   zDocstoreExplorer._summaryk   s   € àÔ Ô"Ð"r%   c                 ól   — | j         €t          d¦  «        ‚| j         j                             d¦  «        S )Nz(Cannot get paragraphs without a documentz

)rZ   rB   Úpage_contentÚsplitr(   s    r#   rm   zDocstoreExplorer._paragraphso   s2   € àŒ=Ð ÝÐGÑHÔHÐHØŒ}Ô)×/Ò/°Ñ7Ô7Ð7r%   N)r>   rL   rM   rN   r   r]   rR   r`   rp   rQ   rb   r   rm   r3   r%   r#   rV   rV   D   sÑ   € € € € € à?Ð?ð ð ð ð ð ð˜3ð  3ð ð ð ð ðC˜3ð C 3ð Cð Cð Cð Cð$ ð#˜#ð #ð #ð #ñ „Xð#ð ð8˜T #œYð 8ð 8ð 8ñ „Xð8ð 8ð 8r%   rV   c                   ót   ‡ — e Zd ZdZedee         defd„¦   «         Zedee         ddfˆ fd„¦   «         Z	ˆ xZ
S )ÚReActTextWorldAgentz$Agent for the ReAct TextWorld chain.r+   r    c                 ó   — t           S r-   r   r.   s     r#   r/   z!ReActTextWorldAgent.create_promptz   s
   € õ  Ðr%   Nc                 ó  •— t          | j        |¦  «         t          ¦   «                              |¦  «         t	          |¦  «        dk    rt          d|› �¦  «        ‚d„ |D ¦   «         }|dhk    rt          d|› �¦  «        ‚d S )Nre   z,Exactly one tool must be specified, but got c                 ó   — h | ]	}|j         ’Œ
S r3   r4   r6   s     r#   r9   z6ReActTextWorldAgent._validate_tools.<locals>.<setcomp>…   r:   r%   ÚPlayzTool name should be Play, got r=   rC   s      €r#   r@   z#ReActTextWorldAgent._validate_tools   s’   ø€ å# C¤L°%Ñ8Ô8Ð8Ý‰Œ×Ò Ñ&Ô&Ð&Ýˆu‰:Œ:˜Š?ˆ?ÝÐSÈEÐSÐSÑTÔTÐTØ2Ð2¨EÐ2Ñ2Ô2ˆ
Ø˜&˜Ò!Ð!ÝÐJ¸jÐJÐJÑKÔKÐKð "Ð!r%   )r>   rL   rM   rN   rP   r   r   r
   r/   r@   rS   rT   s   @r#   rv   rv   v   s    ø€ € € € € à.Ð.àð  (¨8Ô"4ð  Ð9Kð  ð  ð  ñ „[ð ð ðL H¨XÔ$6ð L¸4ð Lð Lð Lð Lð Lñ „[ðLð Lð Lð Lð Lr%   rv   c                   ó0   ‡ — e Zd ZdZdededefˆ fd„Zˆ xZS )Ú
ReActChainz3[Deprecated] Chain that implements the ReAct paper.ÚllmrW   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.)r5   ÚfuncÚdescriptionr;   zLookup a term in the docstore.)Úagentr+   Nr3   )rV   r   r`   rp   r   Úfrom_llm_and_toolsr?   r]   )r)   r}   rW   r   Údocstore_explorerr+   r�   rE   s          €r#   r]   zReActChain.__init__Ž   s—   ø€ å,¨XÑ6Ô6ÐåØØ&Ô-Ø@ðñ ô õ
 ØØ&Ô-Ø<ðñ ô ð
ˆõ #×5Ò5°c¸5ÑAÔAˆØ�‰ŒÔÐ<˜u¨EÐ<Ð<°VÐ<Ð<Ð<Ð<Ð<r%   )	r>   rL   rM   rN   r	   r   r   r]   rS   rT   s   @r#   r|   r|   Š   sY   ø€ € € € € à=Ð=ð=Ð-ð =¸ð =ÈSð =ð =ð =ð =ð =ð =ð =ð =ð =ð =r%   r|   N)(rN   Útypingr   r   r   r   Úlangchain_core._apir   Úlangchain_core.documentsr   Úlangchain_core.language_modelsr	   Úlangchain_core.promptsr
   Úlangchain_core.pydantic_v1r   Úlangchain_core.toolsr   Úlangchain.agents.agentr   r   r   Úlangchain.agents.agent_typesr   Ú$langchain.agents.react.output_parserr   Ú'langchain.agents.react.textworld_promptr   Ú"langchain.agents.react.wiki_promptr   Úlangchain.agents.toolsr   Úlangchain.agents.utilsr   Úlangchain.docstore.baser   r   rV   rv   r|   r3   r%   r#   ú<module>r“      sb  ðØ VÐ VØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0à *Ð *Ð *Ð *Ð *Ð *Ø -Ð -Ð -Ð -Ð -Ð -Ø <Ð <Ð <Ð <Ð <Ð <Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø )Ð )Ð )Ð )Ð )Ð )à JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø BÐ BÐ BÐ BÐ BÐ BØ DÐ DÐ DÐ DÐ DÐ DØ :Ð :Ð :Ð :Ð :Ð :Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø >Ð >Ð >Ð >Ð >Ð >Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ð €ˆG˜WÐ%Ñ%Ô%ð+ð +ð +ð +ð +˜ñ +ô +ñ &Ô%ð+ð\ €ˆG˜WÐ%Ñ%Ô%ð.8ð .8ð .8ð .8ð .8ñ .8ô .8ñ &Ô%ð.8ðb €ˆG˜WÐ%Ñ%Ô%ðLð Lð Lð Lð LÐ,ñ Lô Lñ &Ô%ðLð& €ˆG˜WÐ%Ñ%Ô%ð=ð =ð =ð =ð =�ñ =ô =ñ &Ô%ð=ð =ð =r%   