
    gh                       d dl mZ d dlZd dlmZmZmZ d dlmZ d dl	m
Z
mZmZmZmZmZmZ d dl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  d dl!m"Z" d dl#m$Z$m%Z% d dl&m'Z' d dl(m)Z) g dZ*eddddd6d            Z+e	 d7ddddd8d            Z+e	 d7ddddd9d!            Z+	 d7ddddd:d$Z+dd%d;d&Z,h d'Z-d<d)Z.d=d+Z/dd,d>d0Z0d?d3Z1d4Z2 G d5 deee
f                   Z3dS )@    )annotationsN)AsyncIteratorIteratorSequence)util)AnyCallableLiteralOptionalUnioncastoverload)BaseChatModelLanguageModelInputSimpleChatModel)agenerate_from_streamgenerate_from_stream)
AnyMessageBaseMessage)RunnableRunnableConfigensure_config)StreamEvent)BaseTool)RunLogRunLogPatch)	BaseModel)	TypeAlias)init_chat_modelr   r   r   r   )model_providerconfigurable_fieldsconfig_prefixmodelstrr    Optional[str]r!   Literal[None]r"   kwargsr   returnr   c                   d S N r#   r    r!   r"   r'   s        W/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/langchain/chat_models/base.pyr   r   +   s	     C    _ConfigurableModelc                   d S r*   r+   r,   s        r-   r   r   6   	     r.   .1Union[Literal['any'], list[str], tuple[str, ...]]c                   d S r*   r+   r,   s        r-   r   r   A   r1   r.   ;Optional[Union[Literal['any'], list[str], tuple[str, ...]]](Union[BaseChatModel, _ConfigurableModel]c                   | s|sd}|pd}|r|st          j        d|d           |s"t          t          t          |           fd|i|S | r| |d<   |r||d<   t          |||          S )a+&  Initialize a ChatModel from the model name and provider.

    **Note:** Must have the integration package corresponding to the model provider
    installed.

    Args:
        model: The name of the model, e.g. "o3-mini", "claude-3-5-sonnet-latest". You can
            also specify model and model provider in a single argument using
            '{model_provider}:{model}' format, e.g. "openai:o1".
        model_provider: The model provider if not specified as part of model arg (see
            above). Supported model_provider values and the corresponding integration
            package are:

            - 'openai'              -> langchain-openai
            - 'anthropic'           -> langchain-anthropic
            - 'azure_openai'        -> langchain-openai
            - 'azure_ai'            -> langchain-azure-ai
            - 'google_vertexai'     -> langchain-google-vertexai
            - 'google_genai'        -> langchain-google-genai
            - 'bedrock'             -> langchain-aws
            - 'bedrock_converse'    -> langchain-aws
            - 'cohere'              -> langchain-cohere
            - 'fireworks'           -> langchain-fireworks
            - 'together'            -> langchain-together
            - 'mistralai'           -> langchain-mistralai
            - 'huggingface'         -> langchain-huggingface
            - 'groq'                -> langchain-groq
            - 'ollama'              -> langchain-ollama
            - 'google_anthropic_vertex'    -> langchain-google-vertexai
            - 'deepseek'            -> langchain-deepseek
            - 'ibm'                 -> langchain-ibm
            - 'nvidia'              -> langchain-nvidia-ai-endpoints
            - 'xai'                 -> langchain-xai
            - 'perplexity'          -> langchain-perplexity

            Will attempt to infer model_provider from model if not specified. The
            following providers will be inferred based on these model prefixes:

            - 'gpt-3...' | 'gpt-4...' | 'o1...' -> 'openai'
            - 'claude...'                       -> 'anthropic'
            - 'amazon....'                      -> 'bedrock'
            - 'gemini...'                       -> 'google_vertexai'
            - 'command...'                      -> 'cohere'
            - 'accounts/fireworks...'           -> 'fireworks'
            - 'mistral...'                      -> 'mistralai'
            - 'deepseek...'                     -> 'deepseek'
            - 'grok...'                         -> 'xai'
            - 'sonar...'                        -> 'perplexity'
        configurable_fields: Which model parameters are
            configurable:

            - None: No configurable fields.
            - "any": All fields are configurable. *See Security Note below.*
            - Union[List[str], Tuple[str, ...]]: Specified fields are configurable.

            Fields are assumed to have config_prefix stripped if there is a
            config_prefix. If model is specified, then defaults to None. If model is
            not specified, then defaults to ``("model", "model_provider")``.

            ***Security Note***: Setting ``configurable_fields="any"`` means fields like
            api_key, base_url, etc. can be altered at runtime, potentially redirecting
            model requests to a different service/user. Make sure that if you're
            accepting untrusted configurations that you enumerate the
            ``configurable_fields=(...)`` explicitly.

        config_prefix: If config_prefix is a non-empty string then model will be
            configurable at runtime via the
            ``config["configurable"]["{config_prefix}_{param}"]`` keys. If
            config_prefix is an empty string then model will be configurable via
            ``config["configurable"]["{param}"]``.
        temperature: Model temperature.
        max_tokens: Max output tokens.
        timeout: The maximum time (in seconds) to wait for a response from the model
            before canceling the request.
        max_retries: The maximum number of attempts the system will make to resend a
            request if it fails due to issues like network timeouts or rate limits.
        base_url: The URL of the API endpoint where requests are sent.
        rate_limiter: A ``BaseRateLimiter`` to space out requests to avoid exceeding
            rate limits.
        kwargs: Additional model-specific keyword args to pass to
            ``<<selected ChatModel>>.__init__(model=model_name, **kwargs)``.

    Returns:
        A BaseChatModel corresponding to the model_name and model_provider specified if
        configurability is inferred to be False. If configurable, a chat model emulator
        that initializes the underlying model at runtime once a config is passed in.

    Raises:
        ValueError: If model_provider cannot be inferred or isn't supported.
        ImportError: If the model provider integration package is not installed.

    .. dropdown:: Init non-configurable model
        :open:

        .. code-block:: python

            # pip install langchain langchain-openai langchain-anthropic langchain-google-vertexai
            from langchain.chat_models import init_chat_model

            o3_mini = init_chat_model("openai:o3-mini", temperature=0)
            claude_sonnet = init_chat_model("anthropic:claude-3-5-sonnet-latest", temperature=0)
            gemini_2_flash = init_chat_model("google_vertexai:gemini-2.0-flash", temperature=0)

            o3_mini.invoke("what's your name")
            claude_sonnet.invoke("what's your name")
            gemini_2_flash.invoke("what's your name")


    .. dropdown:: Partially configurable model with no default

        .. code-block:: python

            # pip install langchain langchain-openai langchain-anthropic
            from langchain.chat_models import init_chat_model

            # We don't need to specify configurable=True if a model isn't specified.
            configurable_model = init_chat_model(temperature=0)

            configurable_model.invoke(
                "what's your name",
                config={"configurable": {"model": "gpt-4o"}}
            )
            # GPT-4o response

            configurable_model.invoke(
                "what's your name",
                config={"configurable": {"model": "claude-3-5-sonnet-latest"}}
            )
            # claude-3.5 sonnet response

    .. dropdown:: Fully configurable model with a default

        .. code-block:: python

            # pip install langchain langchain-openai langchain-anthropic
            from langchain.chat_models import init_chat_model

            configurable_model_with_default = init_chat_model(
                "openai:gpt-4o",
                configurable_fields="any",  # this allows us to configure other params like temperature, max_tokens, etc at runtime.
                config_prefix="foo",
                temperature=0
            )

            configurable_model_with_default.invoke("what's your name")
            # GPT-4o response with temperature 0

            configurable_model_with_default.invoke(
                "what's your name",
                config={
                    "configurable": {
                        "foo_model": "anthropic:claude-3-5-sonnet-20240620",
                        "foo_temperature": 0.6
                    }
                }
            )
            # Claude-3.5 sonnet response with temperature 0.6

    .. dropdown:: Bind tools to a configurable model

        You can call any ChatModel declarative methods on a configurable model in the
        same way that you would with a normal model.

        .. code-block:: python

            # pip install langchain langchain-openai langchain-anthropic
            from langchain.chat_models import init_chat_model
            from pydantic import BaseModel, Field

            class GetWeather(BaseModel):
                '''Get the current weather in a given location'''

                location: str = Field(..., description="The city and state, e.g. San Francisco, CA")

            class GetPopulation(BaseModel):
                '''Get the current population in a given location'''

                location: str = Field(..., description="The city and state, e.g. San Francisco, CA")

            configurable_model = init_chat_model(
                "gpt-4o",
                configurable_fields=("model", "model_provider"),
                temperature=0
            )

            configurable_model_with_tools = configurable_model.bind_tools([GetWeather, GetPopulation])
            configurable_model_with_tools.invoke(
                "Which city is hotter today and which is bigger: LA or NY?"
            )
            # GPT-4o response with tool calls

            configurable_model_with_tools.invoke(
                "Which city is hotter today and which is bigger: LA or NY?",
                config={"configurable": {"model": "claude-3-5-sonnet-20240620"}}
            )
            # Claude-3.5 sonnet response with tools

    .. versionadded:: 0.2.7

    .. versionchanged:: 0.2.8

        Support for ``configurable_fields`` and ``config_prefix`` added.

    .. versionchanged:: 0.2.12

        Support for Ollama via langchain-ollama package added
        (langchain_ollama.ChatOllama). Previously,
        the now-deprecated langchain-community version of Ollama was imported
        (langchain_community.chat_models.ChatOllama).

        Support for AWS Bedrock models via the Converse API added
        (model_provider="bedrock_converse").

    .. versionchanged:: 0.3.5

        Out of beta.

    .. versionchanged:: 0.3.19

        Support for Deepseek, IBM, Nvidia, and xAI models added.

    r#   r     zconfig_prefix=z has been set but no fields are configurable. Set `configurable_fields=(...)` to specify the model params that are configurable.r    r#   )default_configr"   r!   )warningswarn_init_chat_model_helperr   r$   r/   r,   s        r-   r   r   O   s    P  :, :9!'RM 
