
    2i                    (   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.d0d+Z/dS )1    )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)defaulttype_typereturnr   c                    t          |           }t          |          sJ t          t          |          }|d         dk    sJ d|d         v sJ dd|d         d         |d         d         dS )Nr%   json_schemaschemaTname)r%   strictr*   r)   )r   r   r   r!   )r$   response_format_dicts     e/root/.openclaw/workspace/.venv-openai/lib/python3.11/site-packages/openai/lib/_parsing/_responses.pytype_to_text_format_paramr.   &   s    8??()))))0DEE'=8888+M::::: $]3F;&}5h?	      text_formattype[TextFormatT] | Omitinput_tools!Iterable[ToolParam] | Omit | Noneresponse!Response | ParsedResponse[object]ParsedResponse[TextFormatT]c                >   g }|j         D ]Z}|j        dk    rg }|j        D ]}|j        dk    r|                    |           #|                    t	          t
          t                   i |                                dt          |j	        |           i                     |                    t	          t          t                   i |                                d|i                     |j        dk    rR|                    t	          t          i |                                dt          ||	          i                     E|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    sy|j        dk    sn|j        dk    sc|j        dk    sX|j        dk    sM|j        dk    sB|j        dk    s7|j        dk    s,|j        dk    s!|j        dk    s|j        dk    s|j        dk    r|                    |           -t          rt          |           E|                    |           \t	          t          t                   i |                                d|i          S )Nmessageoutput_textparsed)r0   )r$   valuecontentfunction_callparsed_arguments)r2   r=   computer_callfile_search_callweb_search_calltool_search_calltool_search_output	reasoning
compactionmcp_callmcp_approval_requestimage_generation_callcode_interpreter_calllocal_shell_call
shell_callshell_call_outputapply_patch_callapply_patch_call_outputmcp_list_toolsexeccustom_tool_calloutput)rR   r%   r<   appendr   r   r"   to_dict
parse_texttextr   r    parse_function_tool_argumentsr   r	   r   )r0   r2   r4   output_listrR   content_listitems          r-   parse_responser[   5   s>    @BK/ @' @';)##=?L  9-- ''---##,6{C"llnn$j&T&T&T       (5kB ..**!<       [O++(8 ..***,I(36- - -   
 
 
 
 K?**{000{///{000{222{k)){l**{j(({444{555{555{000{l**{111{000{777{...{f$${000v&&&& 	'    v&&&&#[)
  
k
 
   r/   rV   strTextFormatT | Nonec                J   t          |          sd S 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   r   	TypeErrorpydanticTypeAdaptervalidate_json)rV   r0   s     r-   rU   rU      s    K   t%% FK!1+t!D!DEEEk** E 	hfYdffggg#K00>>tDDD
W+WW
X
XXr/   Iterable[ToolParam]r*   FunctionToolParam | Nonec                b    | D ]+}|d         dk    r|                     d          |k    r|c S ,d S )Nr%   functionr*   )get)r2   r*   tools      r-   get_input_tool_by_nameri      sE      <:%%$((6*:*:d*B*BKKK4r/   r=   9ParsedResponseFunctionToolCall | ResponseFunctionToolCallobjectc                D   | t          |           sd S t          | |j                  }|sd S t          t          |          }t          |t                    rt          |j        |j	                  S |
                    d          sd S t          j        |j	                  S )N)r2   r*   r+   )r   ri   r*   r   rk   
isinstancer   r   model	argumentsrg   jsonloads)r2   r=   
input_toolrh   s       r-   rW   rW      s    
 (;"7"7t'KmFXYYYJ t
##D$566 E
M,CDDD>>(## t:m-...r/   )r$   r%   r&   r   )r0   r1   r2   r3   r4   r5   r&   r6   )rV   r\   r0   r1   r&   r]   )r2   rc   r*   r\   r&   rd   )r2   r3   r=   rj   r&   rk   )0
__future__r   rp   typingr   r   r   r   typing_extensionsr   r	   r`   _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[   rU   ri   rW    r/   r-   <module>r      s   " " " " " "  6 6 6 6 6 6 6 6 6 6 6 6 3 3 3 3 3 3 3 3  2 2 2 2 2 2             4 4 4 4 4 4 4 4 / / / / / / A A A A A A A A 7 7 7 7 7 7                          B A A A A Ag     P P P PfY Y Y Y    / / / / / /r/   