
    3fi                         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mZ d dlmZ d dlmZ  G d	 d
e      Z G d deeef         Zy)    )CallableMapping)
itemgetter)Any)BaseMessage)JsonOutputFunctionsParser)RouterRunnableRunnable)RunnableBindingBase)	TypedDictc                   4    e Zd ZU dZeed<   	 eed<   	 eed<   y)OpenAIFunctionz(A function description for `ChatOpenAI`.namedescription
parametersN)__name__
__module____qualname____doc__str__annotations__dict     j/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_classic/runnables/openai_functions.pyr   r      s    2
I#*)r   r   c                   z     e Zd ZU dZee   dz  ed<   	 ddeee	e
ef   ee
gef   z  f   dee   dz  f fdZ xZS )OpenAIFunctionsRouterz0A runnable that routes to the selected function.N	functions	runnablesc                    |Et        |      t              k7  rd}t        |      t        fd|D              sd}t        |      t        d      t	        d      t	        d      d	z  t              z  }t        |   |i |
       y)zInitialize the `OpenAIFunctionsRouter`.

        Args:
            runnables: A mapping of function names to runnables.
            functions: Optional list of functions to check against the runnables.
        Nz?The number of functions does not match the number of runnables.c              3   ,   K   | ]  }|d    v   yw)r   Nr   ).0funcr   s     r   	<genexpr>z1OpenAIFunctionsRouter.__init__.<locals>.<genexpr>.   s     GTtF|y0Gs   z6One or more function names are not found in runnables.F)	args_onlyr   	arguments)keyinput)boundkwargsr   )len
ValueErrorallr   r   r	   super__init__)selfr   r   msgrouter	__class__s    `   r   r/   zOpenAIFunctionsRouter.__init__   s      9~Y/W o%GYGGN o%%6 (:k3JKLY'( 	
 	vbIFr   )N)r   r   r   r   listr   r   r   r   r
   r   r   r   r/   __classcell__)r3   s   @r   r   r      sn    :N#d** 26GT3Y(D63;"779
G '$.G Gr   r   N)collections.abcr   r   operatorr   typingr   langchain_core.messagesr   .langchain_core.output_parsers.openai_functionsr   langchain_core.runnablesr	   r
   langchain_core.runnables.baser   typing_extensionsr   r   r   r   r   r   <module>r>      sB    -   / T = = '*Y *G/S0@A Gr   