Ë
    ´Œj8  ã                  ó6  — 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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-  e	ddd¬«       G d„ de"«      «       Z.y)úDAn agent designed to hold a conversation in addition to using tools.é    )Úannotations)ÚSequence)ÚAnyÚOptional)Ú
deprecated)ÚAgentAction)ÚBaseCallbackManager)ÚBaseLanguageModel)Ú	AIMessageÚBaseMessageÚHumanMessage)ÚBaseOutputParser)ÚBasePromptTemplate)ÚChatPromptTemplateÚHumanMessagePromptTemplateÚMessagesPlaceholderÚSystemMessagePromptTemplate)ÚBaseTool)ÚField)ÚAgentÚAgentOutputParser©ÚConvoOutputParser)ÚPREFIXÚSUFFIXÚTEMPLATE_TOOL_RESPONSE)Úvalidate_tools_single_input)ÚLLMChainz0.1.0Úcreate_json_chat_agentz1.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_responsec                ó   — t        «       S ©Nr   )ÚclsÚkwargss     ús/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain/agents/conversational_chat/base.pyÚ_get_default_output_parserz2ConversationalChatAgent._get_default_output_parser,   s   € ä Ó"Ð"ó    c                ó   — t         ‚r*   )ÚNotImplementedError©Úselfs    r-   Ú_agent_typez#ConversationalChatAgent._agent_type0   s   € ä!Ð!r/   c                 ó   — y)z]Prefix to append the observation with.

        Returns:
            "Observation: "
        zObservation: © r2   s    r-   Úobservation_prefixz*ConversationalChatAgent.observation_prefix4   s   € ð r/   c                 ó   — y)zVPrefix to append the llm call with.

        Returns:
            "Thought: "
        zThought:r6   r2   s    r-   Ú
llm_prefixz"ConversationalChatAgent.llm_prefix=   s   € ð r/   c                óP   •— t         ‰| �  |«       t        | j                  |«       y r*   )ÚsuperÚ_validate_toolsr   Ú__name__)r+   ÚtoolsÚ	__class__s     €r-   r<   z'ConversationalChatAgent._validate_toolsF   s   ø€ ä‰Ñ Ô&Ü# C§L¡L°%Õ8r/   Nc           	     ó  — dj                  |D �cg c]  }d|j                  › d|j                  › �‘Œ  c}«      }dj                  |D �cg c]  }|j                  ‘Œ c}«      }|xs | j                  «       }	|j	                  |	j                  «       ¬«      }
|
j	                  ||¬«      }|€g d¢}t        j                  |«      t        d¬	«      t        j                  |«      t        d
¬	«      g}t        ||¬«      S c c}w c c}w )aÙ  Create a prompt for the agent.

        Args:
            tools: The tools to use.
            system_message: The system message to use.
                Defaults to the PREFIX.
            human_message: The human message to use.
                Defaults to the SUFFIX.
            input_variables: The input variables to use. Defaults to None.
            output_parser: The output parser to use. Defaults to None.

        Returns:
            A PromptTemplate.
        Ú
z> z: z, )Úformat_instructions)Ú
tool_namesr>   )ÚinputÚchat_historyÚagent_scratchpadrE   )Úvariable_namerF   )Úinput_variablesÚmessages)ÚjoinÚnameÚdescriptionr.   ÚformatÚget_format_instructionsr   Úfrom_templater   r   r   )r+   r>   Úsystem_messageÚhuman_messagerH   r&   ÚtoolÚtool_stringsrC   Ú_output_parserrB   Úfinal_promptrI   s                r-   Úcreate_promptz%ConversationalChatAgent.create_promptK   s
  € ð. —y‘yÙ>CÓD¹e°dˆr�$—)‘)�˜B˜t×/Ñ/Ð0Ò1¸eÑDó
