
    hz                        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 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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&  eded       G d de             Z'y)    )Sequence)AnyOptional)
deprecated)AgentAction)BaseCallbackManager)BaseLanguageModel)BasePromptTemplate)ChatPromptTemplateHumanMessagePromptTemplateSystemMessagePromptTemplate)BaseTool)Field)AGENT_DEPRECATION_WARNING)AgentAgentOutputParserChatOutputParser)FORMAT_INSTRUCTIONSHUMAN_MESSAGESYSTEM_MESSAGE_PREFIXSYSTEM_MESSAGE_SUFFIX)validate_tools_single_input)LLMChainz0.1.0z1.0)messageremovalc                       e Zd ZU dZ ee      Zeed<   	 e	de
fd       Ze	de
fd       Zdeeee
f      de
f fdZed	edefd
       Zedee   ddf fd       Ze	dee
   fd       Zeeeeedfdee   de
de
de
de
deee
      defd       Zeddeeeedfdedee   dee    dee   de
de
de
de
deee
      d	ede!fd       Z"e	de
fd       Z# xZ$S )	ChatAgentzChat Agent.)default_factoryoutput_parserreturnc                      y)z&Prefix to append the observation with.zObservation:  selfs    X/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain/agents/chat/base.pyobservation_prefixzChatAgent.observation_prefix)   s         c                      y)z#Prefix to append the llm call with.zThought:r#   r$   s    r&   
llm_prefixzChatAgent.llm_prefix.   s     r(   intermediate_stepsc                 n    t         |   |      }t        |t              sd}t	        |      |rd| S |S )Nz*agent_scratchpad should be of type string.zhThis was your previous work (but I haven't seen any of it! I only see what you return as final answer):
)super_construct_scratchpad
isinstancestr
ValueError)r%   r+   agent_scratchpadmsg	__class__s       r&   r.   zChatAgent._construct_scratchpad3   sQ     !789KL*C0>CS/!11A0BD
  r(   kwargsc                     t               S Nr   )clsr5   s     r&   _get_default_output_parserz$ChatAgent._get_default_output_parserC   s    !!r(   toolsNc                 R    t         |   |       t        | j                  |       y )N)
class_namer:   )r-   _validate_toolsr   __name__)r8   r:   r4   s     r&   r=   zChatAgent._validate_toolsG   s    &#s||5Ir(   c                     dgS )NzObservation:r#   r$   s    r&   _stopzChatAgent._stopL   s    r(   system_message_prefixsystem_message_suffixhuman_messageformat_instructionsinput_variablesc                    dj                  |D cg c]  }|j                   d|j                    c}      }dj                  |D cg c]  }|j                   c}      }	|j                  |	      }| d| d| d| }
t	        j
                  |
      t        j
                  |      g}|ddg}t        ||      S c c}w c c}w )	ag  Create a prompt from a list of tools.

        Args:
            tools: A list of tools.
            system_message_prefix: The system message prefix.
                Default is SYSTEM_MESSAGE_PREFIX.
            system_message_suffix: The system message suffix.
                Default is SYSTEM_MESSAGE_SUFFIX.
            human_message: The human message. Default is HUMAN_MESSAGE.
            format_instructions: The format instructions.
                Default is FORMAT_INSTRUCTIONS.
            input_variables: The input variables. Default is None.

        Returns:
            A prompt template.
        
z: z, )
tool_namesz

inputr2   )rE   messages)joinnamedescriptionformatr   from_templater   r   )r8   r:   rA   rB   rC   rD   rE   tooltool_stringsrH   templaterJ   s               r&   create_promptzChatAgent.create_promptP   s    6 yyQV!WTYYKr$2B2B1C"D!WXYYe<d		<=
188J8O+,DdCVBWW[\q[rs'55h?&44]C
 "&(:;O!/HUU "X<s   "B>Cllmcallback_managerc
                     | j                  |       | j                  ||||||	      }t        |||      }|D cg c]  }|j                   }}|xs | j	                         } | d|||d|
S c c}w )a=  Construct an agent from an LLM and tools.

        Args:
            llm: The language model.
            tools: A list of tools.
            callback_manager: The callback manager. Default is None.
            output_parser: The output parser. Default is None.
            system_message_prefix: The system message prefix.
                Default is SYSTEM_MESSAGE_PREFIX.
            system_message_suffix: The system message suffix.
                Default is SYSTEM_MESSAGE_SUFFIX.
            human_message: The human message. Default is HUMAN_MESSAGE.
            format_instructions: The format instructions.
                Default is FORMAT_INSTRUCTIONS.
            input_variables: The input variables. Default is None.
            kwargs: Additional keyword arguments.

        Returns:
            An agent.
        )rA   rB   rC   rD   rE   )rT   promptrU   )	llm_chainallowed_toolsr    r#   )r=   rS   r   rL   r9   )r8   rT   r:   rU   r    rA   rB   rC   rD   rE   r5   rW   rX   rP   rH   _output_parsers                   r&   from_llm_and_toolszChatAgent.from_llm_and_toolsw   s    D 	E""""7"7' 3+ # 
 -
	
 -22Ddii2
2&J#*H*H*J 
$(
 	
 	
 3s   A0c                     t         r7   )r1   r$   s    r&   _agent_typezChatAgent._agent_type   s    r(   )%r>   
__module____qualname____doc__r   r   r    r   __annotations__propertyr0   r'   r*   listtupler   r.   classmethodr   r9   r   r   r=   r@   r   r   r   r   r   r
   rS   r	   r   r   r[   r]   __classcell__)r4   s   @r&   r   r      s1    ',=M'NM$N&C   C    {C'7!89  
   "# ":K " " JHX$6 J4 J J  tCy      &;%:*#6/3$V!$V  #$V  #	$V
 $V !$V "$s),$V 
$V $VL 
 ;?59%:%:*#6/36
6
 !6
 ##67	6

   126
  #6
  #6
 6
 !6
 "$s),6
 6
 
6
 6
p S  r(   r   N)(collections.abcr   typingr   r   langchain_core._apir   langchain_core.agentsr   langchain_core.callbacksr   langchain_core.language_modelsr	   langchain_core.promptsr
   langchain_core.prompts.chatr   r   r   langchain_core.toolsr   pydanticr   langchain._api.deprecationr   langchain.agents.agentr   r   #langchain.agents.chat.output_parserr   langchain.agents.chat.promptr   r   r   r   langchain.agents.utilsr   langchain.chains.llmr   r   r#   r(   r&   <module>rw      ss    $   * - 8 < 5 
 *  @ ; @  ? ) %
O O
Or(   