
    Ng                     :   d 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 ddlmZ ddlmZ dd	lmZ dd
lmZmZ  eded          	 	 	 	 ddddee         de
dee         dee         dee         dee         deee                  dedefd            ZdS )zLoad agent.    )AnyOptionalSequence)
deprecated)BaseCallbackManager)BaseLanguageModel)BaseTool)AGENT_DEPRECATION_WARNING)AgentExecutor)	AgentType)AGENT_TO_CLASS
load_agentz0.1.0z1.0)messageremovalN)tagstoolsllmagentcallback_manager
agent_pathagent_kwargsr   kwargsreturnc                F   |rt          |          ng }||t          j        }||t          d          ||t          vr't          d| dt	          j                     d          |                    t          |t                    r|j        n|           t          |         }	|pi } |	j	        || fd|i|}
nP|?t          ||| |          }
	 |                    |
j                   n# t          $ r Y nw xY wt          d          t          j        d
|
| ||d	|S )a\  Load an agent executor given tools and LLM.

    Args:
        tools: List of tools this agent has access to.
        llm: Language model to use as the agent.
        agent: Agent type to use. If None and agent_path is also None, will default
            to AgentType.ZERO_SHOT_REACT_DESCRIPTION. Defaults to None.
        callback_manager: CallbackManager to use. Global callback manager is used if
            not provided. Defaults to None.
        agent_path: Path to serialized agent to use. If None and agent is also None,
            will default to AgentType.ZERO_SHOT_REACT_DESCRIPTION. Defaults to None.
        agent_kwargs: Additional keyword arguments to pass to the underlying agent.
            Defaults to None.
        tags: Tags to apply to the traced runs. Defaults to None.
        kwargs: Additional keyword arguments passed to the agent executor.

    Returns:
        An agent executor.

    Raises:
        ValueError: If both `agent` and `agent_path` are specified.
        ValueError: If `agent` is not a valid agent type.
        ValueError: If both `agent` and `agent_path` are None.
    NzLBoth `agent` and `agent_path` are specified, but at most only one should be.zGot unknown agent type: z. Valid types are: .r   )r   r   r   zISomehow both `agent` and `agent_path` are None, this should never happen.)r   r   r   r    )listr   ZERO_SHOT_REACT_DESCRIPTION
ValueErrorr   keysappend
isinstancevaluefrom_llm_and_toolsr   _agent_typeNotImplementedErrorr   from_agent_and_tools)r   r   r   r   r   r   r   r   tags_	agent_cls	agent_objs              W/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain/agents/initialize.pyinitialize_agentr,      s   P &DJJJBE}+5Z3.
 
 	
 &&=5 = =$2$7$9$9= = =   	Jui$@$@KU[[eLLL"5)	#)r0I0
 
)9
=I
 
		 
	Cu?O
 
 
		LL.////" 	 	 	D	 (
 
 	
 - )	 
   s   C. .
C;:C;)NNNN)__doc__typingr   r   r   langchain_core._apir   langchain_core.callbacksr   langchain_core.language_modelsr   langchain_core.toolsr	   langchain._api.deprecationr
   langchain.agents.agentr   langchain.agents.agent_typesr   langchain.agents.loadingr   r   strdictr,   r       r+   <module>r:      s     * * * * * * * * * * * * * * * * 8 8 8 8 8 8 < < < < < < ) ) ) ) ) ) @ @ @ @ @ @ 0 0 0 0 0 0 2 2 2 2 2 2 ? ? ? ? ? ? ? ? %   "&6: $#'K %)K K KHK	K IK 23	K
 K 4.K 8C=
!K K K K K 
K K Kr9   