ˆð —Y‘Y±eÓ<±e¨d §	£	°eÑ<Ó=ˆ
Ø&ÒJ¨#×*HÑ*HÓ*JˆØ+×2Ñ2Ø .× FÑ FÓ Hð 3ó 
Ðð +×1Ñ1Ø!Øð 2ó 
ˆð Ð"ÚKˆOä'×5Ñ5°nÓEÜ¨nÔ=Ü&×4Ñ4°\ÓBÜÐ.@ÔAð	
ˆô "°/ÈHÔUÐUùò' Eùâ<s   �#C=Á	Dc                óÖ   — g }|D ]a  \  }}|j                  t        |j                  ¬«      «       t        | j                  j                  |¬«      ¬«      }|j                  |«       Œc |S )zJConstruct the scratchpad that lets the agent continue its thought process.)Úcontent)Úobservation)Úappendr   Úlogr   r(   rM   )r3   Úintermediate_stepsÚthoughtsÚactionrY   rQ   s         r-   Ú_construct_scratchpadz-ConversationalChatAgent._construct_scratchpadx   sc   € ð
 ')ˆÛ#5ÑˆF�KØ�O‰OœI¨f¯j©jÔ9Ô:Ü(Ø×3Ñ3×:Ñ:À{Ð:ÓSôˆMð �O‰O˜MÕ*ð $6ð ˆr/   c                óè   — | j                  |«       |xs | j                  «       }	| j                  |||||	¬«      }
t        ||
|¬«      }|D �cg c]  }|j                  ‘Œ }} | d|||	dœ|¤ŽS c c}w )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. Default is None.
            output_parser: The output parser to use. Default is None.
            system_message: The system message to use. Default is PREFIX.
            human_message: The human message to use. Default is SUFFIX.
            input_variables: The input variables to use. Default is None.
            **kwargs: Any additional arguments.

        Returns:
            An agent.
        )rP   rQ   rH   r&   )ÚllmÚpromptÚcallback_manager)Ú	llm_chainÚallowed_toolsr&   r6   )r<   r.   rV   r   rK   )r+   ra   r>   rc   r&   rP   rQ   rH   r,   rT   rb   rd   rR   rC   s                 r-   Úfrom_llm_and_toolsz*ConversationalChatAgent.from_llm_and_tools†   s¢   € ð6 	×Ñ˜EÔ"Ø&ÒJ¨#×*HÑ*HÓ*JˆØ×"Ñ"ØØ)Ø'Ø+Ø(ð #ó 
ˆô ØØØ-ô
ˆ	ñ
 -2Ó2©E D�d—i“i¨Eˆ
Ð2Ùð 
ØØ$Ø(ñ
ð ñ	
ð 	
ùò 3s   ÁA/)r,   r   Úreturnr   )rg   r'   )r>   úSequence[BaseTool]rg   ÚNone)r>   rh   rP   r'   rQ   r'   rH   úOptional[list[str]]r&   zOptional[BaseOutputParser]rg   r   )r\   zlist[tuple[AgentAction, str]]rg   zlist[BaseMessage])ra   r   r>   rh   rc   zOptional[BaseCallbackManager]r&   zOptional[AgentOutputParser]rP   r'   rQ   r'   rH   rj   r,   r   rg   r   )r=   Ú
__module__Ú__qualname__Ú__doc__r   r   r&   Ú__annotations__r   r(   Úclassmethodr.   Úpropertyr4   r7   r9   r<   r   r   rV   r_   rf   Ú__classcell__)r?   s   @r-   r$   r$   #   sƒ  ø… áNá',Ð=NÔ'O€MÐ$ÓOØ&Ø"8Ð˜CÓ8Ø)àò#ó ð#ð ò"ó ð"ð òó ðð òó ðð ô9ó ð9ð ð %Ø#Ø/3Ø48ð*Và!ð*Vð ð*Vð ð	*Vð
 -ð*Vð 2ð*Vð 
ò*Vó ð*VðXà9ðð 
óð ð
 ;?Ø59Ø$Ø#Ø/3ð.
àð.
ð "ð.
ð 8ð	.
ð
 3ð.
ð ð.
ð ð.
ð -ð.
ð ð.
ð 
ò.
ó ô.
r/   r$   N)/rm   Ú
__future__r   Úcollections.abcr   Útypingr   r   Ú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   Úlangchain.agents.agentr   r   Ú2langchain.agents.conversational_chat.output_parserr   Ú+langchain.agents.conversational_chat.promptr   r   r   Úlangchain.agents.utilsr   Úlangchain.chainsr   r$   r6   r/   r-   Ú<module>r„      s|   ðÙ Jå "å $ß  å *Ý -Ý 8Ý <ß HÑ HÝ :Ý 5÷ó õ *Ý ç ;Ý P÷ñ õ
 ?Ý %ñ ˆGÐ!9À5ÔIôQ
˜eó Q
ó JñQ
r/   