§
    ™Štj·  ã                  óR  — d 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 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! 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.  eddd¬¦  «         G d„ de#¦  «        ¦   «         Z/dS )úDAn agent designed to hold a conversation in addition to using tools.é    )Úannotations)ÚSequence)ÚAny)Ú
deprecated)ÚAgentAction)ÚBaseCallbackManager)ÚBaseLanguageModel)Ú	AIMessageÚBaseMessageÚHumanMessage)ÚBaseOutputParser)ÚBasePromptTemplate)ÚChatPromptTemplateÚHumanMessagePromptTemplateÚMessagesPlaceholderÚSystemMessagePromptTemplate)ÚBaseTool)ÚField)Úoverride)ÚAgentÚAgentOutputParser©ÚConvoOutputParser)ÚPREFIXÚSUFFIXÚTEMPLATE_TOOL_RESPONSE)Úvalidate_tools_single_input)ÚLLMChainz0.1.0Úcreate_json_chat_agentz2.0.0)ÚalternativeÚremovalc                  ó(  ‡ — e Zd ZU dZ ee¬¦  «        Zded<   	 eZ	ded<   	 e
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     úo/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_classic/agents/conversational_chat/base.pyÚ_get_default_output_parserz2ConversationalChatAgent._get_default_output_parser-   s   € õ !Ñ"Ô"Ð"ó    c                ó   — t           ‚r,   )ÚNotImplementedError©Úselfs    r.   Ú_agent_typez#ConversationalChatAgent._agent_type2   s   € å!Ð!r0   c                ó   — dS )z]Prefix to append the observation with.

        Returns:
            "Observation: "
        zObservation: © r3   s    r.   Úobservation_prefixz*ConversationalChatAgent.observation_prefix6   s	   € ð ˆr0   c                ó   — dS )zVPrefix to append the llm call with.

        Returns:
            "Thought: "
        zThought:r7   r3   s    r.   Ú
llm_prefixz"ConversationalChatAgent.llm_prefix?   s	   € ð ˆzr0   ÚtoolsúSequence[BaseTool]ÚNonec                ót   •— t          ¦   «                              |¦  «         t          | j        |¦  «         d S r,   )ÚsuperÚ_validate_toolsr   Ú__name__)r-   r;   Ú	__class__s     €r.   r@   z'ConversationalChatAgent._validate_toolsH   s3   ø€ å‰Œ×Ò Ñ&Ô&Ð&Ý# C¤L°%Ñ8Ô8Ð8Ð8Ð8r0   NÚsystem_messageÚhuman_messageÚinput_variablesúlist[str] | NoneúBaseOutputParser | Noner   c                óâ  — d                      d„ |D ¦   «         ¦  «        }d                      d„ |D ¦   «         ¦  «        }|p|                      ¦   «         }|                     |                     ¦   «         ¬¦  «        }	|	                     ||¬¦  «        }
|€g d¢}t	          j        |¦  «        t          d	¬
¦  «        t          j        |
¦  «        t          d¬
¦  «        g}t          ||¬¦  «        S )ai  Create a prompt for the agent.

        Args:
            tools: The tools to use.
            system_message: The `SystemMessage` to use.
            human_message: The `HumanMessage` to use.
            input_variables: The input variables to use.
            output_parser: The output parser to use.

        Returns:
            A `PromptTemplate`.
        ú
c                ó2   — g | ]}d |j         › d|j        › �‘ŒS )z> z: )ÚnameÚdescription©Ú.0Útools     r.   ú
<listcomp>z9ConversationalChatAgent.create_prompt.<locals>.<listcomp>c   s.   € ÐDÐDÐD°dÐ1�$”)Ð1Ð1˜tÔ/Ð1Ð1ÐDÐDÐDr0   z, c                ó   — g | ]	}|j         ‘Œ
S r7   ©rK   rM   s     r.   rP   z9ConversationalChatAgent.create_prompt.<locals>.<listcomp>e   s   € Ð<Ð<Ð<¨d ¤	Ð<Ð<Ð<r0   )Úformat_instructions)Ú
tool_namesr;   N)ÚinputÚchat_historyÚagent_scratchpadrV   )Úvariable_namerW   )rE   Úmessages)	Újoinr/   ÚformatÚget_format_instructionsr   Úfrom_templater   r   r   )r-   r;   rC   rD   rE   r&   Útool_stringsrT   Ú_output_parserrS   Úfinal_promptrY   s               r.   Úcreate_promptz%ConversationalChatAgent.create_promptM   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ÐUr0   Ú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[   )r4   rb   ÚthoughtsÚactionrg   rD   s         r.   Ú_construct_scratchpadz-ConversationalChatAgent._construct_scratchpadx   sƒ   € ð
 ')ˆØ#5ð 	+ð 	+ÑˆF�KØ�OŠO�I¨f¬jÐ9Ñ9Ô9Ñ:Ô:Ð:Ý(ØÔ3×:Ò:À{Ð:ÑSÔSðñ ô ˆMð �OŠO˜MÑ*Ô*Ð*Ð*Øˆr0   Úllmr
   Úcallback_managerúBaseCallbackManager | NoneúAgentOutputParser | Noner   c                óà   — |                       |¦  «         |p|                      ¦   «         }	|                      |||||	¬¦  «        }
