Ë
    /æj(  ã                  óP  — U d dl mZ d dlZd dlZd dlmZmZmZmZ d dl	m
Z
mZmZ d dlZddlmZ ddlmZmZ dd	lmZmZ dd
lmZmZ ddlmZ ddlmZmZmZ ddlm Z 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. ddl/m0Z1 ddl2m3Z3  e
dd¬«      Z4dZ5de6d<    ejn                  d«      Z8de6d<   	 	 	 	 d(d„Z9ef	 	 	 d)d„Z:ef	 	 	 d*d„Z;ef	 	 	 d+d„Z<	 	 	 	 	 	 	 	 d,d„Z=	 	 	 	 	 	 d-d„Z>	 	 	 	 	 	 d.d„Z?	 	 	 	 	 	 d/d „Z@ed!œ	 	 	 	 	 d0d"„ZA	 	 	 	 d1d#„ZBd2d$„ZCd3d%„ZDd4d&„ZE	 	 	 	 d5d'„ZFy)6é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚIterableÚcast)ÚTypeVarÚ	TypeGuardÚassert_neveré   )ÚPydanticFunctionToolé   )ÚOmitÚomit)Úis_dictÚis_given)ÚPYDANTIC_V1Úmodel_parse_json)Úconstruct_type_unchecked)Úis_basemodel_typeÚto_strict_json_schemaÚis_dataclass_like_type)
ÚParsedChoiceÚChatCompletionÚParsedFunctionÚParsedChatCompletionÚChatCompletionMessageÚParsedFunctionToolCallÚParsedChatCompletionMessageÚChatCompletionToolUnionParamÚChatCompletionFunctionToolParamÚcompletion_create_params)ÚLengthFinishReasonErrorÚContentFilterFinishReasonError)ÚFunctionDefinition)ÚResponseFormat)ÚFunctionÚResponseFormatT)ÚdefaultÚNoneÚ_default_response_formatzopenai.lib.parsingzlogging.LoggerÚlogc                óD   — | d   dk(  sy| d   j                  d«      duryy)zDCheck if the given tool is a strict ChatCompletionFunctionToolParam.ÚtypeÚfunctionFÚstrictT©Úget)Útools    úc/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/openai/lib/_parsing/_completions.pyÚ$is_strict_chat_completion_tool_paramr4   +   s1   € ð �‰<˜:Ò%ØØˆJÑ×Ñ˜HÓ%¨TÑ1Øàó    c                óf   — t        | «      st        S | D �cg c]  }t        |«      sŒ|‘Œ c}S c c}w )zMSelect only the strict ChatCompletionFunctionToolParams from the given tools.)r   r   r4   )ÚtoolsÚts     r3   Ú#select_strict_chat_completion_toolsr9   7   s,   € ô �EŒ?ÜˆàÖH�!Ô DÀQÕ GŠAÒHÐHùÒHs   –.§.c                ó:   — t        | «      st        S t        | «      S ©N)r   r   Úlist)r7   s    r3   Úmaterialize_input_toolsr=   A   s   € ô �EŒ?Üˆä�‹;Ðr5   c                ó  — t        | «      }t        |«      st        S |D ]I  }|d   dk7  rt        d|d   › d�«      ‚|d   j	                  d«      }|dusŒ6t        d|d   d   › d�«      ‚ t        t        t           |«      S )	Nr-   r.   zECurrently only `function` tool types support auto-parsing; Received `ú`r/   TÚnamez@` is not strict. Only `strict` function tools can be auto-parsed)r=   r   r   Ú
ValueErrorr1   r   r<   r    )r7   Úinput_toolsr2   r/   s       r3   Úvalidate_input_toolsrC   J   s±   € ô *¨%Ó0€KÜ�KÔ Üˆàò 
ˆØ�‰<˜:Ò%ÜØWÐX\Ð]cÑXdÐWeÐefÐgóð ð �jÑ!×%Ñ% hÓ/ˆØ˜ÒÜØ�D˜Ñ$ VÑ,Ð-Ð-mÐnóð ð
ô ”Ô4Ñ5°{ÓCÐCr5   c                ó   — t        |«      r|D �cg c]  }|‘Œ }}ng }g }|j                  D �]Ÿ  }|j                  dk(  rt        |¬«      ‚|j                  dk(  rt	        |¬«      ‚|j
                  }g }|j                  rí|j                  D ]Þ  }|j                  dk(  rc|j                  «       }	|j                  t        i |	¥di t        t        |	d   «      ¥dt        ||j                  ¬«      i¥i¥t        ¬«      «       Œu|j                  dk(  r8t         j#                  d	|j$                  |j&                  j(                  d
¬«       Œ¼t*        rt-        |«       ŒÎ|j                  |«       Œà |j                  t        t.        t0           i |j                  «       ¥di |j                  «       ¥t3        | |¬«      |r|nd dœ¥i¥¬«      «       �Œ¢ t        t4        t0           i |j                  «       ¥d|i¥¬«      S c c}w )NÚlength)Ú
completionÚcontent_filterr.   Úparsed_arguments)rB   r.   )ÚvalueÚtype_Úcustomz?Custom tool calls are not callable. Ignoring tool call: %s - %sr   )Ú
stacklevelÚmessage©Úresponse_formatrM   )ÚparsedÚ
tool_calls)rJ   rI   Úchoices)r   rR   Úfinish_reasonr"   r#   rM   rQ   r-   Úto_dictÚappendr   r   r   Úparse_function_tool_argumentsr.   r   r+   ÚwarningÚidrK   r@   r   r
   r   r'   Úmaybe_parse_contentr   )
