§
     �’j0(  ã                  óà  — 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j7        d¦  «        Z8de6d<   dId„Z9efdJd!„Z:efdJd"„Z;dKd)„Z<dLd.„Z=dMd2„Z>dNd7„Z?ed8œdOd;„Z@dPd=„ZAdQd@„ZBdRdB„ZCdSdE„ZDdTdH„ZEdS )Ué    )Ú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ÚlogÚtoolr   Úreturnú*TypeGuard[ChatCompletionFunctionToolParam]c                ó`   — | d         dk    sdS | d                               d¦  «        durdS dS )zDCheck if the given tool is a strict ChatCompletionFunctionToolParam.ÚtypeÚfunctionFÚstrictT©Úget)r,   s    úNC:\Projects\DSCons\.venv\Lib\site-packages\openai\lib\_parsing\_completions.pyÚ$is_strict_chat_completion_tool_paramr6   +   s@   € ð �Œ<˜:Ò%Ð%ØˆuØˆJÔ×Ò˜HÑ%Ô%¨TÐ1Ð1Øˆuàˆ4ó    Útoolsú-Iterable[ChatCompletionToolUnionParam] | Omitú0Iterable[ChatCompletionFunctionToolParam] | Omitc                óF   — t          | ¦  «        st          S d„ | D ¦   «         S )zMSelect only the strict ChatCompletionFunctionToolParams from the given tools.c                ó0   — g | ]}t          |¦  «        ¯|‘ŒS © )r6   ©Ú.0Úts     r5   ú
<listcomp>z7select_strict_chat_completion_tools.<locals>.<listcomp>>   s&   € ÐHÐHÐH�!Õ DÀQÑ GÔ GÐHˆAÐHÐHÐHr7   )r   r   )r8   s    r5   Ú#select_strict_chat_completion_toolsrB   7   s+   € õ �E‰?Œ?ð ÝˆàHÐH�uÐHÑHÔHÐHr7   c                ó>  — t          | ¦  «        st          S | D ]e}|d         dk    rt          d|d         › d�¦  «        ‚|d                              d¦  «        }|durt          d|d         d         › d�¦  «        ‚Œft	          t
          t                   | ¦  «        S )	Nr0   r1   zECurrently only `function` tool types support auto-parsing; Received `ú`r2   TÚnamez@` is not strict. Only `strict` function tools can be auto-parsed)r   r   Ú
ValueErrorr4   r   r   r    )r8   r,   r2   s      r5   Úvalidate_input_toolsrG   A   sÈ   € õ �E‰?Œ?ð Ýˆàð 
ð 
ˆØ�Œ<˜:Ò%Ð%ÝØgÐX\Ð]cÔXdÐgÐgÐgñô ð ð �jÔ!×%Ò% hÑ/Ô/ˆØ˜ÐÐÝØn�D˜Ô$ VÔ,ÐnÐnÐnñô ð ð õ
 •Õ8Ô9¸5ÑAÔAÐAr7   Úresponse_formatúFtype[ResponseFormatT] | completion_create_params.ResponseFormat | OmitÚinput_toolsÚchat_completionú-ChatCompletion | ParsedChatCompletion[object]ú%ParsedChatCompletion[ResponseFormatT]c                ó&  — t          |¦  «        rd„ |D ¦   «         }ng }g }|j        D �]°}|j        dk    rt          |¬¦  «        ‚|j        dk    rt	          ¦   «         ‚|j        }g }|j        rñ|j        D ]é}|j        dk    rw|                     ¦   «         }| 	                    t          i |¥di t          t          |d         ¦  «        ¥dt          ||j        ¬¦  «        i¥i¥t          ¬¦  «        ¦  «         Œ„|j        d	k    r.t                                d
|j        |j        j        d¬¦  «         Œ½t*          rt-          |¦  «         ŒÔ| 	                    |¦  «         Œê| 	                    t          t.          t0                   i |                     ¦   «         ¥di |                     ¦   «         ¥t3          | |¬¦  «        |r|nd dœ¥i¥¬¦  «        ¦  «         �Œ²t          t4          t0                   i |                     ¦   «         ¥d|i¥¬¦  «        S )Nc                ó   — g | ]}|‘ŒS r=   r=   r>   s     r5   rA   z)parse_chat_completion.<locals>.<listcomp>]   s   € Ð.Ð.Ð.˜Q�qÐ.Ð.Ð.r7   Úlength)Ú
completionÚcontent_filterr1   Úparsed_arguments)rJ   r1   )ÚvalueÚtype_Úcustomz?Custom tool calls are not callable. Ignoring tool call: %s - %sr   )Ú
stacklevelÚmessage©rH   rX   )ÚparsedÚ
tool_calls)rU   rT   Úchoices)r   r\   Úfinish_reasonr"   r#   rX   r[   r0   Úto_dictÚappendr   r   r   Úparse_function_tool_argumentsr1   r   r+   ÚwarningÚidrV   rE   r   r
   r   r'   Úmaybe_parse_contentr   )	rH   rJ   rK   r\   ÚchoicerX   r[   Ú	tool_callÚtool_call_dicts	            r5   Úparse_chat_completionrg   V   sº  € õ �ÑÔð Ø.Ð. +Ð.Ñ.Ô.ˆˆàˆà35€GØ!Ô)ð 8
ñ 8
ˆØÔ 8Ò+Ð+Ý)°_ÐEÑEÔEÐEàÔÐ#3Ò3Ð3Ý0Ñ2Ô2Ð2à”.ˆà35ˆ
ØÔð 	1Ø$Ô/ð 1ð 1�	Ø”> ZÒ/Ð/Ø%.×%6Ò%6Ñ%8Ô%8�NØ×%Ò%Ý0ð#Ø"0ð#à *ð -"Ý&*­3°¸zÔ0JÑ&KÔ&Kð-"à$6Õ8UØ4?È)ÔJ\ð9&ñ 9&ô 9&ð-"ð -"ð#ð #õ #9ðñ ô ñô ð ð ð ”^ xÒ/Ð/å—K’KØYØ!œØ!Ô(Ô-Ø#$ð	  ñ ô ð ð õ #ð 1Ý  Ñ+Ô+Ð+Ð+à×%Ò% iÑ0Ô0Ð0Ð0à�ŠÝ$Ý"¥?Ô3ð
Ø—n’nÑ&Ô&ð
àð  Ø!Ÿ/š/Ñ+Ô+ð å"5Ø,;Ø$+ð#ñ #ô #ð 5?Ð&H j jÀDð ð  ð  ð
ð 
ðñ ô ñ	
ô 	
ð 	
ñ 	
õ" $Ý"¥?Ô3ð
Ø×%Ò%Ñ'Ô'ð
à�wð
ð 
ðñ ô ð r7   ú"list[ChatCompletionToolUnionParam]rE   Ústrú&ChatCompletionFunctionToolParam | Nonec                ó<   ‡— t          ˆfd„| D ¦   «         d ¦  «        S )Nc              3  óŽ   •K  — | ]?}|d          dk    ¯|                      di ¦  «                              d¦  «        ‰k    ¯;|V — Œ@dS )r0   r1   rE   Nr3   )r?   r@   rE   s     €r5   ú	<genexpr>z)get_input_tool_by_name.<locals>.<genexpr>¨   sZ   øè è € ÐqÐq�q¨1¨V¬9¸
Ò+BÐ+BÀqÇuÂuÈZÐY[ÑG\ÔG\×G`ÒG`ÐagÑGhÔGhÐlpÒGpÐGp�ÐGpÐGpÐGpÐGpÐqÐqr7   )Únext©rJ   rE   s    `r5   Úget_input_tool_by_namerp   ¥   s+   ø€ õ ÐqÐqÐqÐq˜KÐqÑqÔqÐswÑxÔxÐxr7   r1   úFunction | ParsedFunctionúobject | Nonec                ón  — t          | |j        ¬¦  «        }|sd S t          t          |                     d¦  «        ¦  «        }t          |t          ¦  «        rt          |j        |j	        ¦  «        S t          t          |¦  «        }|                     d¦  «        sd S t          j        |j	        ¦  «        S )Nro   r1   r2   )rp   rE   r   Úobjectr4   Ú
isinstancer   r   ÚmodelÚ	argumentsr$   ÚjsonÚloads)rJ   r1   Ú
input_toolÚinput_fns       r5   r`   r`   «   s¥   € õ (°KÀhÄmÐTÑTÔT€JØð Øˆtå•F˜JŸNšN¨:Ñ6Ô6Ñ7Ô7€HÝ�(Õ0Ñ1Ô1ð DÝ ¤°Ô0BÑCÔCÐCåÕ&¨Ñ1Ô1€Hà�<Š<˜Ñ!Ô!ð ØˆtåŒ:�hÔ(Ñ)Ô)Ð)r7   ú2type[ResponseFormatT] | ResponseFormatParam | OmitrX   ú;ChatCompletionMessage | ParsedChatCompletionMessage[object]úResponseFormatT | Nonec                ój   — t          | ¦  «        r#|j        r|j        st          | |j        ¦  «        S d S ©N)Úhas_rich_response_formatÚcontentÚrefusalÚ_parse_contentrY   s     r5   rc   rc   ¾   s@   € õ
   Ñ0Ô0ð @°W´_ð @ÈWÌ_ð @Ý˜o¨w¬Ñ?Ô?Ð?àˆ4r7   )rJ   ú!type | ResponseFormatParam | OmitÚboolc                óZ   — t          | ¦  «        rdS |pg D ]}t          |¦  «        r dS ŒdS )NTF)r�   Úis_parseable_tool)rH   rJ   rz   s      r5   Úhas_parseable_inputr‰   É   sP   € õ
   Ñ0Ô0ð Øˆtà!Ð' Rð ð ˆ
