§
    è˜ºh]  ã                  ó  — d 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 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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 )zDAn agent designed to hold a conversation in addition to using tools.é    )Úannotations)ÚAnyÚListÚOptionalÚSequence)Ú
deprecated)ÚBaseLanguageModel)ÚPromptTemplate)ÚField)ÚBaseTool)ÚAgentÚAgentOutputParser)Ú	AgentType©ÚConvoOutputParser)ÚFORMAT_INSTRUCTIONSÚPREFIXÚSUFFIX)Úvalidate_tools_single_input)ÚBaseCallbackManager)ÚLLMChainz0.1.0Úcreate_react_agentz0.2.0)ÚalternativeÚremovalc            	      ó  ‡ — e Zd ZU dZdZded<   	  ee¬¦  «        Zded<   	 e		 d$d%d„¦   «         Z
ed&d„¦   «         Zed&d„¦   «         Zed&d„¦   «         Ze	eeedddfd'd„¦   «         Ze	d(ˆ fd„¦   «         Ze	ddeeedddfd)d#„¦   «         Zˆ xZS )*ÚConversationalAgentz>An agent that holds a conversation in addition to using tools.ÚAIÚstrÚ	ai_prefix)Údefault_factoryr   Úoutput_parserÚkwargsr   Úreturnc                ó"   — t          |¬¦  «        S )N©r   r   )Úclsr   r"   s      úl/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain/agents/conversational/base.pyÚ_get_default_output_parserz.ConversationalAgent._get_default_output_parser   s   € õ !¨9Ð5Ñ5Ô5Ð5ó    c                ó   — t           j        S )z Return Identifier of agent type.)r   Ú CONVERSATIONAL_REACT_DESCRIPTION©Úselfs    r'   Ú_agent_typezConversationalAgent._agent_type$   s   € õ Ô9Ð9r)   c                ó   — dS )z&Prefix to append the observation with.zObservation: © r,   s    r'   Úobservation_prefixz&ConversationalAgent.observation_prefix)   s	   € ð ˆr)   c                ó   — dS )z#Prefix to append the llm call with.zThought:r0   r,   s    r'   Ú
llm_prefixzConversationalAgent.llm_prefix.   s	   € ð ˆzr)   ÚHumanNÚtoolsúSequence[BaseTool]ÚprefixÚsuffixÚformat_instructionsÚhuman_prefixÚinput_variablesúOptional[List[str]]r
   c                ó  — d                      d„ |D ¦   «         ¦  «        }d                      d„ |D ¦   «         ¦  «        }	|                     |	||¬¦  «        }d                      ||||g¦  «        }
|€g d¢}t          |
|¬	¦  «        S )
aT  Create prompt in the style of the zero-shot agent.

        Args:
            tools: List of tools the agent will have access to, used to format the
                prompt.
            prefix: String to put before the list of tools.
            suffix: String to put after the list of tools.
            ai_prefix: String to use before AI output.
            human_prefix: String to use before human output.
            input_variables: List of input variables the final prompt will expect.

        Returns:
            A PromptTemplate with the template assembled from the pieces here.
        ú
c                ó2   — g | ]}d |j         › d|j        › �‘ŒS )z> z: )ÚnameÚdescription©Ú.0Útools     r'   ú
<listcomp>z5ConversationalAgent.create_prompt.<locals>.<listcomp>M   s.   € ÐDÐDÐD°dÐ1�$”)Ð1Ð1˜tÔ/Ð1Ð1ÐDÐDÐDr)   z, c                ó   — g | ]	}|j         ‘Œ
S r0   ©r@   rB   s     r'   rE   z5ConversationalAgent.create_prompt.<locals>.<listcomp>O   s   € Ð<Ð<Ð<¨d ¤	Ð<Ð<Ð<r)   )Ú
tool_namesr   r:   z

N)ÚinputÚchat_historyÚagent_scratchpad)Útemplater;   )ÚjoinÚformatr
   )r&   r5   r7   r8   r9   r   r:   r;   Útool_stringsrH   rL   s              r'   Úcreate_promptz!ConversationalAgent.create_prompt3   s­   € ð2 —y’yØDÐD¸eÐDÑDÔDñ