0 
}   	
 	
 	
  
&e
 
-;
?E
 
 	
  	$#F7O 	6'5F#$!!' 3
 
 
 	
r.   )r    c               ,   t          | |          \  } }|dk    rt          d           ddlm}  |dFd| i|S |dk    rt          d           ddlm}  |dFd| i|S |d	k    rt          d           dd
lm}  |dFd| i|S |dk    rt          d           ddlm}  |dFd| i|S |dk    rt          d           ddl	m
}  |dFd| i|S |dk    rt          d           ddlm}  |dFd| i|S |dk    rt          d           ddlm}	  |	dFd| i|S |dk    rt          d           ddlm}
  |
dFd| i|S |dk    rg	 t          d           ddlm} nF# t&          $ r9 	 t          d           ddlm} n# t&          $ r t          d           Y nw xY wY nw xY w |dFd| i|S |dk    rt          d           dd lm}  |dFd| i|S |d!k    rt          d"           dd#lm}  |dFd| i|S |d$k    rt          d%           dd&lm}  |dFd'| i|S |d(k    rt          d)           dd*lm}  |dFd| i|S |d+k    rt          d,           dd-lm}  |dFd'| i|S |d.k    rt          d,           dd/lm}  |dFd| i|S |d0k    rt          d           dd1l m!}  |dFd| i|S |d2k    r!t          d3d45           dd6l"m#}  |dFd| i|S |d7k    rt          d8           dd9l$m%}  |dFd| i|S |d:k    rt          d;           dd<l&m'}  |dFd'| i|S |d=k    rt          d>           dd?l(m)}  |dFd| i|S |d@k    rt          dA           ddBl*m+}  |dFd| i|S dC,                    tZ                    }t]          dD|dE|           )GNopenailangchain_openair   )
ChatOpenAIr#   	anthropiclangchain_anthropic)ChatAnthropicazure_openai)AzureChatOpenAIazure_ailangchain_azure_ai)AzureAIChatCompletionsModelcoherelangchain_cohere)
ChatCoheregoogle_vertexailangchain_google_vertexai)ChatVertexAIgoogle_genailangchain_google_genai)ChatGoogleGenerativeAI	fireworkslangchain_fireworks)ChatFireworksollamalangchain_ollama)
ChatOllamalangchain_communitytogetherlangchain_together)ChatTogether	mistralailangchain_mistralai)ChatMistralAIhuggingfacelangchain_huggingface)ChatHuggingFacemodel_idgroqlangchain_groq)ChatGroqbedrocklangchain_aws)ChatBedrockbedrock_converse)ChatBedrockConversegoogle_anthropic_vertex)ChatAnthropicVertexdeepseeklangchain_deepseekzlangchain-deepseek	pkg_kebab)ChatDeepSeeknvidialangchain_nvidia_ai_endpoints)
ChatNVIDIAibmlangchain_ibm)ChatWatsonxxailangchain_xai)ChatXAI
perplexitylangchain_perplexity)ChatPerplexityz, zUnsupported model_provider=z".