rO   rB   Úchat_completionr8   rR   ÚchoicerM   rQ   Ú	tool_callÚtool_call_dicts
             r3   Úparse_chat_completionr^   `   s  € ô �ÔØ"-Ö.˜Q’qÐ.ˆÑ.àˆà35€GØ!×)Ñ)ó 8
ˆØ×Ñ 8Ò+Ü)°_ÔEÐEà×ÑÐ#3Ò3Ü0¸OÔLÐLà—.‘.ˆà35ˆ
Ø×ÒØ$×/Ñ/ò 1�	Ø—>‘> ZÒ/Ø%.×%6Ñ%6Ó%8�NØ×%Ñ%Ü0ð#Ø"0ð#à *ð -"Ü&*¬3°¸zÑ0JÓ&Kð-"à$6Ô8UØ4?È)×J\ÑJ\ô9&ñ-"ñ#ô #9ôõð —^‘^ xÒ/ä—K‘KØYØ!Ÿ™Ø!×(Ñ(×-Ñ-Ø#$ð	  õ õ #Ü  Õ+à×%Ñ% iÕ0ð91ð< 	�‰Ü$Ü"¤?Ñ3ð
Ø—n‘nÓ&ð
àð  Ø!Ÿ/™/Ó+ð ä"5Ø,;Ø$+ô#ñ 5?¡jÀDò ñ
ôö	
ðS8
ôt $Ü"¤?Ñ3ð
Ø×%Ñ%Ó'ð
à�wñ
ôð ùò /s   �	G;c                ó.   ‡— t        ˆfd„| D «       d «      S )Nc              3  ó~   •K  — | ]4  }|d    dk(  sŒ|j                  di «      j                  d«      ‰k(  sŒ1|–— Œ6 y­w)r-   r.   r@   Nr0   )Ú.0r8   r@   s     €r3   ú	<genexpr>z)get_input_tool_by_name.<locals>.<genexpr>²   s<   øè ø€ Òq�q¨1¨V©9¸
Ó+BÀqÇuÁuÈZÐY[ÓG\×G`ÑG`ÐagÓGhÐlpÓGp”Ñqùs   ƒ=‘$=¶=)Únext©rB   r@   s    `r3   Úget_input_tool_by_namere   ¯   s   ø€ ô Óq˜KÔqÐswÓxÐxr5   c                óV  — t        | |j                  ¬«      }|sy t        t        |j	                  d«      «      }t        |t        «      r t        |j                  |j                  «      S t        t        |«      }|j	                  d«      sy t        j                  |j                  «      S )Nrd   r.   r/   )re   r@   r   Úobjectr1   Ú
isinstancer   r   ÚmodelÚ	argumentsr$   ÚjsonÚloads)rB   r.   Ú
input_toolÚinput_fns       r3   rV   rV   µ   s‚   € ô (°KÀhÇmÁmÔT€JÙØä”F˜JŸN™N¨:Ó6Ó7€HÜ�(Ô0Ô1Ü §¡°×0BÑ0BÓCÐCäÔ&¨Ó1€Hà�<‰<˜Ô!Øä�:‰:�h×(Ñ(Ó)Ð)r5   c                óv   — t        | «      r.|j                  r"|j                  st        | |j                  «      S y r;   )Úhas_rich_response_formatÚcontentÚrefusalÚ_parse_contentrN   s     r3   rY   rY   È   s,   € ô
   Ô0°W·_²_ÈWÏ_Ê_Ü˜o¨w¯©Ó?Ð?àr5   )rB   c                óL   — t        | «      ry|xs g D ]  }t        |«      sŒ y y)NTF)rp   Úis_parseable_tool)rO   rB   rm   s      r3   Úhas_parseable_inputrv   Ó   s3   € ô
   Ô0Øà!Ò' Rò ˆ
Ü˜ZÕ(Ùðð r5   c                ó4   — t        | «      syt        | «      ryy)NFT)r   Úis_response_format_param©rO   s    r3   rp   rp   â   s   € ô �OÔ$Øä Ô0Øàr5   c                ó   — t        | «      S r;   )r   ry   s    r3   rx   rx   î   s   € Ü�?Ó#Ð#r5   c                óº   — | d   dk7  ryt        t        | j                  d«      «      }t        |t        «      ryt        t
        |«      j                  d«      xs dS )Nr-   r.   FTr/   )r   rg   r1   rh   r   r$   )rm   rn   s     r3   ru   ru   ò   sS   € Ø�&Ñ˜ZÒ'Øä”F˜JŸN™N¨:Ó6Ó7€HÜ�(Ô0Ô1ØäÔ" HÓ-×1Ñ1°(Ó;ÒD¸uÐDr5   c                óî   — t        | «      rt        t        t        | |«      «      S t	        | «      r8t
        rt        d| › �«      ‚t        j                  | «      j                  |«      S t        d| › �«      ‚)Nz:Non BaseModel types are only supported with Pydantic v2 - z3Unable to automatically parse response format type )
