
    	h)                       U d dl mZ d dlZd dlZd dlmZmZmZmZ d dl	m
Z
mZmZ d dl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 ddlmZ ddlmZ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) ddl*m+Z+m,Z, ddl-m.Z. ddl/m0Z1 ddl2m3Z3  e
dd          Z4dZ5de6d<    ej7        d          Z8de6d<   dJdZ9efdKd!Z:efdKd"Z;dLd)Z<dMd.Z=dNd2Z>dOd7Z?dPd9Z@ed:dQd=ZAdRd?ZBdSdBZCdTdDZDdUdFZEdVdIZFdS )W    )annotationsN)TYPE_CHECKINGAnyIterablecast)TypeVar	TypeGuardassert_never   )PydanticFunctionTool   )	NOT_GIVENNotGiven)is_dictis_given)PYDANTIC_V1model_parse_json)construct_type_unchecked)is_basemodel_typeto_strict_json_schemais_dataclass_like_type)
ParsedChoiceChatCompletionParsedFunctionParsedChatCompletionChatCompletionMessageParsedFunctionToolCallParsedChatCompletionMessageChatCompletionToolUnionParamChatCompletionFunctionToolParamcompletion_create_params)LengthFinishReasonErrorContentFilterFinishReasonError)FunctionDefinition)ResponseFormat)FunctionResponseFormatT)defaultNone_default_response_formatzopenai.lib.parsingzlogging.Loggerlogtoolr   return*TypeGuard[ChatCompletionFunctionToolParam]c                `    | d         dk    sdS | d                              d          durdS dS )zDCheck if the given tool is a strict ChatCompletionFunctionToolParam.typefunctionFstrictTget)r,   s    m/var/www/html/web-builder-api.evdpl.com/venv/lib/python3.11/site-packages/openai/lib/_parsing/_completions.py$is_strict_chat_completion_tool_paramr6   +   s@     <:%%uJH%%T11u4    tools1Iterable[ChatCompletionToolUnionParam] | NotGiven4Iterable[ChatCompletionFunctionToolParam] | NotGivenc                F    t          |           st          S d | D             S )zMSelect only the strict ChatCompletionFunctionToolParams from the given tools.c                0    g | ]}t          |          |S  )r6   .0ts     r5   
<listcomp>z7select_strict_chat_completion_tools.<locals>.<listcomp>>   s&    HHH! DQ G GHAHHHr7   )r   r   )r8   s    r5   #select_strict_chat_completion_toolsrB   7   s,     E?? HHuHHHHr7   c                >   t          |           st          S | D ]e}|d         dk    rt          d|d          d          |d                             d          }|durt          d|d         d          d          ft	          t
          t                   |           S )	Nr0   r1   zECurrently only `function` tool types support auto-parsing; Received ``r2   Tnamez@` is not strict. Only `strict` function tools can be auto-parsed)r   r   
ValueErrorr4   r   r   r    )r8   r,   r2   s      r5   validate_input_toolsrG   A   s     E??  
 
<:%%gX\]cXdggg   j!%%h//nD$V,nnn   
 895AAAr7   response_formatJtype[ResponseFormatT] | completion_create_params.ResponseFormat | NotGiveninput_toolschat_completion-ChatCompletion | ParsedChatCompletion[object]%ParsedChatCompletion[ResponseFormatT]c                   t          |          rd |D             }ng }g }|j        D ]}|j        dk    rt          |          |j        dk    rt	                      |j        }g }|j        r|j        D ]}|j        dk    rw|                                }|	                    t          i |di t          t          |d                   dt          ||j                  iit                               |j        d	k    r.t                               d
|j        |j        j        d           t*          rt-          |           |	                    |           |	                    t          t          t          t.                    t1          |                    i |                                di |                                t3          | |          |r|nd di                     t          t4          t6                   t          t          t          t4                    t1          |                    i |                                d|i                    S )Nc                    g | ]}|S r=   r=   r>   s     r5   rA   z)parse_chat_completion.<locals>.<listcomp>]   s    ...Qq...r7   length)
completioncontent_filterr1   parsed_arguments)rJ   r1   )valuetype_customz?Custom tool calls are not callable. Ignoring tool call: %s - %sr   )
stacklevelmessagerH   rX   )parsed
tool_calls)rU   rT   choices)r   r\   finish_reasonr"   r#   rX   r[   r0   to_dictappendr   r   r   parse_function_tool_argumentsr1   r   r+   warningidrV   rE   r   r
   r   solve_response_format_tmaybe_parse_contentr   r'   )	rH   rJ   rK   r\   choicerX   r[   	tool_calltool_call_dicts	            r5   parse_chat_completionrh   V   s     ..+...35G!) 8
 8
8++)_EEEE#3330222.35
 	1$/ 1 1	>Z//%.%6%6%8%8N%%0#"0# * -"&*3z0J&K&K-"$68U4?)J\9& 9& 9&-" -"# # #9      ^x//KKY!!(-#$	       # 1 ++++%%i0000$3--.Eo.V.VW
nn&&
  !//++ "5,;$+# # # 5?&HjjD     
 
  	
 	
 	
 	