Supported model providers are: r+   )/_parse_model
_check_pkgr?   r@   rB   rC   rE   langchain_azure_ai.chat_modelsrH   rJ   rK   rM   rN   rP   rQ   rS   rT   rV   rW   ImportErrorlangchain_community.chat_modelsrZ   r[   r]   r^   r`   ra   rd   re   rg   rh   rj   &langchain_google_vertexai.model_gardenrl   rn   rq   rs   rt   rv   rw   ry   rz   r|   r}   join_SUPPORTED_PROVIDERS
ValueError)r#   r    r'   r@   rC   rE   rH   rK   rN   rQ   rT   rW   r[   r^   ra   re   rh   rj   rl   rq   rt   rw   rz   r}   	supporteds                            r-   r<   r<   Q  s    )??E>!!%&&&//////z000000	;	&	&()))555555}3353F333	>	)	)%&&&44444455U5f555	:	%	%'(((NNNNNN**AAA&AAA	8	#	#%&&&//////z000000	,	,	,.///::::::|22%26222	>	)	)+,,,AAAAAA%%<<E<V<<<	;	&	&()))555555}3353F333	8	#	#	/)***3333333 	/ 	/ 	//0111FFFFFFF / / / -...../	/ z000000	:	%	%'(((333333|22%26222	;	&	&()))555555}3353F333	=	(	(*+++999999888888	6	!	!#$$$++++++x..e.v...	9	$	$?###------ {44E4V444	-	-	-?###555555""999&999	4	4	4.///NNNNNN""999&999	:	%	%'3GHHHH333333|22%26222	8	#	#2333<<<<<<z000000	5	 	 ?###------{44E4V444	5	 	 ?###))))))w--U-f---	<	'	')***777777~44E4V444II233	>   
 
 	
s6   E 
F$E:9F:FFFFF>   ru   rx   rc   rI   rU   r>   rf   rF   rm   rY   rA   rR   r\   r{   r_   rD   rO   rL   ri   rk   
model_namec                    t           fddD                       rdS                      d          rdS                      d          rdS                      d          rd	S                      d
          rdS                      d          rdS                      d          rdS                      d          rdS                      d          rdS                      d          rdS d S )Nc              3  B   K   | ]}                     |          V  d S r*   )
startswith).0prer   s     r-   	<genexpr>z0_attempt_infer_model_provider.<locals>.<genexpr>  s1      
P
P#:  %%
P
P
P
P
P
Pr.   )zgpt-3zgpt-4o1o3r>   clauderA   commandrI   zaccounts/fireworksrR   geminirL   zamazon.rf   mistralr\   rm   grokrx   sonarr{   )anyr   )r   s   `r-   _attempt_infer_model_providerr     s(   

P
P
P
P1O
P
P
PPP x			x	(	( {			y	)	) x			3	4	4 {			x	(	(   			y	)	) y			y	)	) 	{			z	*	* z			v	&	& u			w	'	' |tr.   tuple[str, str]c                   |sqd| v rm|                      d          d         t          v rK|                      d          d         }d                    |                      d          dd                    } |pt          |           }|st	          d| d          |                    dd                                          }| |fS )N:r      z)Unable to infer model provider for model=z), please specify model_provider directly.-_)splitr   r   r   r   replacelowerr7   s     r-   r~   r~     s    /5LLKKQ#777S))!,S))!""-..#K'DU'K'KN 
(% ( ( (
 
 	
 $++C55;;==N.  r.   ro   pkgrp   Nonec                   t          j        |           s0||n|                     dd          }t          d|  d| d          d S )Nr   r   zUnable to import z&. Please install with `pip install -U `)r   	find_specr   r   )r   rp   s     r-   r   r     sb    ># 