Ý˜ZÑ(Ô(ð 	Ø�4�4ð	ð ˆ5r7   ú TypeGuard[type[ResponseFormatT]]c                óJ   — t          | ¦  «        sdS t          | ¦  «        rdS dS )NFT)r   Úis_response_format_param©rH   s    r5   r�   r�   Ø   s3   € õ �OÑ$Ô$ð Øˆuå Ñ0Ô0ð Øˆuàˆ4r7   rt   úTypeGuard[ResponseFormatParam]c                ó    — t          | ¦  «        S r€   )r   r�   s    r5   rŒ   rŒ   ä   s   € Ý�?Ñ#Ô#Ð#r7   rz   c                óð   — | d         dk    rdS t          t          |                      d¦  «        ¦  «        }t          |t          ¦  «        rdS t          t
          |¦  «                             d¦  «        pdS )Nr0   r1   FTr2   )r   rt   r4   ru   r   r$   )rz   r{   s     r5   rˆ   rˆ   è   sn   € Ø�&Ô˜ZÒ'Ð'Øˆuå•F˜JŸNšN¨:Ñ6Ô6Ñ7Ô7€HÝ�(Õ0Ñ1Ô1ð ØˆtåÕ" HÑ-Ô-×1Ò1°(Ñ;Ô;ÐD¸uÐDr7   útype[ResponseFormatT]r‚   c                ó(  — t          | ¦  «        r#t          t          t          | |¦  «        ¦  «        S t	          | ¦  «        r@t
          rt          d| › �¦  «        ‚t          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)rH   r‚   s     r5   r„   r„   ó   s–   € Ý˜Ñ)Ô)ð QÝ•OÕ%5°oÀwÑ%OÔ%OÑPÔPÐPå˜oÑ.Ô.ð LÝð 	lÝÐjÐYhÐjÐjÑkÔkÐkåÔ# OÑ4Ô4×BÒBÀ7ÑKÔKÐKå
