Ë
    µŒjþ$  ã                  óh  — d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZmZ ddlmZmZ ddlmZmZ ddlmZmZmZ ddlmZmZmZ ddlmZ dd	lmZmZ er$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ddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z,y)z
SQL agent.é    )Úannotations)	ÚTYPE_CHECKINGÚAnyÚDictÚListÚLiteralÚOptionalÚSequenceÚUnionÚcast)Ú	AIMessageÚSystemMessage)ÚBasePromptTemplateÚPromptTemplate)ÚChatPromptTemplateÚHumanMessagePromptTemplateÚMessagesPlaceholder)ÚSQL_FUNCTIONS_SUFFIXÚ
SQL_PREFIXÚ
SQL_SUFFIX)ÚSQLDatabaseToolkit)ÚInfoSQLDatabaseToolÚListSQLDatabaseTool)ÚAgentExecutor©Ú	AgentType)ÚBaseCallbackManager)ÚBaseLanguageModel)ÚBaseTool)ÚSQLDatabaseN)ÚdbÚpromptc               ó°  ‡— ddl m}m}m}m} ddlm}m}m} ddl	m
} |€|€t        d«      ‚|r|rt        d«      ‚|xs t        | |¬«      }|xs |j                  }|j                  «       t        |«      z   }|€t         }‰€|j#                  |j$                  |¬«      }nýd	‰j&                  v r‰j)                  t+        |«      ¬
«      Šd‰j&                  v r‰j)                  |j$                  ¬«      Št-        ˆfd„dD «       «      r–|j/                  «       }d‰j&                  v r5‰j)                  |d   ¬«      Š|D �cg c]  }t1        |t2        «      rŒ|‘Œ }}d‰j&                  v r5‰j)                  |d   ¬«      Š|D �cg c]  }t1        |t4        «      rŒ|‘Œ }}||j                  k(  rb‰€Hddlm} |xs |j:                  }dj=                  |d||xs t>        g«      }tA        jB                  |«      Š |d# || |‰«      dgdgdœ|¤Ž}�n*||jD                  k(  r{‰€btG        tI        t*        |«      ¬«      tK        jB                  d«      tM        |xs tN        ¬«      tQ        d¬«      g} tS        jT                  | «      Š |d# || |‰«      dgdgdœ|¤Ž}n |dv r�‰€btG        tI        t*        |«      ¬«      tK        jB                  d«      tM        |xs tN        ¬«      tQ        d¬«      g} tS        jT                  | «      Š|dk(  r || |‰«      }!n
 || |‰«      }! |d#|!dgdgdœ|¤Ž}nt        d|› d �«      ‚ |d#d!|||||	|