" _- s0112I/2Z2Z[!))++7 	
 	
 	
	 	 	r7   "list[ChatCompletionToolUnionParam]rE   str&ChatCompletionFunctionToolParam | Nonec                <    t          fd| D             d           S )Nc              3     K   | ]?}|d          dk    |                     di                                d          k    ;|V  @dS )r0   r1   rE   Nr3   )r?   r@   rE   s     r5   	<genexpr>z)get_input_tool_by_name.<locals>.<genexpr>   sZ      qqq1V9
+B+BquuZY[G\G\G`G`agGhGhlpGpGpGpGpGpGpqqr7   )nextrJ   rE   s    `r5   get_input_tool_by_namerq      s+     qqqqKqqqswxxxr7   r1   Function | ParsedFunctionobject | Nonec                n   t          | |j                  }|sd S t          t          |                    d                    }t          |t                    rt          |j        |j	                  S t          t          |          }|                    d          sd S t          j        |j	                  S )Nrp   r1   r2   )rq   rE   r   objectr4   
isinstancer   r   model	argumentsr$   jsonloads)rJ   r1   
input_toolinput_fns       r5   r`   r`      s     (KhmTTTJ tFJNN:6677H(011 D0BCCC&11H<<!! t:h()))r7   6type[ResponseFormatT] | ResponseFormatParam | NotGivenrX   ;ChatCompletionMessage | ParsedChatCompletionMessage[object]ResponseFormatT | Nonec                j    t          |           r#|j        r|j        st          | |j                  S d S N)has_rich_response_formatcontentrefusal_parse_contentrY   s     r5   rd   rd      s@    
  00 @W_ @W_ @ow???4r7   type[ResponseFormatT]c                N    t          |           r| S t          dt                    S )zReturn the runtime type for the given response format.

    If no response format is given, or if we won't auto-parse the response format
    then we default to `None`.
    r   )r   r   r*   rH   s    r5   rc   rc      s,      00 ')ABBBr7   )rJ   %type | ResponseFormatParam | NotGivenboolc                Z    t          |           rdS |pg D ]}t          |          r dS dS )NTF)r   is_parseable_tool)rH   rJ   r{   s      r5   has_parseable_inputr      sP    
  00 t!'R  
Z(( 	44	 5r7    TypeGuard[type[ResponseFormatT]]c                J    t          |           sdS t          |           rdS dS )NFT)r   is_response_format_paramr   s    r5   r   r      s3     O$$ u00 u4r7   ru   TypeGuard[ResponseFormatParam]c                     t          |           S r   )r   r   s    r5   r   r      s    ?###r7   r{   c                    | d         dk    rdS t          t          |                     d                    }t          |t                    rdS t          t
          |                              d          pdS )Nr0   r1   FTr2   )r   ru   r4   rv   r   r$   )r{   r|   s     r5   r   r      sn    &Z''uFJNN:6677H(011 t"H--11(;;DuDr7   r   c                (   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   	TypeErrorpydanticTypeAdaptervalidate_json)rH   r   s     r5   r   r     s    )) QO%5ow%O%OPPPo.. L 	ljYhjjkkk#O44BB7KKK
[/[[
\
\\r7   9type | completion_create_params.ResponseFormat | NotGivenResponseFormatParam | NotGivenc                V   t          |           st          S t          |           r| S t          t          |           } d }t          |           r
| j        }| }n=t          |           r| j        }t          j	        |           }nt          d|            dt          |          |dddS )Nz#Unsupported response_format type - json_schemaT)schemarE   r2   )r0   r   )r   r   r   r   r0   r   __name__r   r   r   r   r   )rH   json_schema_typerE   s      r5   type_to_response_format_paramr     s     O$$ 00 
 411OTX)) Q'*		0	0 Q'#/@@OoOOPPP +,<==
 
  r7   )r,   r   r-   r.   )r8   r9   r-   r:   )rH   rI   rJ   r9   rK   rL   r-   rM   )rJ   ri   rE   rj   r-   rk   )rJ   ri   r1   rr   r-   rs   )rH   r}   rX   r~   r-   r   )rH   r}   r-   r   )rH   r   rJ   r9   r-   r   )rH   r}   r-   r   )rH   ru   r-   r   )r{   r   r-   r   )rH   r   r   rj   r-   r'   )rH   r   r-   r   )G
__future__r   ry   loggingtypingr   r   r   r   typing_extensionsr   r	   r
   r   _toolsr   _typesr   r   _utilsr   r   _compatr   r   _modelsr   	_pydanticr   r   r   
types.chatr   r   r   r   r   r   r   r   r    r!   _exceptionsr"   r#   types.shared_paramsr$   #types.chat.completion_create_paramsr%   ResponseFormatParam5types.chat.chat_completion_message_function_tool_callr&   r'   r*   __annotations__	getLoggerr+   r6   rB   rG   rh   rq   r`   rd   rc   r   r   r   r   r   r   r=   r7   r5   <module>r      s   " " " " " " "   5 5 5 5 5 5 5 5 5 5 5 5 > > > > > > > > > >  ) ) ) ) ) ) ) ) ) ) ) ) ) ) ' ' ' ' ' ' ' ' 4 4 4 4 4 4 4 4 / / / / / / X X X X X X X X X X                        S R R R R R R R 5 5 5 5 5 5 X X X X X X M M M M M M'  
 "&  % % % %'g'(<== = = = =	 	 	 	 @II I I I I @IB B B B B*O O O Ody y y y* * * *&   C C C C" FO     	 	 	 	$ $ $ $E E E E
] 
] 
] 
]           r7   