Ë
    s0žj'  ã                  ó>  — 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;	 	 	 	 	 	 	 	 d)d„Z<	 	 	 	 	 	 d*d„Z=	 	 	 	 	 	 d+d„Z>	 	 	 	 	 	 d,d„Z?ed œ	 	 	 	 	 d-d!„Z@	 	 	 	 d.d"„ZAd/d#„ZBd0d$„ZCd1d%„ZD	 	 	 	 d2d&„ZEy)3é    )Ú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    úX/home/Script/Script_env/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 | 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   Ú
ValueErrorr1   r   r   r    )r7   r2   r/   s      r3   Úvalidate_input_toolsr>   A   s¦   € ô �EŒ?Üˆàò 
ˆØ�‰<˜:Ò%ÜØWÐX\Ð]cÑXdÐWeÐefÐgóð ð �jÑ!×%Ñ% hÓ/ˆØ˜ÒÜØ�D˜Ñ$ VÑ,Ð-Ð-mÐnóð ð
ô ”Ô8Ñ9¸5ÓAÐAr5   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)Úinput_toolsr.   )ÚvalueÚtype_Úcustomz?Custom tool calls are not callable. Ignoring tool call: %s - %sr   )Ú
stacklevelÚmessage©Úresponse_formatrI   )ÚparsedÚ
tool_calls)rF   rE   Úchoices)r   rN   Úfinish_reasonr"   r#   rI   rM   r-   Úto_dictÚappendr   r   r   Úparse_function_tool_argumentsr.   r   r+   ÚwarningÚidrG   r<   r   r
   r   r'   Úmaybe_parse_contentr   )
rK   rD   Úchat_completionr8   rN   ÚchoicerI   rM   Ú	tool_callÚtool_call_dicts
             r3   Úparse_chat_completionrZ   V   s  € ô �ÔØ"-Ö.˜Q’qÐ.ˆÑ.àˆà35€GØ!×)Ñ)ó 8
ˆØ×Ñ 8Ò+Ü)°_ÔEÐEà×ÑÐ#3Ò3Ü0Ó2Ð2à—.‘.ˆà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   �	G9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©rD   r<   s    `r3   Úget_input_tool_by_namera   ¥   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 )Nr`   r.   r/   )ra   r<   r   Úobjectr1   Ú
isinstancer   r   ÚmodelÚ	argumentsr$   ÚjsonÚloads)rD   r.   Ú
input_toolÚinput_fns       r3   rR   rR   «   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 ©N)Úhas_rich_response_formatÚcontentÚrefusalÚ_parse_contentrJ   s     r3   rU   rU   ¾   s,   € ô
   Ô0°W·_²_ÈWÏ_Ê_Ü˜o¨w¯©Ó?Ð?àr5   )rD   c                óL   — t        | «      ry|xs g D ]  }t        |«      sŒ y y)NTF)rm   Úis_parseable_tool)rK   rD   ri   s      r3   Úhas_parseable_inputrs   É   s3   € ô
   Ô0Øà!Ò' Rò ˆ
Ü˜ZÕ(Ùðð r5   c                ó4   — t        | «      syt        | «      ryy)NFT)r   Úis_response_format_param©rK   s    r3   rm   rm   Ø   s   € ô �OÔ$Øä Ô0Øàr5   c                ó   — t        | «      S rl   )r   rv   s    r3   ru   ru   ä   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   rc   r1   rd   r   r$   )ri   rj   s     r3   rr   rr   è   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)rK   rn   s     r3   rp   rp   ó   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   ru   r   r-   r   Ú__name__r   r{   r|   rz   r   )rK   Ú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)rK   zFtype[ResponseFormatT] | completion_create_params.ResponseFormat | OmitrD   r…   rV   z-ChatCompletion | ParsedChatCompletion[object]r„   z%ParsedChatCompletion[ResponseFormatT])rD   ú"list[ChatCompletionToolUnionParam]r<   Ústrr„   z&ChatCompletionFunctionToolParam | None)rD   r†   r.   zFunction | ParsedFunctionr„   zobject | None)rK   ú2type[ResponseFormatT] | ResponseFormatParam | OmitrI   z;ChatCompletionMessage | ParsedChatCompletionMessage[object]r„   zResponseFormatT | None)rK   z!type | ResponseFormatParam | OmitrD   r…   r„   Úbool)rK   rˆ   r„   z TypeGuard[type[ResponseFormatT]])rK   rc   r„   zTypeGuard[ResponseFormatParam])ri   r   r„   r‰   )rK   ztype[ResponseFormatT]rn   r‡   r„   r'   )rK   z5type | completion_create_params.ResponseFormat | Omitr„   zResponseFormatParam | Omit)FÚ
__future__r   rg   Ú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>   rZ   ra   rR   rU   rs   rm   ru   rr   rp   rƒ   © r5   r3   ú<module>r�      sË  ðÞ "ã Û ß 5Ó 5ß >Ñ >ã å )ß  ß 'ß 4Ý /ß XÑ X÷÷ ÷ ÷ SÝ 5Ý XÝ MáØàô€ð
 "&Ð ˜$Ó %à'�g×'Ñ'Ð(<Ó=€€^Ó =ð	Ø
&ð	à/ó	ð <@ðIØ8ðIà5óIð <@ðBØ8ðBà5óBð*Là[ðLð ?ðLð Cð	Lð
 +óLð^yØ6ðyØ>Aðyà+óyð*Ø6ð*ØB[ð*àó*ð&àGðð Iðð ó	ð BFñà6ðð ?ðð 
ó	ð	ØGð	à%ó	ó$óEó
]ð ØJð àô r5   