|d"œ|xs i ¤ŽS c c}w c c}w )$a8
  Construct a SQL agent from an LLM and toolkit or database.

    Args:
        llm: Language model to use for the agent. If agent_type is "tool-calling" then
            llm is expected to support tool calling.
        toolkit: SQLDatabaseToolkit for the agent to use. Must provide exactly one of
            'toolkit' or 'db'. Specify 'toolkit' if you want to use a different model
            for the agent and the toolkit.
        agent_type: One of "tool-calling", "openai-tools", "openai-functions", or
            "zero-shot-react-description". Defaults to "zero-shot-react-description".
            "tool-calling" is recommended over the legacy "openai-tools" and
            "openai-functions" types.
        callback_manager: DEPRECATED. Pass "callbacks" key into 'agent_executor_kwargs'
            instead to pass constructor callbacks to AgentExecutor.
        prefix: Prompt prefix string. Must contain variables "top_k" and "dialect".
        suffix: Prompt suffix string. Default depends on agent type.
        format_instructions: Formatting instructions to pass to
            ZeroShotAgent.create_prompt() when 'agent_type' is
            "zero-shot-react-description". Otherwise ignored.
        input_variables: DEPRECATED.
        top_k: Number of rows to query for by default.
        max_iterations: Passed to AgentExecutor init.
        max_execution_time: Passed to AgentExecutor init.
        early_stopping_method: Passed to AgentExecutor init.
        verbose: AgentExecutor verbosity.
        agent_executor_kwargs: Arbitrary additional AgentExecutor args.
        extra_tools: Additional tools to give to agent on top of the ones that come with
            SQLDatabaseToolkit.
        db: SQLDatabase from which to create a SQLDatabaseToolkit. Toolkit is created
            using 'db' and 'llm'. Must provide exactly one of 'db' or 'toolkit'.
        prompt: Complete agent prompt. prompt and {prefix, suffix, format_instructions,
            input_variables} are mutually exclusive.
        **kwargs: Arbitrary additional Agent args.

    Returns:
        An AgentExecutor with the specified agent_type agent.

    Example:

        .. code-block:: python

            from langchain_openai import ChatOpenAI
            from langchain_community.agent_toolkits import create_sql_agent
            from langchain_community.utilities import SQLDatabase

            db = SQLDatabase.from_uri("sqlite:///Chinook.db")
            llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
            agent_executor = create_sql_agent(llm, db=db, agent_type="tool-calling", verbose=True)

    r   )Úcreate_openai_functions_agentÚcreate_openai_tools_agentÚcreate_react_agentÚcreate_tool_calling_agent)r   ÚRunnableAgentÚRunnableMultiActionAgentr   z@Must provide exactly one of 'toolkit' or 'db'. Received neither.z=Must provide exactly one of 'toolkit' or 'db'. Received both.)Úllmr!   )ÚdialectÚtop_kr,   )r,   r+   )r+   c              3  ó:   •K  — | ]  }|‰j                   v –— Œ y ­w)N)Úinput_variables)Ú.0Úkeyr"   s     €úu/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/agent_toolkits/sql/base.pyÚ	<genexpr>z#create_sql_agent.<locals>.<genexpr>™   s   øè ø€ ÐVÑ8U°ˆs�f×,Ñ,Ô,Ñ8Uùs   ƒ)Ú
table_infoÚtable_namesr3   )r3   r4   )r4   )r"   z

z{tools}ÚinputÚoutput)ÚrunnableÚinput_keys_argÚreturn_keys_arg)Úcontentz{input}Úagent_scratchpad)Úvariable_name)úopenai-toolsztool-callingr=   zAgent type z‚ not supported at the moment. Must be one of 'tool-calling', 'openai-tools', 'openai-functions', or 'zero-shot-react-description'.zSQL Agent Executor)ÚnameÚagentÚtoolsÚcallback_managerÚverboseÚmax_iterationsÚmax_execution_timeÚearly_stopping_method© )+Úlangchain.agentsr$   r%   r&   r'   Úlangchain.agents.agentr   r(   r)   Úlangchain.agents.agent_typesr   Ú
ValueErrorr   ÚZERO_SHOT_REACT_DESCRIPTIONÚ	get_toolsÚlistr   Úformatr+   r.   ÚpartialÚstrÚanyÚget_contextÚ
isinstancer   r   Úlangchain.agents.mrklr"   ÚFORMAT_INSTRUCTIONSÚjoinr   r   Úfrom_templateÚOPENAI_FUNCTIONSr   r   r   r   r   r   r   Úfrom_messages)"r*   ÚtoolkitÚ
agent_typerA   ÚprefixÚsuffixÚformat_instructionsr.   r,   rC   rD   rE   rB   Úagent_executor_kwargsÚextra_toolsr!   r"   Úkwargsr$   r%   r&   r'   r   r(   r)   r   r@   Ú
db_contextÚtoolÚreact_promptÚtemplater?   Úmessagesr7   s"                   `                 r1   Úcreate_sql_agentrg   .   sÕ  ø€ ÷Ró ÷ñ õ
 7à€˜2˜:ÜØNó
