§
    è˜ºhL  ã                  óJ  — d Z ddlmZ ddlmZ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mZmZ ddlmZ dd	lm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!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.  e
ddd¬¦  «         G d„ de!¦  «        ¦   «         Z/dS )úDAn agent designed to hold a conversation in addition to using tools.é    )Úannotations)ÚAnyÚListÚOptionalÚSequenceÚTuple)Ú
deprecated)ÚAgentAction)ÚBaseLanguageModel)Ú	AIMessageÚBaseMessageÚHumanMessage)ÚBaseOutputParser)ÚBasePromptTemplate)ÚChatPromptTemplateÚHumanMessagePromptTemplateÚMessagesPlaceholderÚSystemMessagePromptTemplate)ÚField)ÚBaseTool)ÚAgentÚAgentOutputParser©ÚConvoOutputParser)ÚPREFIXÚSUFFIXÚTEMPLATE_TOOL_RESPONSE)Úvalidate_tools_single_input)ÚBaseCallbackManager)ÚLLMChainz0.1.0Úcreate_json_chat_agentz0.2.0)ÚalternativeÚremovalc                  ó  ‡ — e Zd ZU dZ ee¬¦  «        Zded<   eZ	ded<   e
d%d
„¦   «         Zed&d„¦   «         Zed&d„¦   «         Zed&d„¦   «         Ze
d'ˆ fd„¦   «         Ze
eeddfd(d„¦   «         Zd)d„Ze
ddeedfd*d$„¦   «         Zˆ xZS )+ÚConversationalChatAgentr   )Údefault_factoryr   Úoutput_parserÚstrÚtemplate_tool_responseÚkwargsr   Úreturnc                ó   — t          ¦   «         S ©Nr   )Úclsr+   s     úq/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain/agents/conversational_chat/base.pyÚ_get_default_output_parserz2ConversationalChatAgent._get_default_output_parser(   s   € å Ñ"Ô"Ð"ó    c                ó   — t           ‚r.   )ÚNotImplementedError©Úselfs    r0   Ú_agent_typez#ConversationalChatAgent._agent_type,   s   € å!Ð!r2   c                ó   — dS )z&Prefix to append the observation with.zObservation: © r5   s    r0   Úobservation_prefixz*ConversationalChatAgent.observation_prefix0   s	   € ð ˆr2   c                ó   — dS )z#Prefix to append the llm call with.zThought:r9   r5   s    r0   Ú
llm_prefixz"ConversationalChatAgent.llm_prefix5   s	   € ð ˆzr2   ÚtoolsúSequence[BaseTool]ÚNonec                ót   •— t          ¦   «                              |¦  «         t          | j        |¦  «         d S r.   )ÚsuperÚ_validate_toolsr   Ú__name__)r/   r=   Ú	__class__s     €r0   rB   z'ConversationalChatAgent._validate_tools:   s3   ø€ å‰Œ×Ò Ñ&Ô&Ð&Ý# C¤L°%Ñ8Ô8Ð8Ð8Ð8r2   NÚsystem_messageÚhuman_messageÚinput_variablesúOptional[List[str]]úOptional[BaseOutputParser]r   c                óâ  — d                      d„ |D ¦   «         ¦  «        }d                      d„ |D ¦   «         ¦  «        }|p|                      ¦   «         }|                     |                     ¦   «         ¬¦  «        }	|	                     ||¬¦  «        }
|€g d¢}t	          j        |¦  «        t          d¬	¦  «        t          j        |
¦  «        t          d
¬	¦  «        g}t          ||¬¦  «        S )Nú
c                ó2   — g | ]}d |j         › d|j        › �‘ŒS )z> z: )ÚnameÚdescription©Ú.0Útools     r0   ú
<listcomp>z9ConversationalChatAgent.create_prompt.<locals>.<listcomp>I   s.   € ÐDÐDÐD°dÐ1�$”)Ð1Ð1˜tÔ/Ð1Ð1ÐDÐDÐDr2   z, c                ó   — g | ]	}|j         ‘Œ
S r9   ©rM   rO   s     r0   rR   z9ConversationalChatAgent.create_prompt.<locals>.<listcomp>K   s   € Ð<Ð<Ð<¨d ¤	Ð<Ð<Ð<r2   )Úformat_instructions)Ú
tool_namesr=   )ÚinputÚchat_historyÚagent_scratchpadrX   )Úvariable_namerY   )rG   Úmessages)	Újoinr1   ÚformatÚget_format_instructionsr   Úfrom_templater   r   r   )r/   r=   rE   rF   rG   r(   Útool_stringsrV   Ú_output_parserrU   Úfinal_promptr[   s               r0   Úcreate_promptz%ConversationalChatAgent.create_prompt?   s  € ð —y’yØDÐD¸eÐDÑDÔDñ
ô 
ˆð —Y’YÐ<Ð<°eÐ<Ñ<Ô<Ñ=Ô=ˆ
Ø&ÐJ¨#×*HÒ*HÑ*JÔ*JˆØ+×2Ò2Ø .× FÒ FÑ HÔ Hð 3ñ 
ô 
Ðð +×1Ò1Ø!¨ð 2ñ 
ô 
ˆð Ð"ØKÐKÐKˆOå'Ô5°nÑEÔEÝ¨nÐ=Ñ=Ô=Ý&Ô4°\ÑBÔBÝÐ.@ÐAÑAÔAð	
ˆõ "°/ÈHÐUÑUÔUÐUr2   Úintermediate_stepsúList[Tuple[AgentAction, str]]úList[BaseMessage]c                óæ   — g }|D ]k\  }}|                      t          |j        ¬¦  «        ¦  «         t          | j                             |¬¦  «        ¬¦  «        }|                      |¦  «         Œl|S )zJConstruct the scratchpad that lets the agent continue its thought process.)Úcontent)Úobservation)Úappendr   Úlogr   r*   r]   )r6   rd   ÚthoughtsÚactionri   rF   s         r0   Ú_construct_scratchpadz-ConversationalChatAgent._construct_scratchpad]   sƒ   € ð ')ˆØ#5ð 	+ð 	+ÑˆF�KØ�OŠO�I¨f¬jÐ9Ñ9Ô9Ñ:Ô:Ð:Ý(ØÔ3×:Ò:À{Ð:ÑSÔSðñ ô ˆMð �OŠO˜MÑ*Ô*Ð*Ð*Øˆr2   Úllmr   Úcallback_managerúOptional[BaseCallbackManager]úOptional[AgentOutputParser]r   c                óà   — |                       |¦  «         |p|                      ¦   «         }	|                      |||||	¬¦  «        }
t          ||
|¬¦  «        }d„ |D ¦   «         } | d|||	dœ|¤ŽS )z)Construct an agent from an LLM and tools.)rE   rF   rG   r(   )ro   Úpromptrp   c                ó   — g | ]	}|j         ‘Œ
S r9   rT   rO   s     r0   rR   z>ConversationalChatAgent.from_llm_and_tools.<locals>.<listcomp>…   s   € Ð2Ð2Ð2 D�d”iÐ2Ð2Ð2r2   )Ú	llm_chainÚallowed_toolsr(   r9   )rB   r1   rc   r!   )r/   ro   r=   rp   r(   rE   rF   rG   r+   ra   rt   rv   rV   s                r0   Úfrom_llm_and_toolsz*ConversationalChatAgent.from_llm_and_toolsj   s¼   € ð 	×Ò˜EÑ"Ô"Ð"Ø&ÐJ¨#×*HÒ*HÑ*JÔ*JˆØ×"Ò"ØØ)Ø'Ø+Ø(ð #ñ 
ô 
ˆõ ØØØ-ð
ñ 
ô 
ˆ	ð
 3Ð2¨EÐ2Ñ2Ô2ˆ
Øˆsð 
ØØ$Ø(ð
ð 
ð ð	
ð 
ð 	
r2   )r+   r   r,   r   )r,   r)   )r=   r>   r,   r?   )r=   r>   rE   r)   rF   r)   rG   rH   r(   rI   r,   r   )rd   re   r,   rf   )ro   r   r=   r>   rp   rq   r(   rr   rE   r)   rF   r)   rG   rH   r+   r   r,   r   )rC   Ú
__module__Ú__qualname__Ú__doc__r   r   r(   Ú__annotations__r   r*   Úclassmethodr1   Úpropertyr7   r:   r<   rB   r   r   rc   rn   rx   Ú__classcell__)rD   s   @r0   r&   r&   !   s‚  ø€ € € € € € àNÐNà', uÐ=NÐ'OÑ'OÔ'O€MÐOÐOÐOÑOØ"8ÐÐ8Ð8Ð8Ñ8àð#ð #ð #ñ „[ð#ð ð"ð "ð "ñ „Xð"ð ðð ð ñ „Xðð ðð ð ñ „Xðð ð9ð 9ð 9ð 9ð 9ñ „[ð9ð ð %Ø#Ø/3Ø48ðVð Vð Vð Vñ „[ðVð:ð ð ð ð ð
 ;?Ø59Ø$Ø#Ø/3ð 
