o
    iCif                     @  s*  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dZ,d1ddZ-d2d d!Z.d3d%d&Z/d4d*d+Z0d5d/d0Z1dS )6    )annotationsN)TYPE_CHECKINGAny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   )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                 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-   v/var/www/html/fyndo/python/python_agents/rag_suite/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  t | }g }|jD ]}|jdkrUg }|jD ](}|jdkr"|| q|tttt| i |	 dt
|j| did q|tttt| i |	 d|id q	|jdkrp|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r|| q	trt| q	|| q	ttt tttt| i |	 d|idS )Nmessageoutput_textparsed)r0   )r%   valuecontentfunction_callparsed_arguments)r2   r<   computer_callfile_search_callweb_search_call	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)r   rO   r&   r;   appendr   r   r   r   to_dict
parse_texttextr   r!   parse_function_tool_argumentsr   r	   r   r#   )r0   r2   r4   solved_toutput_listrO   content_listitemr-   r-   r.   parse_response5   s   






	

















rY   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   r0   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)r2   r*   toolr-   r-   r.   get_input_tool_by_name   s
   re   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)r2   r*   r+   )r   re   r*   r   rg   
isinstancer   r   model	argumentsrc   jsonloads)r2   r<   
input_toolrd   r-   r-   r.   rT      s   


rT   )r%   r&   r'   r    )r0   r1   r2   r3   r4   r5   r'   r6   )rS   rZ   r0   r1   r'   r[   )r2   r`   r*   rZ   r'   ra   )r2   r3   r<   rf   r'   rg   )2
__future__r   rk   typingr   r   r   r   r   typing_extensionsr   r	   r]   _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#   r/   rY   rR   re   rT   r-   r-   r-   r.   <module>   s.    4


U