ð 	
ñ ‘2ÜØKó
ð 	
ð Ò;Ô+°¸Ô;€GØÒD˜y×DÑD€JØ×ÑÓ¤$ {Ó"3Ñ3€EØ€~ÜˆØ€~Ø—‘ w§¡¸e�ÓD‰à�f×,Ñ,Ñ,Ø—^‘^¬#¨e«*�^Ó5ˆFØ˜×.Ñ.Ñ.Ø—^‘^¨G¯O©O�^Ó<ˆFÜÓVÑ8UÓVÔVØ ×,Ñ,Ó.ˆJØ˜v×5Ñ5Ñ5ØŸ™°:¸lÑ3K˜ÓL�á%*óÙ%*˜T´*¸TÔCVÕ2W’D Uð ð ð  × 6Ñ 6Ñ6ØŸ™°J¸}Ñ4M˜ÓN�á%*óÙ%*˜T´*¸TÔCVÕ2W’D Uð ð ð �Y×:Ñ:Ò:Øˆ>ÝDð $ÒG |×'GÑ'Gð  ð —{‘{àØØ'ØÒ(œjð	óˆHô $×1Ñ1°(Ó;ˆFÙð 
Ù'¨¨U°FÓ;Ø#˜9Ø%˜Jñ
ð ñ	
Šð 
�y×1Ñ1Ò	1Øˆ>ä¤d¬3°Ó&7Ô8Ü*×8Ñ8¸ÓCÜ &Ò"@Ô,@ÔAÜ#Ð2DÔEð	ˆHô (×5Ñ5°hÓ?ˆFÙð 
Ù2°3¸¸vÓFØ#˜9Ø%˜Jñ
ð ñ	
‰ð 
Ð7Ñ	7Øˆ>ä¤d¬3°Ó&7Ô8Ü*×8Ñ8¸ÓCÜ &Ò"@Ô,@ÔAÜ#Ð2DÔEð	ˆHô (×5Ñ5°hÓ?ˆFØ˜Ò'Ù0°°e¸VÓD‰Há0°°e¸VÓDˆHÙ(ð 
ØØ#˜9Ø%˜Jñ
ð ñ	
‰ô Ø˜*˜ð &-ð -ó
ð 	
ñ ð 
Ø!ØØØ)ØØ%Ø-Ø3ñ
ð !Ò& Bñ
ð 
ùòUùò
s   Ä?MÅMÆMÆM)NNNNNNNé
   é   NÚforceFNrF   )&r*   r   rZ   zOptional[SQLDatabaseToolkit]r[   zCOptional[Union[AgentType, Literal['openai-tools', 'tool-calling']]]rA   zOptional[BaseCallbackManager]r\   úOptional[str]r]   rk   r^   rk   r.   zOptional[List[str]]r,   ÚintrC   zOptional[int]rD   zOptional[float]rE   rP   rB   Úboolr_   zOptional[Dict[str, Any]]r`   zSequence[BaseTool]r!   zOptional[SQLDatabase]r"   zOptional[BasePromptTemplate]ra   r   Úreturnr   )-Ú__doc__Ú
__future__r   Útypingr   r   r   r   r   r	   r
   r   r   Úlangchain_core.messagesr   r   Úlangchain_core.promptsr   r   Úlangchain_core.prompts.chatr   r   r   Ú-langchain_community.agent_toolkits.sql.promptr   r   r   Ú.langchain_community.agent_toolkits.sql.toolkitr   Ú+langchain_community.tools.sql_database.toolr   r   rH   r   rI   r   Úlangchain_core.callbacksr   Úlangchain_core.language_modelsr   Úlangchain_core.toolsr   Ú*langchain_community.utilities.sql_databaser    rg   rF   ó    r1   Ú<module>r}      sg  ðÙ å "÷
÷ 
õ 
÷ =ß E÷ñ ÷ñ õ
 N÷ñ
 Ý4Ý6Ý<Ý@Ý-åFð
 -1ð 	Ø6:Ø Ø Ø)-Ø+/ØØ$&Ø*.Ø!(ØØ6:Ø&(ð#Cð& !%Ø+/ñ)CØ	ðCà)ðCððCð 4ðCð ðCð ðCð 'ðCð )ðCð ðCð "ðCð (ðCð ðCð ðCð  4ð!Cð" $ð#Cð& 	ð'Cð( )ð)Cð* ð+Cð, ô-Cr|   