r   r   r'   r   r   r   Ú	TypeErrorÚpydanticÚTypeAdapterÚvalidate_json)rO   rq   s     r3   rs   rs   ý   so   € Ü˜Ô)Ü”OÔ%5°oÀwÓ%OÓPÐPä˜oÔ.ÝÜÐXÐYhÐXiÐjÓkÐkä×#Ñ# OÓ4×BÑBÀ7ÓKÐKä
ÐIÈ/ÐIZÐ[Ó
\Ð\r5   c                ó0  — t        | «      st        S t        | «      r| S t        t        | «      } d }t        | «      r| j                  }| }n;t        | «      r"| j                  }t        j                  | «      }nt        d| › �«      ‚dt        |«      |ddœdœS )Nz#Unsupported response_format type - Újson_schemaT)Úschemar@   r/   )r-   r‚   )r   r   rx   r   r-   r   Ú__name__r   r~   r   r}   r   )rO   Újson_schema_typer@   s      r3   Útype_to_response_format_paramr†   
  s§   € ô �OÔ$Üˆä Ô0ØÐô
 œ4 Ó1€OàTXÐä˜Ô)Ø×'Ñ'ˆØ*ÑÜ	 Ô	0Ø×'Ñ'ˆÜ#×/Ñ/°Ó@ÑäÐ=¸oÐ=NÐOÓPÐPð ä+Ð,<Ó=ØØñ
ñð r5   )r2   r   Úreturnz*TypeGuard[ChatCompletionFunctionToolParam])r7   ú-Iterable[ChatCompletionToolUnionParam] | Omitr‡   z0Iterable[ChatCompletionFunctionToolParam] | Omit)r7   rˆ   r‡   z)list[ChatCompletionToolUnionParam] | Omit)r7   rˆ   r‡   z,list[ChatCompletionFunctionToolParam] | Omit)rO   zFtype[ResponseFormatT] | completion_create_params.ResponseFormat | OmitrB   rˆ   rZ   z-ChatCompletion | ParsedChatCompletion[object]r‡   z%ParsedChatCompletion[ResponseFormatT])rB   ú"list[ChatCompletionToolUnionParam]r@   Ústrr‡   z&ChatCompletionFunctionToolParam | None)rB   r‰   r.   zFunction | ParsedFunctionr‡   zobject | None)rO   ú2type[ResponseFormatT] | ResponseFormatParam | OmitrM   z;ChatCompletionMessage | ParsedChatCompletionMessage[object]r‡   zResponseFormatT | None)rO   z!type | ResponseFormatParam | OmitrB   rˆ   r‡   Úbool)rO   r‹   r‡   z TypeGuard[type[ResponseFormatT]])rO   rg   r‡   zTypeGuard[ResponseFormatParam])rm   r   r‡   rŒ   )rO   ztype[ResponseFormatT]rq   rŠ   r‡   r'   )rO   z5type | completion_create_params.ResponseFormat | Omitr‡   zResponseFormatParam | Omit)GÚ
__future__r   rk   ÚloggingÚtypingr   r   r   r   Útyping_extensionsr   r	   r
   r~   Ú_toolsr   Ú_typesr   r   Ú_utilsr   r   Ú_compatr   r   Ú_modelsr   Ú	_pydanticr   r   r   Ú
types.chatr   r   r   r   r   r   r   r   r    r!   Ú_exceptionsr"   r#   Útypes.shared_paramsr$   Ú#types.chat.completion_create_paramsr%   ÚResponseFormatParamÚ5types.chat.chat_completion_message_function_tool_callr&   r'   r*   Ú__annotations__Ú	getLoggerr+   r4   r9   r=   rC   r^   re   rV   rY   rv   rp   rx   ru   rs   r†   © r5   r3   ú<module>r       sæ  ðÞ "ã Û ß 5Ó 5ß >Ñ >ã å )ß  ß 'ß 4Ý /ß XÑ X÷÷ ÷ ÷ SÝ 5Ý XÝ MáØàô€ð
 "&Ð ˜$Ó %à'�g×'Ñ'Ð(<Ó=€€^Ó =ð	Ø
&ð	à/ó	ð <@ðIØ8ðIà5óIð <@ðØ8ðà.óð <@ðDØ8ðDà1óDð,Là[ðLð ?ðLð Cð	Lð
 +óLð^yØ6ðyØ>Aðyà+óyð*Ø6ð*ØB[ð*àó*ð&àGðð Iðð ó	ð BFñà6ðð ?ðð 
ó	ð	ØGð	à%ó	ó$óEó
]ð ØJð àô r5   