ô 
ˆð —Y’YÐ<Ð<°eÐ<Ñ<Ô<Ñ=Ô=ˆ
Ø1×8Ò8Ø!¨YÀ\ð 9ñ 
ô 
Ðð —;’; ¨Ð6IÈ6ÐRÑSÔSˆØÐ"ØKÐKÐKˆOÝ xÀÐQÑQÔQÐQr)   ÚNonec                ót   •— t          ¦   «                              |¦  «         t          | j        |¦  «         d S )N)ÚsuperÚ_validate_toolsr   Ú__name__)r&   r5   Ú	__class__s     €r'   rT   z#ConversationalAgent._validate_toolsX   s3   ø€ å‰Œ×Ò Ñ&Ô&Ð&Ý# C¤L°%Ñ8Ô8Ð8Ð8Ð8r)   Úllmr	   Úcallback_managerúOptional[BaseCallbackManager]úOptional[AgentOutputParser]r   c           	     óê   — |                       |¦  «         |                      |||	||||
¬¦  «        }t          |||¬¦  «        }d„ |D ¦   «         }|p|                      |¬¦  «        } | d||||dœ|¤ŽS )z)Construct an agent from an LLM and tools.)r   r:   r7   r8   r9   r;   )rW   ÚpromptrX   c                ó   — g | ]	}|j         ‘Œ
S r0   rG   rB   s     r'   rE   z:ConversationalAgent.from_llm_and_tools.<locals>.<listcomp>|   s   € Ð2Ð2Ð2 D�d”iÐ2Ð2Ð2r)   r%   )Ú	llm_chainÚallowed_toolsr   r!   r0   )rT   rP   r   r(   )r&   rW   r5   rX   r!   r7   r8   r9   r   r:   r;   r"   r\   r^   rH   Ú_output_parsers                   r'   Úfrom_llm_and_toolsz&ConversationalAgent.from_llm_and_tools]   sÖ   € ð  	×Ò˜EÑ"Ô"Ð"Ø×"Ò"ØØØ%ØØØ 3Ø+ð #ñ 
ô 
ˆõ ØØØ-ð
ñ 
ô 
ˆ	ð
 3Ð2¨EÐ2Ñ2Ô2ˆ
Ø&ð 
¨#×*HÒ*HØð +Iñ +
ô +
ˆð ˆsð 
ØØ$ØØ(ð	
ð 
ð
 ð
ð 
ð 	
r)   )r   )r   r   r"   r   r#   r   )r#   r   )r5   r6   r7   r   r8   r   r9   r   r   r   r:   r   r;   r<   r#   r
   )r5   r6   r#   rQ   )rW   r	   r5   r6   rX   rY   r!   rZ   r7   r   r8   r   r9   r   r   r   r:   r   r;   r<   r"   r   r#   r   )rU   Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   r   r!   Úclassmethodr(   Úpropertyr.   r1   r3   r   r   r   rP   rT   ra   Ú__classcell__)rV   s   @r'   r   r      s‹  ø€ € € € € € àHÐHà€IÐÐÐÑØ)Ø', uÐ=NÐ'OÑ'OÔ'O€MÐOÐOÐOÑOØ&àà"ð6ð 6ð 6ð 6ñ „[ð6ð
 ð:ð :ð :ñ „Xð:ð ðð ð ñ „Xðð ðð ð ñ „Xðð ð ØØ#6ØØ#Ø/3ð"Rð "Rð "Rð "Rñ „[ð"RðH ð9ð 9ð 9ð 9ð 9ñ „[ð9ð ð
 ;?Ø59ØØØ#6ØØ#Ø/3ð(
ð (
ð (
ð (
ñ „[ð(
ð (
ð (
ð (
ð (
r)   r   N)$rd   Ú
__future__r   Útypingr   r   r   r   Úlangchain_core._apir   Úlangchain_core.language_modelsr	   Úlangchain_core.promptsr
   Úlangchain_core.pydantic_v1r   Úlangchain_core.toolsr   Úlangchain.agents.agentr   r   Úlangchain.agents.agent_typesr   Ú-langchain.agents.conversational.output_parserr   Ú&langchain.agents.conversational.promptr   r   r   Úlangchain.agents.utilsr   Úlangchain.callbacks.baser   Úlangchain.chainsr   r   r0   r)   r'   ú<module>rw      s‰  ðØ JÐ JØ "Ð "Ð "Ð "Ð "Ð "à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0à *Ð *Ð *Ð *Ð *Ð *Ø <Ð <Ð <Ð <Ð <Ð <Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø )Ð )Ð )Ð )Ð )Ð )à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø KÐ KÐ KÐ KÐ KÐ KØ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ >Ð >Ð >Ð >Ð >Ð >Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø %Ð %Ð %Ð %Ð %Ð %ð €ˆGÐ!5¸wÐGÑGÔGðp
ð p
ð p
ð p
ð p
˜%ñ p
ô p
ñ HÔGðp
ð p
ð p
r)   