!*!6IICKKS<Q<Q	WWW9WWW
 
 	

 
r.   sprefixc                ^    |                      |          r| t          |          d          } | S r*   )r   len)r   r   s     r-   _remove_prefixr     s/    ||F c&kkmmHr.   )
bind_toolswith_structured_outputc                      e Zd Zdddddd]dZd^dZd_d`dZdadZ	 d_dbdZedcd            Z		 d_ddd Z
	 d_ddd!Z	 d_ded$Z	 d_dfd&Z	 d_d'd(dg fd/Z	 d_d'd(dg fd0Z	 d_d'd(dh fd4Z	 d_d'd(di fd6Z	 d_djd8Z	 d_dkd:Ze	 d_d;d;ddddddd<dldH            Ze	 d_d;dddddddIdmdL            Z	 d_d;d;ddddddd<dndNZ	 d_dOdddddddPdodTZdpdXZdqd\Z xZS )rr/   Nr   r8   r+   r9   r!   r"   queued_declarative_operationsr9   Optional[dict]r!   r2   r"   r$   r   !Sequence[tuple[str, tuple, dict]]r(   r   c                   |pi | _         |dk    r|nt          |          | _        |r|                    d          s|dz   n|| _        t          |          | _        d S )Nr   r   )_default_configlist_configurable_fieldsendswith_config_prefix_queued_declarative_operations)selfr9   r!   r"   r   s        r-   __init__z_ConfigurableModel.__init__&  s     &4%9r #e++  )** 	! %2%;%;C%@%@MC 	
 NR)N
 N
+++r.   namer   c                     t           v r	d
 fd}|S  j        r6                                 x}r t          |          rt	          |          S  d} j        r|dz  }|d	z  }t          |          )Nargsr   r'   r(   r/   c                    t          j                  }|                    | |f           t          t	          j                  t          j        t                     rt          j                  nj        j        |          S )Nr   )	r   r   appendr/   dictr   
isinstancer   r   )r   r'   r   r   r   s      r-   queuez-_ConfigurableModel.__getattr__.<locals>.queueD  s    0471 1- .44dD&5IJJJ)#'(<#=#=!$";TBB)3T-F(G(G(G2"&"52O   r.   z! is not a BaseChatModel attributez, and is not implemented on the default model.)r   r   r'   r   r(   r/   )_DECLARATIVE_METHODSr   _modelhasattrgetattrAttributeError)r   r   r   r#   msgs   ``   r-   __getattr__z_ConfigurableModel.__getattr__=  s    '''       L! 	&'=u 	&75RVCWCW 	&5$'''<<<C# FEE3JC %%%r.   configOptional[RunnableConfig]r   c                    i | j         |                     |          }t          di |}| j        D ]\  }}} t	          ||          |i |}|S )Nr+   )r   _model_paramsr<   r   r   )r   r   paramsr#   r   r   r'   s          r-   r   z_ConfigurableModel._model\  ss    GD(GD,>,>v,F,FG'11&11"&"E 	: 	:D$(GE4(($9&99EEr.   r   c                     t          |          } fd|                    di                                           D             } j        dk    r  fd|                                D             }|S )Nc                v    i | ]5\  }}|                     j                  t          |j                  |6S r+   )r   r   r   r   kvr   s      r-   
<dictcomp>z4_ConfigurableModel._model_params.<locals>.<dictcomp>e  sQ     
 
 
1||D/00
1d122A
 
 
r.   configurabler   c                .    i | ]\  }}|j         v ||S r+   )r   r   s      r-   r   z4_ConfigurableModel._model_params.<locals>.<dictcomp>k  s3       Ad>W9W9W19W9W9Wr.   )r   getitemsr   )r   r   model_paramss   `  r-   r   z _ConfigurableModel._model_paramsc  s    v&&
 
 
 