Ð[È/Ð[Ð[Ñ
\Ô
\Ð\r7   ú5type | completion_create_params.ResponseFormat | OmitúResponseFormatParam | Omitc                óV  — 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)ÚschemarE   r2   )r0   rš   )r   r   rŒ   r   r0   r   Ú__name__r   r”   r•   r“   r   )rH   Újson_schema_typerE   s      r5   Útype_to_response_format_paramrž      sÜ   € õ �OÑ$Ô$ð Ýˆå Ñ0Ô0ð ØÐõ
 �4 Ñ1Ô1€OàTXÐå˜Ñ)Ô)ð QØÔ'ˆØ*ÐÐÝ	 Ñ	0Ô	0ð QØÔ'ˆÝ#Ô/°Ñ@Ô@ÐÐåÐO¸oÐOÐOÑPÔPÐPð å+Ð,<Ñ=Ô=ØØð
ð 
ðð ð r7   )r,   r   r-   r.   )r8   r9   r-   r:   )rH   rI   rJ   r9   rK   rL   r-   rM   )rJ   rh   rE   ri   r-   rj   )rJ   rh   r1   rq   r-   rr   )rH   r|   rX   r}   r-   r~   )rH   r…   rJ   r9   r-   r†   )rH   r|   r-   rŠ   )rH   rt   r-   rŽ   )rz   r   r-   r†   )rH   r‘   r‚   ri   r-   r'   )rH   r—   r-   r˜   )FÚ
__future__r   rx   Ú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+   r6   rB   rG   rg   rp   r`   rc   r‰   r�   rŒ   rˆ   r„   rž   r=   r7   r5   ú<module>r±      si  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >à €€€à )Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø /Ð /Ð /Ð /Ð /Ð /Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ Xðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð SÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø XÐ XÐ XÐ XÐ XÐ XØ MÐ MÐ MÐ MÐ MÐ Mà�'Øàðñ ô €ð
 "&Ð Ð %Ð %Ð %Ñ %à'�gÔ'Ð(<Ñ=Ô=€Ð =Ð =Ð =Ñ =ð	ð 	ð 	ð 	ð <@ðIð Ið Ið Ið Ið <@ðBð Bð Bð Bð Bð*Lð Lð Lð Lð^yð yð yð yð*ð *ð *ð *ð&ð ð ð ð BFðð ð ð ð ð ð	ð 	ð 	ð 	ð$ð $ð $ð $ðEð Eð Eð Eð
]ð 
]ð 
]ð 
]ð ð  ð  ð  ð  ð  r7   