
    .h                    0   d dl mZ d dlZd dlmZ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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'Z0d0d+Z1dS )1    )annotationsN)TYPE_CHECKINGAnyListIterablecast)TypeVarassert_never   )ResponsesPydanticFunctionTool   )NotGiven)is_given)PYDANTIC_V2model_parse_json)construct_type_unchecked)is_basemodel_typeis_dataclass_like_type   )solve_response_format_t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     [/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/openai/lib/_parsing/_responses.pytype_to_text_format_paramr0   &   s    8??()))))0DEE'=8888+M::::: $]3F;&}5h?	      text_formattype[TextFormatT] | NotGiveninput_tools%Iterable[ToolParam] | NotGiven | Noneresponse!Response | ParsedResponse[object]ParsedResponse[TextFormatT]c                   t          |           }g }|j        D ]}|j        dk    rg }|j        D ]}|j        dk    r|                    |           #|                    t          t          t          t                    |         i |	                                dt          |j        |           i                     |                    t          t          t          t                    |         i |	                                d|i                     |j        dk    rR|                    t          t          i |	                                dt          ||	          i                     b|j        d
k    s!|j        dk    s|j        dk    s|j        dk    r|                    |           t          rt!          |           |                    |           t          t"          t$                   t          t          t          t"                    |         i |	                                d|i                    S )Nmessageoutput_textparsed)r2   )r&   valuecontentfunction_callparsed_arguments)r4   r?   computer_callfile_search_callweb_search_call	reasoningoutput)r   rE   r'   r>   appendr   r   r   r   to_dict
parse_texttextr    r"   parse_function_tool_argumentsr   r
   r   r$   )r2   r4   r6   solved_toutput_listrE   content_listitems           r/   parse_responserO   5   s    '{33H?AK/ 1' 1';)##=?L  9-- ''---##,"3(@AA(K"llnn$j&T&T&T       (s$?@@J ..**!<       [O++(8 ..***,I(36- - -   
 
 
 
 K?**{000{///{k))v&&&& 	'    v&&&&{# sN++H5""$$+ 	
 	
 	
	 	 	r1   rI   strTextFormatT | Nonec                J   t          |          sd S t          |          r#t          t          t	          ||                     S t          |          r@t          s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)rI   r2   s     r/   rH   rH   }   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Xr1   Iterable[ToolParam]r,   FunctionToolParam | Nonec                b    | D ]+}|d         dk    r|                     d          |k    r|c S ,d S )Nr'   functionr,   )get)r4   r,   tools      r/   get_input_tool_by_namer]      sE      <:%%$((6*:*:d*B*BKKK4r1   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)r4   r,   r-   )r   r]   r,   r   r_   
isinstancer   r   model	argumentsr[   jsonloads)r4   r?   
input_toolr\   s       r/   rJ   rJ      s    
 (;"7"7t'KmFXYYYJ t
##D$566 E
M,CDDD>>(## t:m-...r1   )r&   r'   r(   r!   )r2   r3   r4   r5   r6   r7   r(   r8   )rI   rP   r2   r3   r(   rQ   )r4   rW   r,   rP   r(   rX   )r4   r5   r?   r^   r(   r_   )2
__future__r   rd   typingr   r   r   r   r   typing_extensionsr	   r
   rT   _toolsr   _typesr   _utilsr   _compatr   r   _modelsr   	_pydanticr   r   _completionsr   r   types.responsesr   r   r   r   r   r   r   r   r    r!   r"   #types.chat.completion_create_paramsr#   r$   r0   rO   rH   r]   rJ    r1   r/   <module>rt      s%   " " " " " "  ; ; ; ; ; ; ; ; ; ; ; ; ; ; 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 P P P P P P P P                          B A A A A Ag     E E E EPY Y Y Y    / / / / / /r1   