>266<<>>
 
 

 $--   !-!3!3!5!5  L r.   r'   c                *    t          di |pi t          t           |          }                     |          d |                                D             } fd|                    di                                           D             |d<   t           j                  }|r|                    ddd|if           t          i  j	        t           j        t
                    rt           j                  n j         j        |          S )z4Bind config to a Runnable, returning a new Runnable.c                &    i | ]\  }}|d k    ||S )r   r+   )r   r   r   s      r-   r   z2_ConfigurableModel.with_config.<locals>.<dictcomp>x  s(    SSSTQqN?R?RAq?R?R?Rr.   c                J    i | ]\  }}t          |j                  v|| S r+   )r   r   )r   r   r   r   r   s      r-   r   z2_ConfigurableModel.with_config.<locals>.<dictcomp>y  sA     ,
 ,
 ,
1a!455\II qIIIr.   r   with_configr+   r   r   )r   r   r   r   r   r   r   r   r/   r   r   r   r   )r   r   r'   remaining_configr   r   s   `    @r-   r   z_ConfigurableModel.with_configp  sL     QQ6<RQD4P4PQQ))&11SSV\\^^SSS,
 ,
 ,
 ,
 ,


>266<<>>,
 ,
 ,
(
 )-T-P(Q(Q% 	)00!/0   "Cd2ClC$3T::!+T%> ? ? ?*-*G
 
 
 	
r.   r   c                v    ddl m}m} t          t          t          ||f         t
          t                   f         S )z%Get the input type for this runnable.r   )ChatPromptValueConcreteStringPromptValue)langchain_core.prompt_valuesr   r   r   r$   r   r   )r   r   r   s      r-   	InputTypez_ConfigurableModel.InputType  sX    	
 	
 	
 	
 	
 	
 	
 	
 #%<<=
 	