ð  
ð  
ð  
ñ „[ð 
ð  
ð  
ð  
ð  
r2   r&   N)0r{   Ú
__future__r   Útypingr   r   r   r   r	   Úlangchain_core._apir
   Úlangchain_core.agentsr   Úlangchain_core.language_modelsr   Úlangchain_core.messagesr   r   r   Úlangchain_core.output_parsersr   Úlangchain_core.promptsr   Úlangchain_core.prompts.chatr   r   r   r   Úlangchain_core.pydantic_v1r   Úlangchain_core.toolsr   Úlangchain.agents.agentr   r   Ú2langchain.agents.conversational_chat.output_parserr   Ú+langchain.agents.conversational_chat.promptr   r   r   Úlangchain.agents.utilsr   Úlangchain.callbacks.baser    Úlangchain.chainsr!   r&   r9   r2   r0   ú<module>r‘      s  ðØ JÐ JØ "Ð "Ð "Ð "Ð "Ð "à 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7à *Ð *Ð *Ð *Ð *Ð *Ø -Ð -Ð -Ð -Ð -Ð -Ø <Ð <Ð <Ð <Ð <Ð <Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ :Ð :Ð :Ð :Ð :Ð :Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ø )Ð )Ð )Ð )Ð )Ð )à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø PÐ PÐ PÐ PÐ PÐ Pðð ð ð ð ð ð ð ð ð ð
 ?Ð >Ð >Ð >Ð >Ð >Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø %Ð %Ð %Ð %Ð %Ð %ð €ˆGÐ!9À7ÐKÑKÔKði
ð i
ð i
ð i
ð i
˜eñ i
ô i
ñ LÔKði
ð i
ð i
r2   