t          ||
|¬¦  «        }d„ |D ¦   «         } | d|||	dœ|¤ŽS )a  Construct an agent from an LLM and tools.

        Args:
            llm: The language model to use.
            tools: A list of tools to use.
            callback_manager: The callback manager to use.
            output_parser: The output parser to use.
            system_message: The `SystemMessage` to use.
            human_message: The `HumanMessage` to use.
            input_variables: The input variables to use.
            **kwargs: Any additional arguments.

        Returns:
            An agent.
        )rC   rD   rE   r&   )rm   Úpromptrn   c                ó   — g | ]	}|j         ‘Œ
S r7   rR   rM   s     r.   rP   z>ConversationalChatAgent.from_llm_and_tools.<locals>.<listcomp>¯   s   € Ð2Ð2Ð2 D�d”iÐ2Ð2Ð2r0   )Ú	llm_chainÚallowed_toolsr&   r7   )r@   r/   ra   r   )r-   rm   r;   rn   r&   rC   rD   rE   r)   r_   rr   rt   rT   s                r.   Úfrom_llm_and_toolsz*ConversationalChatAgent.from_llm_and_tools†   s¼   € ð6 	×Ò˜EÑ"Ô"Ð"Ø&ÐJ¨#×*HÒ*HÑ*JÔ*JˆØ×"Ò"ØØ)Ø'Ø+Ø(ð #ñ 
ô 
ˆõ ØØØ-ð
ñ 
ô 
ˆ	ð
 3Ð2¨EÐ2Ñ2Ô2ˆ
Øˆsð 
ØØ$Ø(ð
ð 
ð ð	
ð 
ð 	
r0   )r)   r   r*   r   )r*   r'   )r;   r<   r*   r=   )r;   r<   rC   r'   rD   r'   rE   rF   r&   rG   r*   r   )rb   rc   r*   rd   )rm   r
   r;   r<   rn   ro   r&   rp   rC   r'   rD   r'   rE   rF   r)   r   r*   r   )rA   Ú
__module__Ú__qualname__Ú__doc__r   r   r&   Ú__annotations__r   r(   Úclassmethodr   r/   Úpropertyr5   r8   r:   r@   r   r   ra   rl   rv   Ú__classcell__)rB   s   @r.   r$   r$   $   s“  ø€ € € € € € àNÐNà', uÐ=NÐ'OÑ'OÔ'O€MÐOÐOÐOÑOØ&Ø"8ÐÐ8Ð8Ð8Ñ8Ø)àØð#ð #ð #ñ „Xñ „[ð#ð ð"ð "ð "ñ „Xð"ð ðð ð ñ „Xðð ðð ð ñ „Xðð ð9ð 9ð 9ð 9ð 9ñ „[ð9ð ð %Ø#Ø,0Ø15ð(Vð (Vð (Vð (Vñ „[ð(VðTð ð ð ð ð
 8<Ø26Ø$Ø#Ø,0ð.
ð .
ð .
ð .
ñ „[ð.
ð .
ð .
ð .
ð .
r0   r$   N)0ry   Ú
__future__r   Úcollections.abcr   Útypingr   Úlangchain_core._apir   Úlangchain_core.agentsr   Úlangchain_core.callbacksr	   Ú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.toolsr   Úpydanticr   Útyping_extensionsr   Úlangchain_classic.agents.agentr   r   Ú:langchain_classic.agents.conversational_chat.output_parserr   Ú3langchain_classic.agents.conversational_chat.promptr   r   r   Úlangchain_classic.agents.utilsr   Úlangchain_classic.chainsr   r$   r7   r0   r.   ú<module>r‘      s   ðØ JÐ Jà "Ð "Ð "Ð "Ð "Ð "à $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ø -Ð -Ð -Ð -Ð -Ð -Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø <Ð <Ð <Ð <Ð <Ð <Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ :Ð :Ð :Ð :Ð :Ð :Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &à CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ XÐ XÐ XÐ XÐ XÐ Xðð ð ð ð ð ð ð ð ð ð
 GÐ FÐ FÐ FÐ FÐ FØ -Ð -Ð -Ð -Ð -Ð -ð €ˆGÐ!9À7ÐKÑKÔKðP
ð P
ð P
ð P
ð P
˜eñ P
ô P
ñ LÔKðP
ð P
ð P
r0   