o
    Zh
                     @  s   d Z ddlmZ ddlmZ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 er8ddlmZ d	eed	d	d
d	fd"d d!Zd	S )#zJson agent.    )annotations)TYPE_CHECKINGAnyDictListOptional)BaseCallbackManager)BaseLanguageModel)JSON_PREFIXJSON_SUFFIX)JsonToolkitAgentExecutorNFllmr	   toolkitr   callback_managerOptional[BaseCallbackManager]prefixstrsuffixformat_instructionsOptional[str]input_variablesOptional[List[str]]verboseboolagent_executor_kwargsOptional[Dict[str, Any]]kwargsr   returnr   c	                 K  s   ddl m}
 ddlm} ddlm} | }|durd|ini }|j|f|||d|}|| ||d}d	d
 |D }|d||d|	}|
jd||||d|pQi S )a  Construct a json agent from an LLM and tools.

    Args:
        llm: The language model to use.
        toolkit: The toolkit to use.
        callback_manager: The callback manager to use. Default is None.
        prefix: The prefix to use. Default is JSON_PREFIX.
        suffix: The suffix to use. Default is JSON_SUFFIX.
        format_instructions: The format instructions to use. Default is None.
        input_variables: The input variables to use. Default is None.
        verbose: Whether to print verbose output. Default is False.
        agent_executor_kwargs: Optional additional arguments for the agent executor.
        kwargs: Additional arguments for the agent.

    Returns:
        The agent executor.
    r   r   )ZeroShotAgent)LLMChainNr   )r   r   r   )r   promptr   c                 S  s   g | ]}|j qS  )name).0Ztoolr#   r#   c/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/agent_toolkits/json/base.py
<listcomp>D   s    z%create_json_agent.<locals>.<listcomp>)	llm_chainZallowed_tools)agenttoolsr   r   r#   )	langchain.agents.agentr   Zlangchain.agents.mrkl.baser    Zlangchain.chains.llmr!   Z	get_toolsZcreate_promptZfrom_agent_and_tools)r   r   r   r   r   r   r   r   r   r   r   r    r!   r*   Zprompt_paramsr"   r(   Z
tool_namesr)   r#   r#   r&   create_json_agent   s@   r,   )r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )__doc__
__future__r   typingr   r   r   r   r   Zlangchain_core.callbacksr   Zlangchain_core.language_modelsr	   Z.langchain_community.agent_toolkits.json.promptr
   r   Z/langchain_community.agent_toolkits.json.toolkitr   r+   r   r,   r#   r#   r#   r&   <module>   s"    