r.   inputr   c                H     |                      |          j        |fd|i|S Nr   )r   invoker   r   r   r'   s       r-   r   z_ConfigurableModel.invoke  s0     *t{{6"")%III&IIIr.   c                X   K    |                      |          j        |fd|i| d {V S r   )r   ainvoker   s       r-   r   z_ConfigurableModel.ainvoke  sF       1T[[((0PPvPPPPPPPPPPr.   Optional[Any]Iterator[Any]c              +  \   K    |                      |          j        |fd|i|E d {V  d S r   )r   streamr   s       r-   r   z_ConfigurableModel.stream  sL       .4;;v&&-eMMFMfMMMMMMMMMMMr.   AsyncIterator[Any]c               l   K    |                      |          j        |fd|i|2 3 d {V }|W V  6 d S r   )r   astreamr   r   r   r'   xs        r-   r   z_ConfigurableModel.astream  so       3t{{6**25RRR6RR 	 	 	 	 	 	 	!GGGGG SRR   3F)return_exceptionsinputslist[LanguageModelInput]5Optional[Union[RunnableConfig, list[RunnableConfig]]]r   bool	list[Any]c                  |pd }|(t          |t                    st          |          dk    rAt          |t                    r|d         } |                     |          j        |f||d|S  t                      j        |f||d|S Nr   r   )r   r   )r   r   r   r   r   batchsuperr   r   r   r   r'   	__class__s        r-   r   z_ConfigurableModel.batch  s     4>Z55>V9I9I&$'' #,4;;v&&,%9J NT   !577=%9J NT  r.   c               8  K   |pd }|(t          |t                    st          |          dk    rGt          |t                    r|d         } |                     |          j        |f||d| d {V S  t                      j        |f||d| d {V S r   )r   r   r   r   r   abatchr   r  s        r-   r  z_ConfigurableModel.abatch  s      4>Z55>V9I9I&$'' #3V,,3%9J NT         (%9J NT        r.   Sequence[LanguageModelInput]9Optional[Union[RunnableConfig, Sequence[RunnableConfig]]]+Iterator[tuple[int, Union[Any, Exception]]]c             +  f  K   |pd }|(t          |t                    st          |          dk    r\t          |t                    r|d         } |                     t          t          |                    j        |f||d|E d {V  d S  t                      j        |f||d|E d {V  d S r   )	r   r   r   r   r   r   r   batch_as_completedr   r  s        r-   r	  z%_ConfigurableModel.batch_as_completed  s       4>Z55>V9I9I&$'' #St{{4#?#?@@S%9J NT           2uww1%9J NT          r.   AsyncIterator[tuple[int, Any]]c                K   |pd }|(t          |t                    st          |          dk    rdt          |t                    r|d         } |                     t          t          |                    j        |f||d|2 3 d {V }|W V  6 d S  t                      j        |f||d|2 3 d {V }|W V  6 d S r   )	r   r   r   r   r   r   r   abatch_as_completedr   )r   r   r   r   r'   r   r  s         r-   r  z&_ConfigurableModel.abatch_as_completed  sY      4>Z55>V9I9I&$'' #"4;;^V,, !  &9J  OU        a
    75776%9J NT        a   s   B3C Iterator[LanguageModelInput]c              +  \   K    |                      |          j        |fd|i|E d {V  d S r   )r   	transformr   s       r-   r  z_ConfigurableModel.transform"  sL       14;;v&&0PPvPPPPPPPPPPPPr.   !AsyncIterator[LanguageModelInput]c               l   K    |                      |          j        |fd|i|2 3 d {V }|W V  6 d S r   )r   
