
    Oj                    <   d dl mZ d dlZd dlmZmZmZmZ d dlm	Z	m
Z
 d dl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mZ ddl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&m'Z' ddl(m)Z)  e	dd      Z*ddZ+	 	 	 	 	 	 	 	 ddZ,ddZ-ddZ.	 	 	 	 	 	 ddZ/y)    )annotationsN)TYPE_CHECKINGListIterablecast)TypeVarassert_never   )ResponsesPydanticFunctionTool   )Omit)is_given)PYDANTIC_V1model_parse_json)construct_type_unchecked)is_basemodel_typeis_dataclass_like_type   )type_to_response_format_param)Response	ToolParamParsedContentParsedResponseFunctionToolParamParsedResponseOutputItemParsedResponseOutputTextResponseFunctionToolCallParsedResponseOutputMessageResponseFormatTextConfigParamParsedResponseFunctionToolCall)ResponseFormatTextFormatT)defaultc                    t        |       }t        |      sJ t        t        |      }|d   dk(  sJ d|d   v sJ dd|d   d   |d   d   dS )Ntypejson_schemaschemaTname)r%   strictr(   r'   )r   r   r   r!   )type_response_format_dicts     u/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/openai/lib/_parsing/_responses.pytype_to_text_format_paramr-   &   s}    8?()))0DE'=888+M:::: $]3F;&}5h?	     c                   g }|j                   xs g D ]  }|j                  dk(  rg }|j                  xs g D ]  }|j                  dk7  r|j                  |       $|j                  t	        t        dt              i |j                         dt        |j                  | |j                        i              |j                  t	        t        dt              i |j                         d|i             |j                  d	k(  rA|j                  t	        t        i |j                         d
t        ||      i             8|j                  dk(  s|j                  dk(  s~|j                  dk(  sn|j                  dk(  s^|j                  dk(  sN|j                  dk(  s>|j                  dk(  s.|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  sx|j                  dk(  si|j                  d k(  sZ|j                  d!k(  sK|j                  d"k(  s<|j                  d#k(  s-|j                  d$k(  s|j                  d%k(  s|j                  d&k(  r|j                  |       t        rt        |       |j                  |        t	        t        d't               i |j                         d(|i      S ))Nmessageoutput_textz+type[ParsedResponseOutputText[TextFormatT]]parsed)text_formatphase)r*   valuez.type[ParsedResponseOutputMessage[TextFormatT]]contentfunction_callparsed_arguments)input_toolsr7   computer_callfile_search_callweb_search_calltool_search_calltool_search_outputadditional_tools	reasoningprogramprogram_output
compactionmcp_callmcp_approval_requestmcp_approval_responseimage_generation_callcode_interpreter_calllocal_shell_calllocal_shell_call_output
shell_callshell_call_outputapply_patch_callapply_patch_call_outputmcp_list_toolsexeccustom_tool_callfunction_call_outputcomputer_call_outputcustom_tool_call_outputz!type[ParsedResponse[TextFormatT]]output)rU   r%   r6   appendr   r   r   to_dict
parse_texttextr4   r   r    parse_function_tool_argumentsr   r	   r   )r3   r9   responseoutput_listrU   content_listitems          r,   parse_responser_   5   s    @BK//'R H';;)#=?L," 99- ''-##,"#PRjk"lln$j[a[g[g&h (OQlm ..*!< [[O+(8 ..**,I(36-
 KK?*{{00{{//{{00{{22{{00{{k){{i'{{..{{l*{{j({{44{{55{{55{{55{{00{{77{{l*{{11{{00{{77{{..{{f${{00{{44{{44{{77v& v&QH'T $6G
 
k
 r.   c                  ||dk7  ryt        |      syt        |      rt        t        t	        ||             S t        |      r8t        rt        d|       t        j                  |      j                  |       S t        d|       )a=  Parse final-answer text, retaining legacy behavior for messages without a phase.

    Explicit phases other than `final_answer` are not structured results. Leave
    their text unparsed, including phases introduced by future API versions.
    Both completed responses and streamed text-done events use this rule.
    Nfinal_answerz:Non BaseModel types are only supported with Pydantic v2 - z3Unable to automatically parse response format type )r   r   r   r"   r   r   r   	TypeErrorpydanticTypeAdaptervalidate_json)rY   r3   r4   s      r,   rX   rX      s     Un4K %K!1+t!DEEk*XYdXefgg##K0>>tDD
I+W
XXr.   c                T    | D ]#  }|d   dk(  s|j                  d      |k(  s!|c S  y )Nr%   functionr(   )get)r9   r(   tools      r,   get_input_tool_by_namerj      s7     <:%$((6*:d*BK r.   c                4   | t        |       sy t        | |j                        }|sy t        t        |      }t        |t              r t        |j                  |j                        S |j                  d      sy t        j                  |j                        S )N)r9   r(   r)   )r   rj   r(   r   object
isinstancer   r   model	argumentsrh   jsonloads)r9   r7   
input_toolri   s       r,   rZ   rZ      s~    
 (;"7'KmFXFXYJ
#D$56

M,C,CDD>>(#::m--..r.   )r*   r%   returnr   )r3   type[TextFormatT] | Omitr9   !Iterable[ToolParam] | Omit | Noner[   z!Response | ParsedResponse[object]rs   zParsedResponse[TextFormatT])rY   strr3   rt   r4   z
str | Noners   zTextFormatT | None)r9   zIterable[ToolParam]r(   rv   rs   zFunctionToolParam | None)r9   ru   r7   z9ParsedResponseFunctionToolCall | ResponseFunctionToolCallrs   rl   )0
__future__r   rp   typingr   r   r   r   typing_extensionsr   r	   rc   _toolsr   _typesr   _utilsr   _compatr   r   _modelsr   	_pydanticr   r   _completionsr   types.responsesr   r   r   r   r   r   r   r   r   r   r    #types.chat.completion_create_paramsr!   r"   r-   r_   rX   rj   rZ    r.   r,   <module>r      s    "  6 6 3  2   4 / A 7    BZ)Z 3Z 0	Z
 !ZzY2/2/ M/ 	/r.   