
    KKi                         S SK JrJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJrJr  S SKJr  S SKJr   " S	 S
\5      r " S S\\\4   5      rg)    )CallableMapping)
itemgetter)Any)BaseMessage)JsonOutputFunctionsParser)RouterRunnableRunnable)RunnableBindingBase)	TypedDictc                   <    \ rS rSr% Sr\\S'    \\S'    \\S'   Srg)OpenAIFunction   z(A function description for `ChatOpenAI`.namedescription
parameters N)	__name__
__module____qualname____firstlineno____doc__str__annotations__dict__static_attributes__r       n/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/langchain_classic/runnables/openai_functions.pyr   r      s    2
I#*)r   r   c                      ^  \ rS rSr% Sr\\   S-  \S'    SS\\	\
\\4   \\/\4   -  4   S\\   S-  4U 4S jjjrSrU =r$ )	OpenAIFunctionsRouter   z0A runnable that routes to the selected function.N	functions	runnablesc                   >^ UbL  [        U5      [        T5      :w  a  Sn[        U5      e[        U4S jU 5       5      (       d  Sn[        U5      e[        SS9[	        S5      [	        S5      S	.-  [        T5      -  n[        TU ]  U0 US
9  g)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   2   >#    U  H  oS    T;   v   M     g7f)r   Nr   ).0funcr#   s     r   	<genexpr>1OpenAIFunctionsRouter.__init__.<locals>.<genexpr>.   s     GYTF|y0Ys   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   r4   OpenAIFunctionsRouter.__init__   s      9~Y/W o%GYGGGN o%%6 (:k3JKLY'( 	
 	vbIFr   r   )N)r   r   r   r   r   listr   r   r   r   r
   r   r   r   r4   r   __classcell__)r8   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>rD      sB    -   / T = = '*Y *G/S0@A Gr   