atransformr   s        r-   r  z_ConfigurableModel.atransform*  so       6t{{6**5eUUFUfUU 	 	 	 	 	 	 	!GGGGG VUUr   T)diffwith_streamed_output_listinclude_namesinclude_typesinclude_tagsexclude_namesexclude_typesexclude_tagsr  Literal[True]r  r  Optional[Sequence[str]]r  r  r  r  r  AsyncIterator[RunLogPatch]c                   d S r*   r+   r   r   r   r  r  r  r  r  r  r  r  r'   s               r-   astream_logz_ConfigurableModel.astream_log3  s	     &)Sr.   )r  r  r  r  r  r  r  Literal[False]AsyncIterator[RunLog]c                   d S r*   r+   r  s               r-   r   z_ConfigurableModel.astream_logD  s	     !$r.   8Union[AsyncIterator[RunLogPatch], AsyncIterator[RunLog]]c              |   K    |                      |          j        |f|||||||
|	|d	|2 3 d {V }|W V  6 d S )N)	r   r  r  r  r  r  r  r  r  )r   r   )r   r   r   r  r  r  r  r  r  r  r  r'   r   s                r-   r   z_ConfigurableModel.astream_logU  s       7t{{6**6
&?''%%''
 
 
 
 	 	 	 	 	 	 	! GGGGG
 
 
s   ;v2)versionr  r  r  r  r  r  r'  Literal['v1', 'v2']AsyncIterator[StreamEvent]c              z   K    |                      |          j        |f||||||	||d|
2 3 d {V }|W V  6 d S )N)r   r'  r  r  r  r  r  r  )r   astream_events)r   r   r   r'  r  r  r  r  r  r  r'   r   s               r-   r+  z!_ConfigurableModel.astream_eventss  s       :t{{6**9
''%%''
 
 
 
 	 	 	 	 	 	 	! GGGGG
 
 
