o
    r)i                     @  s"  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dZ*d1ddZ+d2d d!Z,d3d%d&Z-d4d*d+Z.d5d/d0Z/dS )6    )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                 C  s\   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_dict r+   b/var/www/html/voicebot/backend/venv/lib/python3.10/site-packages/openai/lib/_parsing/_responses.pytype_to_text_format_param&   s   


r-   text_formattype[TextFormatT] | Omitinput_tools!Iterable[ToolParam] | Omit | Noneresponse!Response | ParsedResponse[object]ParsedResponse[TextFormatT]c                 C  s  g }|j D ]}|jdkrKg }|jD ]%}|jdkr|| q|ttt i | dt|j	| did q|tt
t i | d|id q|jdkrf|tti | dt||d	id q|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s|jdks|jdks|jdks|jdks|jdkr|| qtrt| q|| qttt i | d|idS )Nmessageoutput_textparsed)r.   )r#   valuecontentfunction_callparsed_arguments)r0   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)rO   r$   r9   appendr   r   r!   to_dict
parse_texttextr   r   parse_function_tool_argumentsr   r   r   )r.   r0   r2   output_listrO   content_listitemr+   r+   r,   parse_response5   s   






	



















rX   rS   strTextFormatT | Nonec                 C  s\   t |sd S t|rttt|| S t|r'trtd| t	|
| 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)rS   r.   r+   r+   r,   rR      s   rR   Iterable[ToolParam]r(   FunctionToolParam | Nonec                 C  s0   | D ]}|d dkr| d|kr|  S qd S )Nr$   functionr(   )get)r0   r(   toolr+   r+   r,   get_input_tool_by_name   s
   rd   r:   9ParsedResponseFunctionToolCall | ResponseFunctionToolCallobjectc                 C  sf   | d u st | s
d S t| |jd}|sd S tt|}t|tr&t|j|j	S |
ds-d S t|j	S )N)r0   r(   r)   )r   rd   r(   r   rf   
isinstancer
   r   model	argumentsrb   jsonloads)r0   r:   
input_toolrc   r+   r+   r,   rT      s   


rT   )r#   r$   r%   r   )r.   r/   r0   r1   r2   r3   r%   r4   )rS   rY   r.   r/   r%   rZ   )r0   r_   r(   rY   r%   r`   )r0   r1   r:   re   r%   rf   )0
__future__r   rj   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-   rX   rR   rd   rT   r+   r+   r+   r,   <module>   s.    4


S