s   :toolsDSequence[Union[dict[str, Any], type[BaseModel], Callable, BaseTool]])Runnable[LanguageModelInput, BaseMessage]c                :     |                      d          |fi |S )Nr   r   )r   r,  r'   s      r-   r   z_ConfigurableModel.bind_tools  s*    
 .t--e>>v>>>r.   schemaUnion[dict, type[BaseModel]]4Runnable[LanguageModelInput, Union[dict, BaseModel]]c                :     |                      d          |fi |S )Nr   r0  )r   r1  r'   s      r-   r   z)_ConfigurableModel.with_structured_output  s+     :t 899&KKFKKKr.   )
r9   r   r!   r2   r"   r$   r   r   r(   r   )r   r$   r(   r   r*   )r   r   r(   r   )r   r   r(   r   )r   r   r'   r   r(   r/   )r(   r   )r   r   r   r   r'   r   r(   r   )r   r   r   r   r'   r   r(   r   )r   r   r   r   r'   r   r(   r   )
r   r   r   r   r   r   r'   r   r(   r   )
r   r  r   r  r   r   r'   r   r(   r  )
r   r  r   r  r   r   r'   r   r(   r
  )r   r  r   r   r'   r   r(   r   )r   r  r   r   r'   r   r(   r   )r   r   r   r   r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r'   r   r(   r  )r   r   r   r   r  r!  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r'   r   r(   r"  )r   r   r   r   r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r'   r   r(   r$  )r   r   r   r   r'  r(  r  r  r  r  r  r  r  r  r  r  r  r  r'   r   r(   r)  )r,  r-  r'   r   r(   r.  )r1  r2  r'   r   r(   r3  )__name__
__module____qualname__r   r   r   r   r   propertyr   r   r   r   r   r   r  r	  r  r  r  r   r   r+  r   r   __classcell__)r  s   @r-   r/   r/   %  s        *.QVKM
 
 
 
 
 
.& & & &>        ,0
 
 
 
 
@ 
 
 
 X
& ,0J J J J J ,0Q Q Q Q Q ,0N N N N N ,0     IM
 #(       4 IM
 #(       4 MQ
 #(       4 MQ
 #(       < ,0Q Q Q Q Q ,0      ,0)
 #*.151504151504) ) ) ) ) X)   ,0$ +/151504151504$ $ $ $ $ X$& ,0
 *.151504151504     B ,0
 (,151504151504     :? ? ? ?L L L L L L L Lr.   )r#   r$   r    r%   r!   r&   r"   r%   r'   r   r(   r   r*   )r#   r&   r    r%   r!   r&   r"   r%   r'   r   r(   r/   )r#   r%   r    r%   r!   r2   r"   r%   r'   r   r(   r/   )r#   r%   r    r%   r!   r4   r"   r%   r'   r   r(   r5   )r#   r$   r    r%   r'   r   r(   r   )r   r$   r(   r%   )r#   r$   r    r%   r(   r   )r   r$   rp   r%   r(   r   )r   r$   r   r$   r(   r$   )4
__future__r   r:   collections.abcr   r   r   	importlibr   typingr   r	   r
   r   r   r   r   langchain_core.language_modelsr   r   r   *langchain_core.language_models.chat_modelsr   r   langchain_core.messagesr   r   langchain_core.runnablesr   r   r   langchain_core.runnables.schemar   langchain_core.toolsr   langchain_core.tracersr   r   pydanticr   typing_extensionsr   __all__r   r<   r   r   r~   r   r   r   r/   r+   r.   r-   <module>rH     s   " " " " " "  = = = = = = = = = =                                
        < ; ; ; ; ; ; ; L L L L L L L L L L 7 7 7 7 7 7 ) ) ) ) ) ) 6 6 6 6 6 6 6 6       ' ' ' ' ' '   
 %))-#'     
 
 %))-#'     
 
 %)MP#'     
  
 %) 	#'
 
 
 
 
 
F 48}
 }
 }
 }
 }
 }
@   0   2! ! ! !$ 8< 
 
 
 
 
 
    @ vL vL vL vL vL"4c"9: vL vL vL vL vLr.   