Ë
    uPêj@¾ ã                   óŠ  — U d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
Z
mZmZmZmZmZ d dlmZ d dlZe
r
d dlZd dlmZ d dlZd dlmZmZ d dlmZ d dlmZ d d	lmZ d d
l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( d dl)m*Z+ d dl,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z; d dl<m=Z=m>Z>m?Z? ddl@­ ddlAmBZB ddlCmDZD ddlEmFZF ddlGmHZHmIZImJZJmKZKmLZL  eF«       ZMeeNd<    eD«       ZOeeNd<    G d „ d!«      ZP G d"„ d#e2«      ZQ G d$„ d%e0«      ZR G d&„ d'eBeH«      ZS G d(„ d)eB«      ZT G d*„ d+eB«      ZU G d,„ d-eB«      ZVy).é    N)ÚAsyncIteratorÚCallableÚ	CoroutineÚIterableÚIteratorÚMapping)ÚTYPE_CHECKINGÚAnyÚFinalÚLiteralÚOptionalÚcast)Úurlparse)ÚClientSession)ÚAsyncOpenAIÚOpenAI)ÚAssistantDeleted)ÚFileDeleted)Ú	BaseModel)Úoverload)ÚLlmProviders©Úverbose_logger)ÚDEFAULT_MAX_RETRIES)ÚFileContentStreamingResult)ÚLogging)Úspeech_request_bodyÚtrack_llm_api_timing)ÚBaseModelResponseIterator)Ú
BaseConfigÚBaseLLMException)ÚMockResponseIterator)ÚEmbeddingResponseÚImageResponseÚLiteLLMBatchÚModelResponseÚModelResponseStream)ÚCustomStreamWrapperÚProviderConfigManagerÚ convert_to_model_response_objecté   )Ú*é   )ÚBaseLLMé   )ÚOpenAIGPT5Config)ÚOpenAIOSeriesConfig)ÚBaseOpenAILLMÚOpenAIErrorÚ!build_output_token_limit_responseÚ+drop_params_from_unprocessable_entity_errorÚis_output_token_limit_errorÚopenaiOSeriesConfigÚopenAIGPT5Configc                   óB   — e Zd ZdZ	 	 d	d„Zed„ «       Zd„ Zdedefd„Z	y)
ÚMistralEmbeddingConfigzK
    Reference: https://docs.mistral.ai/api/#operation/createEmbedding
    Nc                 ó¤   — t        «       j                  «       }|j                  «       D ]%  \  }}|dk7  sŒ|€Œt        | j                  ||«       Œ' y ©NÚself©ÚlocalsÚcopyÚitemsÚsetattrÚ	__class__)r=   Úlocals_ÚkeyÚvalues       ú_/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/openai/openai.pyÚ__init__zMistralEmbeddingConfig.__init__@   sF   € ô 06«x¯}©}«ˆØ!Ÿ-™-›/ò 	4‰JˆC�Ø�f‹} Ñ!2Ü˜Ÿ™¨¨UÕ3ñ	4ó    c                 óü   — | j                   }|j                  «       D ��ci c]O  \  }}|j                  d«      s9t        |t        j
                  t        j                  t        t        f«      s|�||“ŒQ c}}S c c}}w )NÚ__)	Ú__dict__rA   Ú
startswithÚ
isinstanceÚtypesÚFunctionTypeÚBuiltinFunctionTypeÚclassmethodÚstaticmethod)ÚclsÚconfig_attrsÚkÚvs       rG   Ú
get_configz!MistralEmbeddingConfig.get_configH   sy   € à47·L±Lˆð %×*Ñ*Ó,÷
á��1Ø—<‘< Ô%ÜØä×&Ñ&Ü×-Ñ-ÜÜ ð	ôð �ð ˆq‰Dó
ð 	
ùó 
s    AA8c                 ó   — dgS ©NÚencoding_format© ©r=   s    rG   Úget_supported_openai_paramsz2MistralEmbeddingConfig.get_supported_openai_params[   s   € àð
ð 	
rI   Únon_default_paramsÚoptional_paramsc                 óL   — |j                  «       D ]  \  }}|dk(  sŒ||d<   Œ |S rZ   )rA   )r=   r_   r`   ÚparamrF   s        rG   Úmap_openai_paramsz(MistralEmbeddingConfig.map_openai_params`   s:   € Ø.×4Ñ4Ó6ò 	;‰LˆE�5ØÐ)Ó)Ø5:�Ð 1Ò2ð	;ð ÐrI   ©ÚreturnN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__rH   rR   rX   r^   Údictrc   r\   rI   rG   r:   r:   ;   s@   „ ñð4à	ó4ð ñ
ó ð
ò$
ð
°Dð È4ô rI   r:   c                   ón  ‡ — e Zd ZU dZdZedz  ed<   dZee	z  dz  ed<   dZ
edz  ed<   dZe	dz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed	<   dZedz  ed
<   dZeez  dz  ed<   dZedz  ed<   dZedz  ed<   dZe	dz  ed<   	 	 	 	 	 	 	 	 	 	 	 	 d0dedz  dee	z  dz  dedz  de	dz  dedz  dedz  d	edz  d
edz  deez  dz  dedz  dedz  de	dz  ddfd„Zeˆ fd„«       Zdedefd„Zde	de	dede	fd„Zdee   dedee   fd„Zde	de	dedede	f
d„Zdedede	ej>                  z  de fd„Z!dedee   de	de	de	de	fd „Z"	 	 d1ded!ejF                  d"e$d#e%d$e	dee   de	de	d%d&d'edz  d(edz  de$fd)„Z&	 	 d1de	dedee   de	de	d'edz  d*edz  de	fd+„Z'	 d2d,e(e   e)e   z  e$z  d-ed(edz  dd.fd/„Z*ˆ xZ+S )3ÚOpenAIConfiga?  
    Reference: https://platform.openai.com/docs/api-reference/chat/create

    The class `OpenAIConfig` provides configuration for the OpenAI's Chat API interface. Below are the parameters:

    - `frequency_penalty` (number or null): Defaults to 0. Allows a value between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, thereby minimizing repetition.

    - `function_call` (string or object): This optional parameter controls how the model calls functions.

    - `functions` (array): An optional parameter. It is a list of functions for which the model may generate JSON inputs.

    - `logit_bias` (map): This optional parameter modifies the likelihood of specified tokens appearing in the completion.

    - `max_tokens` (integer or null): This optional parameter helps to set the maximum number of tokens to generate in the chat completion. OpenAI has now deprecated in favor of max_completion_tokens, and is not compatible with o1 series models.

    - `max_completion_tokens` (integer or null): An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens.

    - `n` (integer or null): This optional parameter helps to set how many chat completion choices to generate for each input message.

    - `presence_penalty` (number or null): Defaults to 0. It penalizes new tokens based on if they appear in the text so far, hence increasing the model's likelihood to talk about new topics.

    - `stop` (string / array / null): Specifies up to 4 sequences where the API will stop generating further tokens.

    - `temperature` (number or null): Defines the sampling temperature to use, varying between 0 and 2.

    - `top_p` (number or null): An alternative to sampling with temperature, used for nucleus sampling.
    NÚfrequency_penaltyÚfunction_callÚ	functionsÚ
logit_biasÚmax_completion_tokensÚ
max_tokensÚnÚpresence_penaltyÚstopÚtemperatureÚtop_pÚresponse_formatre   c                 ó¤   — t        «       j                  «       }|j                  «       D ]%  \  }}|dk7  sŒ|€Œt        | j                  ||«       Œ' y r<   r>   )r=   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   rD   rE   rF   s                   rG   rH   zOpenAIConfig.__init__‘   sF   € ô 06«x¯}©}«ˆØ!Ÿ-™-›/ò 	4‰JˆC�Ø�f‹} Ñ!2Ü˜Ÿ™¨¨UÕ3ñ	4rI   c                 ó    •— t         ‰| �  «       S ©N)ÚsuperrX   )rT   rC   s    €rG   rX   zOpenAIConfig.get_config¥   s   ø€ ä‰wÑ!Ó#Ð#rI   Úmodelc                 ór  — t         j                  |¬«      rt         j                  |¬«      S t        j	                  |¬«      rt        j                  |¬«      S t
        j                  j                  |¬«      r t
        j                  j                  |¬«      S t
        j                  j                  |¬«      S )a�  
        This function returns the list
        of supported openai parameters for a given OpenAI Model

        - If O1 model, returns O1 supported params
        - If gpt-audio model, returns gpt-audio supported params
        - Else, returns gpt supported params

        Args:
            model (str): OpenAI model

        Returns:
            list: List of supported openai parameters
        ©r}   )	r7   Úis_model_o_series_modelr^   r8   Úis_model_gpt_5_modelÚlitellmÚopenAIGPTAudioConfigÚis_model_gpt_audio_modelÚopenAIGPTConfig)r=   r}   s     rG   r^   z(OpenAIConfig.get_supported_openai_params©   sš   € ô ×6Ñ6¸UÐ6ÔCÜ&×BÑBÈÐBÓOÐOÜ×2Ñ2¸Ð2Ô?Ü#×?Ñ?ÀeÐ?ÓLÐLÜ×)Ñ)×BÑBÈÐBÔOÜ×/Ñ/×KÑKÐRWÐKÓXÐXä×*Ñ*×FÑFÈUÐFÓSÐSrI   r_   r`   c                 ól   — | j                  |«      }|j                  «       D ]  \  }}||v sŒ|||<   Œ |S r{   )r^   rA   )r=   r_   r`   r}   Úsupported_openai_paramsrb   rF   s          rG   Ú_map_openai_paramszOpenAIConfig._map_openai_paramsÁ   sJ   € Ø)-×)IÑ)IÈ%Ó)PÐØ.×4Ñ4Ó6ò 	/‰LˆE�5ØÐ/Ò/Ø).� Ò&ð	/ð ÐrI   Úmessagesc                 ó   — |S r{   r\   )r=   r‰   r}   s      rG   Ú_transform_messagesz OpenAIConfig._transform_messagesÈ   s   € ØˆrI   Údrop_paramsc                 óŠ  — t         j                  |¬«      rt         j                  ||||¬«      S t        j	                  |¬«      rt        j                  ||||¬«      S t
        j                  j                  |¬«      r#t
        j                  j                  ||||¬«      S t
        j                  j                  ||||¬«      S )ú r   )r_   r`   r}   rŒ   )	r7   r€   rc   r8   r�   r‚   rƒ   r„   r…   )r=   r_   r`   r}   rŒ   s        rG   rc   zOpenAIConfig.map_openai_paramsË   sà   € ô ×6Ñ6¸UÐ6ÔCÜ&×8Ñ8Ø#5Ø /ØØ'ð	 9ó ð ô ×2Ñ2¸Ð2Ô?Ü#×5Ñ5Ø#5Ø /ØØ'ð	 6ó ð ô ×)Ñ)×BÑBÈÐBÔOÜ×/Ñ/×AÑAØ#5Ø /ØØ'ð	 Bó ð ô ×&Ñ&×8Ñ8Ø1Ø+ØØ#ð	 9ó 
ð 	
rI   Úerror_messageÚstatus_codeÚheadersc                 ó   — t        |||¬«      S )N©r�   Úmessager‘   )r3   )r=   r�   r�   r‘   s       rG   Úget_error_classzOpenAIConfig.get_error_classð   s   € ÜØ#Ø!Øô
ð 	
rI   Úlitellm_paramsc                 ó6   — | j                  ||¬«      }||dœ|¥S )N)r‰   r}   )r}   r‰   )r‹   )r=   r}   r‰   r`   r–   r‘   s         rG   Útransform_requestzOpenAIConfig.transform_request÷   s)   € ð ×+Ñ+°XÀUÐ+ÓKˆØ¨HÑH¸ÐHÐHrI   Úraw_responseÚmodel_responseÚlogging_objÚrequest_dataÚencodingztiktoken.Encoding | NoneÚapi_keyÚ	json_modec                 ó  — |j                  |j                  ¬«       |j                  |j                  d<   t	        t
        t        |j                  «       |d|j                  it        |j                  «      ¬«      «      }|S )N)Úoriginal_responseÚresponse_headersr‘   ©Úresponse_objectÚmodel_response_objectÚhidden_paramsÚ_response_headers)	Ú	post_callÚtextr‘   Úmodel_call_detailsr   r&   r*   Újsonrj   )r=   r}   r™   rš   r›   rœ   r‰   r`   r–   r�   rž   rŸ   Úfinal_response_objs                rG   Útransform_responsezOpenAIConfig.transform_response  s{   € ð 	×Ñ°×0AÑ0AÐÔBØ=I×=QÑ=Qˆ×&Ñ&Ð'9Ñ:Ü$(ÜÜ,Ø ,× 1Ñ 1Ó 3Ø&4Ø(¨,×*>Ñ*>Ð?Ü"& |×';Ñ';Ó"<ô	ó%
Ðð "Ð!rI   Úapi_basec                 ó   — dd|› �i|¥S )NÚAuthorizationúBearer r\   )r=   r‘   r}   r‰   r`   r–   rž   r®   s           rG   Úvalidate_environmentz!OpenAIConfig.validate_environment  s"   € ð ˜w w iÐ0ð
àð
ð 	
rI   Ústreaming_responseÚsync_streamÚ$OpenAIChatCompletionResponseIteratorc                 ó   — t        |||¬«      S )N)r³   r´   rŸ   )rµ   )r=   r³   r´   rŸ   s       rG   Úget_model_response_iteratorz(OpenAIConfig.get_model_response_iterator-  s   € ô 4Ø1Ø#Øô
ð 	
rI   )NNNNNNNNNNNN©NN)F),rf   rg   rh   ri   rm   ÚintÚ__annotations__rn   Ústrrj   ro   Úlistrp   rq   rr   rs   rt   ru   rv   rw   rx   rH   rR   rX   r^   rˆ   ÚAllMessageValuesr‹   Úboolrc   ÚhttpxÚHeadersr!   r•   r˜   ÚResponser&   ÚLiteLLMLoggingObjr­   r²   r   r   r·   Ú__classcell__©rC   s   @rG   rl   rl   g   s  ø… ñð8 %)Ð�s˜T‘zÓ(Ø'+€M�3˜‘: Ñ$Ó+Ø!€Iˆt�d‰{Ó!Ø"€J��t‘Ó"Ø(,Ð˜3 ™:Ó,Ø!€J��d‘
Ó!Ø€A€sˆT�zÓØ#'Ð�c˜D‘jÓ'Ø"€Dˆ#�‰*�tÑ
Ó"Ø"€K��t‘Ó"Ø€Eˆ3�‰:ÓØ#'€O�T˜D‘[Ó'ð )-Ø+/Ø!%Ø"&Ø,0Ø!%ØØ'+Ø"&Ø"&Ø Ø'+ñ4à ™:ð4ð ˜T‘z DÑ(ð4ð ˜$‘;ð	4ð
 ˜4‘Kð4ð  # T™zð4ð ˜$‘Jð4ð �‰:ð4ð  ™*ð4ð �D‰j˜4Ñð4ð ˜4‘Zð4ð �T‰zð4ð  ™ð4ð 
ó4ð( ó$ó ð$ðT°ð T¸ó Tð0°Tð ÈDð ÐY\ð Ðaeó ð¨DÐ1AÑ,Bð È3ð ÐSWÐXhÑSió ð#
à ð#
ð ð#
ð ð	#
ð
 ð#
ð 
ó#
ðJ
¨Sð 
¸sð 
ÈTÐTY×TaÑTaÑMað 
Ðfvó 
ð	Iàð	Ið Ð'Ñ(ð	Ið ð		Ið
 ð	Ið ð	Ið 
ó	Ið, #Ø!%ñ"àð"ð —n‘nð"ð &ð	"ð
 'ð"ð ð"ð Ð'Ñ(ð"ð ð"ð ð"ð -ð"ð �t‘ð"ð ˜$‘;ð"ð 
ó"ðF #Ø#ñ
àð
ð ð
ð Ð'Ñ(ð	
ð
 ð
ð ð
ð �t‘ð
ð ˜‘*ð
ð 
ó
ð& "'ñ	

à$ S™M¨M¸#Ñ,>Ñ>ÀÑNð

ð ð

ð ˜$‘;ð	

ð
 
0÷

rI   rl   c                   ó   — e Zd Zdedefd„Zy)rµ   Úchunkre   c                 ó@   — 	 t        di |¤ŽS # t        $ r}|‚d}~ww xY w)a  
        {'choices': [{'delta': {'content': '', 'role': 'assistant'}, 'finish_reason': None, 'index': 0, 'logprobs': None}], 'created': 1735763082, 'id': 'a83a2b0fbfaf4aab9c2c93cb8ba346d7', 'model': 'mistral-large', 'object': 'chat.completion.chunk'}
        Nr\   )r'   Ú	Exception)r=   rÆ   Úes      rG   Úchunk_parserz1OpenAIChatCompletionResponseIterator.chunk_parser;  s*   € ð	Ü&Ñ/¨Ñ/Ð/øÜò 	ØˆGûð	ús   ‚
 �	–˜N)rf   rg   rh   rj   r'   rÊ   r\   rI   rG   rµ   rµ   :  s   „ ð $ð Ð+>ô rI   rµ   c            *       ó®  ‡ — e Zd Zd=ˆ fd„Z	 	 d>deez  dedz  dedz  fd„Zddd e	j                  d«      edddfded	edz  d
edz  dedz  dee	j                  z  dedz  dedz  deez  dz  ded   deez  dz  fd„Z e«       dededee	j                  z  dedeeef   f
d„«       Z e«       dededee	j                  z  dedeeef   f
d„«       Zdededee   dedededededz  fd„Z	 d?dededededz  def
d„Zdddddddddddi dddddfd edee	j                  z  dededededz  dedz  d!edz  d	edz  d
edz  dedz  d"edz  d#edz  d$ed%edz  d&ededz  d'edz  d(edz  ded   f(ˆ fd)„Z	 	 	 	 	 	 	 	 	 	 	 d@dededed*eded ededee	j                  z  d	edz  d
edz  dedz  dedz  d(edz  dedz  d+eded   f d,„Z 	 	 	 	 	 	 	 	 dAdee	j                  z  deded	edz  d
edz  dedz  dedz  dedz  fd-„Z!	 	 	 	 	 	 	 	 	 	 dBdee	j                  z  dededed*ededed	edz  d
edz  dedz  dedz  d(edz  dedz  ded   fd.„Z"dedz  d
edz  defd/„Z# e«       dededee	j                  z  defd0„«       Z$ e«       dededee	j                  z  defd1„«       Z%	 	 	 	 	 dCd2eded e&deded	edz  d
edz  dedz  ded   fd3„Z'	 	 	 	 	 	 dDded2eded e&ded	edz  d
edz  dedz  ded   de&fˆ fd4„Z(	 	 	 	 	 	 dDd5eded ededed	edz  d
edz  dedz  d%edz  fd6„Z)	 	 	 	 	 	 	 dEdedz  d5edededed	edz  d
edz  d e*dz  dedz  d%edz  de*fd7„Z+	 	 	 dFded2ed8eded	edz  d
edz  dedz  d9edz  dedee	j                  z  ded:edz  ded   de,fd;„Z-	 	 d>ded2ed8eded	edz  d
edz  dedz  d9edz  dedee	j                  z  deded   de,fd<„Z.ˆ xZ/S )GÚOpenAIChatCompletionre   Nc                 ó"   •— t         ‰| �  «        y r{   ©r|   rH   ©r=   rC   s    €rG   rH   zOpenAIChatCompletion.__init__F  ó   ø€ Ü‰ÑÕrI   ÚclientÚorganizationÚmax_retriesc                 ó*   — |�||_         |�||_        y y r{   )rÒ   rÓ   )r=   rÑ   rÒ   rÓ   s       rG   Ú_set_dynamic_params_on_clientz2OpenAIChatCompletion._set_dynamic_params_on_clientI  s%   € ð Ð#Ø".ˆFÔØÐ"Ø!,ˆFÕð #rI   Úis_asyncrž   r®   Úapi_versionÚtimeoutÚshared_sessionr   c
                 óâ  — t        «       }
|€Ît        |t        «      st        dd|› �¬«      ‚| j	                  |
d¬«      }|r"t        |t
        «      st        |t        «      r|S |rt        j                  |	¬«      nt        j                  «       }|rt        ||||||¬«      }nt        ||||||¬«      }| j                  ||
d| j                  |«      ¬«       |S | j                  |||¬	«       |S )
Né¦  z-max retries must be an int. Passed in value: ©r�   r”   Úopenai)Úclient_initialization_paramsÚclient_type©rÙ   )rž   Úbase_urlÚhttp_clientrØ   rÓ   rÒ   )Úopenai_clientrÞ   rß   Úlitellm_owned_client)rÑ   rÒ   rÓ   )r?   rN   r¹   r3   Úget_cached_openai_clientr   r   rÌ   Ú_get_async_http_clientÚ_get_sync_http_clientÚset_cached_openai_clientÚowns_wrapped_http_clientrÕ   )r=   rÖ   rž   r®   r×   rØ   rÓ   rÒ   rÑ   rÙ   rÞ   Úcached_clientrâ   Ú_new_clients                 rG   Ú_get_openai_clientz'OpenAIChatCompletion._get_openai_clientT  s3  € ô 5;³HÐ$Øˆ>Ü˜k¬3Ô/Ü!Ø #ØKÈKÈ=ÐYôð ð $(×#@Ñ#@Ø-IØ$ð $Aó $ˆMñ
 Ü˜m¬VÔ4¼
À=ÔR]Ô8^Ø(Ð(ñ ô %×;Ñ;È>Ð;ÔZä)×?Ñ?ÓAð ñ
 Ü4?Ø#Ø%Ø +Ø#Ø +Ø!-ô5‘ô %Ø#Ø%Ø +Ø#Ø +Ø!-ô�ð ×)Ñ)Ø)Ø-IØ$Ø%)×%BÑ%BÀ;Ó%Oð	 *ô ð Ðð ×.Ñ.ØØ)Ø'ð /ô ð
 ˆMrI   Úopenai_aclientÚdatar›   c              ƒ   óâ  K  — t        j                   «       }	  |j                  j                  j                  j                  di |¤d|i¤Žƒ d{  –—† }t        j                   «       }t        |d«      rt        |j                  «      }ni }|j                  «       }	|j                  d«      st        |	d«      st        dd|	›d�¬	«      ‚||	fS 7 Œ~# t        j                  $ rF}
t        j                   «       }t        ||z
  d
«      }|
xj                  d|› d|› d�z  c_        |
‚d}
~
wt        j                  $ r$}
t!        |
«      s‚ t#        |
|d¬«      cY d}
~
S d}
~
wt$        $ r}
|
‚d}
~
ww xY w­w)ú´
        Helper to:
        - call chat.completions.create.with_raw_response when litellm.return_response_headers is True
        - call chat.completions.create by default
        rØ   Nr‘   ÚstreamÚ
model_dumpéô  ú7Empty or invalid response from LLM endpoint. Received: ú8. Check the reverse proxy or model server configuration.rÜ   r-   z - timeout value=z, time taken=z secondsT©rÉ   rî   rÖ   r\   )ÚtimeÚchatÚcompletionsÚwith_raw_responseÚcreateÚhasattrrj   r‘   ÚparseÚgetr3   rÝ   ÚAPITimeoutErrorÚroundr”   ÚBadRequestErrorr6   r4   rÈ   )r=   rí   rî   rØ   r›   Ú
start_timer™   Úend_timer‘   ÚresponserÉ   Ú
time_deltas               rG   Ú#make_openai_chat_completion_requestz8OpenAIChatCompletion.make_openai_chat_completion_request˜  s]  è ø€ ô !ŸI™I›Kˆ
ð	Ø!Y ×!4Ñ!4×!@Ñ!@×!RÑ!R×!YÑ!YÑ!rÐ\`Ñ!rÐjqÒ!r×rˆLÜ—y‘y“{ˆHä�| YÔ/Ü˜|×3Ñ3Ó4‘à�Ø*×0Ñ0Ó2ˆHØ—8‘8˜HÔ%¬g°hÀÔ.MÜ!Ø #ØUÐV^ÐUað  bZð  [ôð ð ˜HÐ$Ð$ð sùô ×%Ñ%ò 	Ü—y‘y“{ˆHÜ % h°Ñ&;¸QÓ ?ˆJØ�IŠIÐ,¨W¨I°]À:À,ÈhÐWÑW�IØˆGûÜ×%Ñ%ò 	TÜ.¨qÔ1ØÜ4°q¸tÈdÔSÕSûÜò 	ØˆGûð	üs`   ‚E/˜7C ÁCÁA=C ÃE/ÃC ÃE,Ã#AD$Ä$E,Ä:EÅE,ÅE/ÅE,Å%E'Å'E,Å,E/rã   c                 ó  — d}	  |j                   j                  j                  j                  di |¤d|i¤Ž}t	        |d«      rt        |j                  «      }ni }|j                  «       }|j                  d«      st	        |d«      st        dd|›d�¬	«      ‚||fS # t        $ r ‚ t        j                  $ r$}t        |«      s‚ t        ||d
¬«      cY d}~S d}~wt        $ r&}|�t        d|› d|› dt        |«      › �«      ‚|‚d}~ww xY w)rð   NrØ   r‘   rñ   rò   ró   rô   rõ   rÜ   Frö   zerror - z, Received response - z, Type of response - r\   )rø   rù   rú   rû   rü   rj   r‘   rý   rþ   r3   rÝ   r  r6   r4   rÈ   Útype©	r=   rã   rî   rØ   r›   r™   r‘   r  rÉ   s	            rG   Ú(make_sync_openai_chat_completion_requestz=OpenAIChatCompletion.make_sync_openai_chat_completion_requestÁ  s0  € ð ˆð	ØR˜=×-Ñ-×9Ñ9×KÑK×RÑRÑkÐUYÑkÐcjÒkˆLä�| YÔ/Ü˜|×3Ñ3Ó4‘à�Ø*×0Ñ0Ó2ˆHØ—8‘8˜HÔ%¬g°hÀÔ.MÜ!Ø #ØUÐV^ÐUað  bZð  [ôð ð ˜HÐ$Ð$øÜò 	ØÜ×%Ñ%ò 	UÜ.¨qÔ1ØÜ4°q¸tÈeÔTÕTûÜò 	ØÐ'ÜØ˜q˜cÐ!7¸°~ÐEZÔ[_Ð`lÓ[mÐZnÐoóð ð �ûð	ús*   „BB ÂDÂ:CÃDÃDÃ%!DÄDr  r}   r‰   r`   rñ   r–   c              ƒ   ó¬  K  — ddl m} ddlm}	 t        j
                  |j                  xs g z   }
 |j                  dt        |
«      «       |j                  dg «      } |j                  dt        |t        «      rt        |«      n|rdnd«       |j                  dd	«      }|
D ]  }	 t        ||	«      rpt        |d
«      sŒ|j                  |||||||¬«      ƒ d{  –—† \  }}|r>|r|j                  «       ni }||d<   |j                  ||||||||¬«      ƒ d{  –—† }|c S Œ� y7 ŒJ7 Œ# t         $ r} |j"                  d|«       Y d}~Œ¨d}~ww xY w­w)ad  
        Call agentic completion hooks for all custom loggers (OpenAI Chat Completions API).

        1. Call async_should_run_chat_completion_agentic_loop to check if agentic loop is needed
        2. If yes, call async_run_chat_completion_agentic_loop to execute the loop

        Returns the response from agentic loop, or None if no hook runs.
        r   r   )ÚCustomLoggerz(LiteLLM.AgenticHooks: callbacks_count=%sÚtoolsz$LiteLLM.AgenticHooks: tools_count=%sr/   Úcustom_llm_providerrÝ   Ú-async_should_run_chat_completion_agentic_loop)r  r}   r‰   r  rñ   r  ÚkwargsN)r  r}   r‰   r  r`   r›   rñ   r  zNLiteLLM.AgenticHookError: Exception in agentic completion hooks for OpenAI: %s)Úlitellm._loggingr   Ú"litellm.integrations.custom_loggerr  r‚   Ú	callbacksÚdynamic_success_callbacksÚdebugÚlenrþ   rN   r¼   rü   r  r@   Ú&async_run_chat_completion_agentic_looprÈ   Ú	exception)r=   r  r}   r‰   r`   r›   rñ   r–   r   r  r  r  r  ÚcallbackÚ
should_runÚ
tool_callsÚkwargs_with_providerÚagentic_responserÉ   s                      rG   Ú%_call_agentic_completion_hooks_openaiz:OpenAIChatCompletion._call_agentic_completion_hooks_openaië  s�  è ø€ õ$ 	4ÝCä"×,Ñ,°×0UÑ0UÒ0[ÐY[Ñ\ˆ	àˆ×ÑÐGÌÈYËÔXØ&×*Ñ*¨7°BÓ7ˆàˆ×ÑØ2Ü$ U¬DÔ1ŒC�ŒJ¹E±qÀqô	
ð
 &4×%7Ñ%7Ð8MÈxÓ%XÐà!ò +	ˆHð*Ü˜h¨Ô5ä" 8Ð-\Ô]Ø ð '×TÑTØ!)Ø#Ø!)Ø#Ø%Ø,?Ø-ð Uó ÷ ñØ"Ø"ñ "áHV¨~×/BÑ/BÔ/DÐ\^Ð,ØFYÐ,Ð-BÑCð :B×9hÑ9hØ",Ø"'Ø%-Ø%-Ø,;Ø(3Ø#)Ø#7ð :ió 	:÷ 	4Ð(ð  0Ò/øðM+	ðZ ðEøð 	4ùô ò Ø(�×(Ñ(ØdÐfg÷ñ ûðüs`   ‚B%EÂ(D+Ã EÃD+ÃD'Ã>D+ÄD)ÄD+Ä!EÄ'D+Ä)D+Ä+	EÄ4EÅEÅEÅEÚstream_optionsc                 ó>   — t        |¬«      }t        ||d||¬«      }|S )N)rš   rÝ   )Úcompletion_streamr}   r  r›   r  )r"   r(   )r=   r  r›   r}   r  r!  r³   s          rG   Úmock_streamingz#OpenAIChatCompletion.mock_streaming;  s1   € ô $8ÀxÔ#PÐÜ$7Ø/ØØ (Ø#Ø)ô%
Ðð "Ð!rI   Frš   Úprint_verboseÚdynamic_paramsÚazure_ad_tokenÚacompletionr‘   Úcustom_prompt_dictr  rŒ   c                 ót	  •— t         ‰+| �  |¬«       	 d}|j                  «       }|j                  dd «      }|j                  dd«      }d }|�#|�!	 t	        j
                  |t        |«      ¬«      }|€
t        «       }|r|j                  |||¬«      }|r||d<   |�|€t        dd	¬
«      ‚t        |t        «      s't        |t        j                  «      st        dd¬
«      ‚|�|dk7  r|› d|› �|_        t!        d«      D �]¯  }	 |j                  dd«      }|du rQ|du r(|du r$| j#                  ||||||||
|	||||||||¬«      c S | j%                  |||||||||
|	||||||||¬«      c S |j'                  |||||xs i ¬«      }|du r#|du r| j)                  |||||
|	||||||¬«      c S t        |t*        «      st        dd¬
«      ‚| j-                  d|	|
|||||¬«      }|j/                  ||j0                  ||j2                  j4                  ||dœ¬«       | j7                  ||||¬«      \  }} ||j8                  d<   |j;                  | j=                  «       «      }!|j?                  ||	|!d|i¬«       tA        |!||¬«      }"|du r%| jC                  tE        tF        |"«      |||¬«      c S |"c S  y # t        $ r d }Y �ŒQw xY w# tH        jJ                  $ r0}#tL        jN                  du s|du rtQ        |#|«      }n|#‚Y d }#~#�Œd }#~#wtR        $ �r}#|� |d|#› �«       d tU        |#«      v sd!tU        |#«      v rž|�œ|� |d"«       g }$t!        tW        |«      d#z
  «      D ]_  }%|$jY                  ||%   «       ||%   d$   ||%d#z      d$   k(  sŒ,||%   d$   d%k(  r|$jY                  d&d'd(œ«       ŒL|$jY                  d%d'd(œ«       Œa |$jY                  |d)   «       |$}nNd*tU        |#«      v r|�|}$|$jY                  d%d'd(œ«       |$}n&d+tU        |#«      v rtM        jZ                  |¬,«       n|#‚Y d }#~#�Œ*d }#~#ww xY w# t        $ r}#|#‚d }#~#wtR        $ ro}#t]        |#d-d.«      }&t]        |#d/d «      }'t]        |#d0tU        |#«      «      }(t]        |#d1d «      })t]        |#d2d «      }*|'€|)rt]        |)d/d «      }'t        |&|(|'|*¬3«      ‚d }#~#ww xY w)4Nrà   Fr  rñ   )r}   Úprovider)r}   r  rñ   Úextra_headersrÛ   zMissing model or messagesrÜ   z,Timeout needs to be a float or httpx.TimeoutrÝ   ú/r-   rÓ   T)r›   r‘   r‰   r`   r–   Úprovider_configr}   r®   rž   r×   rØ   rÑ   rÓ   rÒ   rŒ   r  rÙ   )r‰   r`   r–   r,  r‘   r}   r›   rš   r®   rž   r×   rØ   rÑ   rÓ   rÒ   rŒ   Úfake_streamrÙ   ©r}   r‰   r`   r–   r‘   )r›   r‘   rî   r}   r®   rž   r×   rØ   rÑ   rÓ   rÒ   r  úmax retries must be an int©rÖ   rž   r®   r×   rØ   rÓ   rÒ   rÑ   ©r‘   r®   r&  Úcomplete_input_dict©Úinputrž   Úadditional_args©rã   rî   rØ   r›   r¢   r2  ©r4  rž   r¡   r5  )r¤   r¥   r§   ©r  r›   r}   r  z#openai.py: Received openai error - z0Conversation roles must alternate user/assistantz.user and assistant roles should be alternatingz!openai.py: REFORMATS THE MESSAGE!r/   ÚroleÚuserÚ	assistantÚ )r9  Úcontentéÿÿÿÿz"Last message must have role `user`z3unknown field: parameter index is not a valid field)r‰   r�   ró   r‘   r©   r  Úbody©r�   r”   r‘   r?  )/r|   Ú
completionr@   Úpopr)   Úget_provider_chat_configr   Ú
ValueErrorrl   Úshould_fake_streamr3   rN   Úfloatr¿   ÚTimeoutr}   ÚrangeÚasync_streamingr&  r˜   Ú	streamingr¹   rì   Úpre_callrž   Ú	_base_urlÚ_uri_referencer
  rª   Útransform_parsed_response_dictrò   r¨   r*   r"  r   r&   rÝ   ÚUnprocessableEntityErrorr‚   rŒ   r5   rÈ   r»   r  ÚappendÚremove_index_from_tool_callsÚgetattr),r=   rš   rØ   r`   r–   r›   r}   r‰   r#  rž   r®   r×   r$  r%  r&  Ú	logger_fnr‘   r'  rÑ   rÒ   r  rŒ   rÙ   r-  Úinference_paramsr  rñ   r,  Ú_rÓ   rî   rã   r  Ústringified_responser¬   rÉ   Únew_messagesÚir�   Úerror_headersÚ
error_textÚerror_responseÚ
error_bodyrC   s,                                              €rG   rA  zOpenAIChatCompletion.completionM  s  ø€ ô2 	‰Ñ¨.ÐÔ9ðW	Ø %ˆKØ.×3Ñ3Ó5ÐØ1A×1EÑ1EÐFVÐX\Ó1]ˆNØ)9×)=Ñ)=¸hÈÓ)NˆFØ15ˆOà"Ð.°5Ð3Dð+Ü&;×&TÑ&TØ#¬lÐ;NÓ.Oô'�Oð Ð&Ü".£.�áØ-×@Ñ@ØÐ5HÐQWð Aó �ñ Ø4;Ð  Ñ1Øˆ} Ð 0Ü!¨cÐ;VÔWÐWä˜g¤uÔ-´jÀÌ%Ï-É-Ô6XÜ!Ø #ØJôð ð
 #Ð.Ð3FÈ(Ò3RØ*=Ð)>¸aÀ¸wÐ'G�Ô$ä˜1“Xó a �ð` Ø"2×"6Ñ"6°}ÀaÓ"H�KØ" dÑ*Ø! T™>¨k¸UÑ.BØ#'×#7Ñ#7Ø,7Ø(/Ø)1Ø0@Ø/=Ø0?Ø&+Ø)1Ø(/Ø,7Ø(/Ø'-Ø,7Ø-9Ø,7Ø/=Ø/=ð# $8ó $ò ð( $(×#3Ñ#3Ø)1Ø0@Ø/=Ø0?Ø(/Ø&+Ø,7Ø/=Ø)1Ø(/Ø,7Ø(/Ø'-Ø,7Ø-9Ø,7Ø,7Ø/=ð% $4ó $ò ð* +×<Ñ<Ø#Ø!)Ø(8Ø'5Ø '¢¨2ð =ó �Dð  ‘~¨+¸Ñ*>Ø#Ÿ~™~Ø(3Ø$+Ø!%Ø"'Ø%-Ø$+Ø(3Ø$+Ø#)Ø(3Ø)5Ø+9ð  .ó  ò ô  *¨+´sÔ;Ü"-¸#ÐGcÔ"dÐdØ04×0GÑ0GØ%*Ø$+Ø%-Ø(3Ø$+Ø(3Ø)5Ø#)ð 1Hó 	1˜ð $×,Ñ,Ø"*Ø$1×$9Ñ$9à+2Ø,9×,CÑ,C×,RÑ,RØ/:Ø7;ñ	-ð -ô 	ð !×IÑIØ*7Ø!%Ø$+Ø(3ð	 Jó ñØ#Ø$ð NU˜×6Ñ6Ð7IÑJØ/>×/]Ñ/]Ð^f×^qÑ^qÓ^sÓ/tÐ,Ø#×-Ñ-Ø"*Ø$+Ø.BØ-BÀDÐ,Ið	 .ô ô .NØ,@Ø2@Ø.5ô.Ð*ð
 '¨$Ñ.Ø#'×#6Ñ#6Ü)-¬mÐ=OÓ)PØ,7Ø&+Ø/=ð	 $7ó $ò ð  2Ò1ñ}a øô5 "ò +à&*“Oð+ûôr ×6Ñ6ò  ä×*Ñ*¨dÑ2°kÀTÑ6IÜ+VÐWXÐZjÓ+kÑ(à˜õ )ûô !ó  Ø$Ð0Ù%Ð(KÈAÈ3Ð&OÔPàJÌcÐRSËfÑTØKÌsÐSTËvÑUØ"Ð.Ø(Ð4Ù)Ð*MÔNà')˜Ü!&¤s¨8£}°qÑ'8Ó!9ò Y˜AØ(×/Ñ/°¸±Ô<Ø'¨™{¨6Ñ2°h¸qÀ1¹u±oÀfÑ6MÓMØ#+¨A¡;¨vÑ#6¸&Ò#@Ø$0×$7Ñ$7ÀÐY[Ñ8\Õ$]à$0×$7Ñ$7ÀÐTVÑ8WÕ$XðYð %×+Ñ+¨H°R©LÔ9Ø#/™Ø>Ä#ÀaÃ&ÑHÈhÐNbØ'/˜Ø$×+Ñ+°VÈÑ,KÔLØ#/™ØNÔRUÐVWÓRXÑXÜ×<Ñ<ÀhÖOà˜ÿùð7 ûô8 ò 	ØˆGûÜò 	Ü!(¨¨M¸3Ó!?ˆKÜ# A y°$Ó7ˆMÜ '¨¨6´3°q³6Ó :ˆJÜ$+¨A¨z¸4Ó$@ˆNÜ '¨¨6°4Ó 8ˆJØÐ$©Ü '¨¸	À4Ó H�ÜØ'Ø"Ø%Øô	ð ûð	úsÄ   “<P1 Á J3 Á0BP1 Ä?KÅP1 Å"KÅ(P1 Å+>KÆ)P1 Æ,C>KÊ*P1 Ê-KÊ.P1 Ê1P1 Ê3KÊ>P1 ËKËP1 ËP.Ë%LË=P1 ÌP.ÌA7P)ÎBP)Ð#P1 Ð)P.Ð.P1 Ð1	R7Ð:P<Ð<R7ÑA*R2Ò2R7r,  r-  c              ƒ   óV  K  — d }|j                  |||||xs i ¬«      ƒ d {  –—† }t        d«      D �]/  }	 | j                  d|	|
||||||¬«	      }|j                  |d   |j                  dd|j                  › �i|j
                  j                  d|dœ¬	«       | j                  ||||¬
«      ƒ d {  –—† \  }}|j                  |j                  «       «      }|j                  |d   |	|d|i¬«       ||j                  d<   t        ||d|i|¬«      }| j                  |||||d|¬«      ƒ d {  –—† }|�|}|du r%| j                  t        t         |«      |||¬«      c S |c S  y 7 �ŒD7 Œ¶7 Œ<# t"        j$                  $ r0}t&        j(                  du s|du rt+        ||«      }n|‚Y d }~�Œyd }~wt,        $ ro}t/        |dd «      }t/        |dd«      }t/        |dd «      }t/        |dd «      }|€|rt/        |dd «      }t/        |dt1        |«      «      } t3        || ||¬«      ‚d }~ww xY w­w)Nr.  r-   T©	rÖ   rž   r®   r×   rØ   rÓ   rÒ   rÑ   rÙ   r‰   r°   r±   r1  r3  ©rí   rî   rØ   r›   r2  r7  r¢   r‘   r£   F)r  r}   r‰   r`   r›   rñ   r–   r8  r  r�   ró   r?  r”   r@  )Úasync_transform_requestrH  rì   rK  rž   rL  rM  r  rN  rò   r¨   rª   r*   r  r"  r   r&   rÝ   rO  r‚   rŒ   r5   rÈ   rR  r»   r3   )!r=   r‰   r`   r–   r,  r}   rš   r›   rØ   rž   r®   r×   rÒ   rÑ   rÓ   r‘   rŒ   r  r-  rÙ   r  rî   rU  rí   rV  r¬   r  rÉ   Úexception_responser�   Úexception_bodyrY  r”   s!                                    rG   r&  z OpenAIChatCompletion.acompletion@  sÜ  è ø€ ð, ˆØ$×<Ñ<ØØØ+Ø)Ø’M˜rð =ó 
÷ 
ˆô �q“ó [	ˆAðZØ.2×.EÑ.EØ!Ø#Ø%Ø +Ø#Ø +Ø!-Ø!Ø#1ð /Fó 
/�ð ×$Ñ$Ø˜zÑ*Ø*×2Ñ2à$3°w¸~×?UÑ?UÐ>VÐ5WÐ#XØ$2×$<Ñ$<×$KÑ$KØ'+Ø/3ñ	%ð %ô 	ð +/×*RÑ*RØ#1ØØ#Ø +ð	 +Só +÷ %Ñ!�˜ð (7×'UÑ'UÐV^×ViÑViÓVkÓ'lÐ$Ø×%Ñ%Ø˜zÑ*Ø#Ø&:Ø%:¸DÐ$Að	 &ô ð FM�×.Ñ.Ð/AÑBÜ%EØ$8Ø*8Ø#,¨gÐ"6Ø&-ô	&Ð"ð *.×)SÑ)SØ/ØØ%Ø$3Ø +Ø Ø#1ð *Tó *÷ $Ð ð $Ð/Ø)9Ð&à $Ñ&Ø×.Ñ.Ü!%¤mÐ5GÓ!HØ$/Ø#Ø'5ð	 /ó ò ð *Ò)ñK[	ð
ùðB%øð,$ùô, ×2Ñ2ò ä×&Ñ&¨$Ñ.°+ÀÑ2EÜFÀqÈ$ÓO‘Dà�Gõ ûô ò Ü%,¨Q°
¸DÓ%AÐ"Ü% a¨¸Ó<�Ü!(¨¨F°DÓ!9�Ü '¨¨9°dÓ ;�Ø Ð(Ñ-?Ü$+Ð,>À	È4Ó$P�MÜ! ! Y´°A³Ó7�ä!Ø +Ø#Ø)Ø'ô	ð ûðüsw   ‚ H)¢E&£H)·A;E-Â2E)Â3A;E-Ä.E+Ä/.E-ÅH)Å E-Å!H)Å)E-Å+E-Å-H&Æ %F+Æ%H)Æ+H&Æ7A*H!È!H&È&H)c           
      ó”  — d|d<   |j                  | j                  ||¬«      «       | j                  d|||||
||	¬«      }|j                  |d   |dd|j                  › �i|j
                  j                  d|d	œ¬
«       | j                  ||||¬«      \  }}||j                  d<   t        ||d||j                  dd «      |¬«      }|S )NTrñ   ©r  r®   Fr0  r‰   r°   r±   r1  r3  r6  r¢   rÝ   r  ©r!  r}   r  r›   r  r§   )ÚupdateÚget_stream_optionsrì   rK  rž   rL  rM  r
  rª   r(   rþ   )r=   r›   rØ   rî   r}   rž   r®   r×   rÒ   rÑ   rÓ   r‘   r  rã   r  Ústreamwrappers                   rG   rJ  zOpenAIChatCompletion.streaming»  s  € ð ˆˆX‰Ø�‰�D×+Ñ+¸>ÐT\Ð+Ó]Ô^à'+×'>Ñ'>ØØØØ#ØØ#Ø%Øð (?ó 	(
ˆð 	×ÑØ�zÑ"Øà+¨w°}×7LÑ7LÐ6MÐ-NÐOØ)×3Ñ3×BÑBØ$Ø'+ñ	ð 	ô 		
ð !×IÑIØ'ØØØ#ð	 Jó 
Ñˆ�ð >Eˆ×&Ñ&Ð'9Ñ:Ü2Ø&ØØ (Ø#ØŸ8™8Ð$4°dÓ;Ø%ô 
ˆð ÐrI   c              ƒ   óh  K  — d }|j                  |||||xs i ¬«      }d|d<   |j                  | j                  ||	¬«      «       t        d«      D ]Œ  }	 | j	                  d||	|
|||||¬«	      }|j                  |d   |||	d|dœ¬	«       | j                  ||||¬
«      ƒ d {  –—† \  }}||j                  d<   t        ||d||j                  dd «      |¬«      }|c S  y 7 Œ=# t        j                  $ r/}t        j                  du s|du rt        ||«      }n|‚Y d }~ŒÏd }~wt        $ �r}t!        |t"        «      r|‚t%        |dd «      }t%        |dd«      }t%        |dd «      }t%        |dd «      }|€|rt%        |dd «      }|�*t'        |d«      rt#        ||› d|j(                  › �||¬«      ‚t+        |«      j,                  dk(  r#t#        dt+        |«      j,                  › ||¬«      ‚t'        |d«      r#t#        t%        |dd«      t/        |«      ||¬«      ‚t#        d|› ||¬«      ‚d }~ww xY w­w)Nr.  Trñ   rd  r-   r^  r‰   r1  r3  r_  r¢   rÝ   r  re  r‘   r�   ró   r  r?  r©   z

Original Response: r@  ÚReadTimeouti˜  )r˜   rf  rg  rH  rì   rK  r  rª   r(   rþ   rÝ   rO  r‚   rŒ   r5   rÈ   rN   r3   rR  rü   r©   r  rf   r»   )r=   rØ   r‰   r`   r–   r,  r}   r›   rž   r®   r×   rÒ   rÑ   rÓ   r‘   rŒ   r  rÙ   r  rî   rU  rí   rh  rÉ   rY  r�   r[  rb  s                               rG   rI  z$OpenAIChatCompletion.async_streamingô  sÁ  è ø€ ð( ˆØ×0Ñ0ØØØ+Ø)Ø’M˜rð 1ó 
ˆð ˆˆX‰Ø�‰�D×+Ñ+¸>ÐT\Ð+Ó]Ô^Ü�q“ò W	ˆAðVØ.2×.EÑ.EØ!Ø#Ø%Ø +Ø#Ø +Ø!-Ø!Ø#1ð /Fó 
/�ð ×$Ñ$Ø˜zÑ*Ø#à#*Ø$,Ø'+Ø/3ñ	%ð %ô 	ð +/×*RÑ*RØ#1ØØ#Ø +ð	 +Só +÷ %Ñ!�˜ð FM�×.Ñ.Ð/AÑBÜ 3Ø&.ØØ(0Ø +Ø#'§8¡8Ð,<¸dÓ#CØ&-ô!�ð %Ò$ñQW	ð2%ùô  ×2Ñ2ò ä×&Ñ&¨$Ñ.°+ÀÑ2EÜFÀqÈ$ÓO‘Dà�Gô ûô ó(ô ˜a¤Ô-Ø�Gä '¨¨9°dÓ ;�Ü% a¨¸Ó<�Ü!(¨¨J¸Ó!=�Ü!(¨¨F°DÓ!9�Ø Ð(©^Ü$+¨N¸IÀtÓ$L�MØÐ'¬G°H¸fÔ,EÜ%Ø$/Ø#$ #Ð%<¸X¿]¹]¸OÐ LØ -Ø+ô	ð ô ˜A“w×'Ñ'¨=Ò8Ü)Ø(+Ü'+¨A£w×'7Ñ'7Ð&8Ø$1Ø!/ô	ð ô !  MÔ2Ü)Ü(/°°=À#Ó(FÜ$'¨£FØ$1Ø!/ô	ð ô *Ø(+Ø'( cØ$1Ø!/ô	ð ûðG(üsP   ‚AH2ÁAC#Â#C!Â$8C#ÃH2Ã!C#Ã#H/Ã6%D ÄH2Ä H/Ä-C=H*È*H/È/H2c                 óR   — |�d|iS |�t        |«      j                  dk(  rdddiiS i S )zL
        Pass `stream_options` to the data dict for OpenAI requests
        r  zapi.openai.comÚinclude_usageT)r   Úhostname)r=   r  r®   s      rG   rg  z'OpenAIChatCompletion.get_stream_optionsk  sE   € ð Ð%Ø$ nÐ5Ð5ð Ð¤8¨HÓ#5×#>Ñ#>ÐBRÒ#RØ(¨?¸DÐ*AÐBÐBØˆ	rI   c              ƒ   óì   K  — 	  |j                   j                  j                  di |¤d|i¤Žƒ d{  –—† }t        |j                  «      }|j                  «       }||fS 7 Œ-# t        $ r}|‚d}~ww xY w­w©z¨
        Helper to:
        - call embeddings.create.with_raw_response when litellm.return_response_headers is True
        - call embeddings.create by default
        rØ   Nr\   ©Ú
embeddingsrú   rû   rj   r‘   rý   rÈ   )	r=   rí   rî   rØ   r›   r™   r‘   r  rÉ   s	            rG   Úmake_openai_embedding_requestz2OpenAIChatCompletion.make_openai_embedding_requestx  s{   è ø€ ð	Ø!S ×!:Ñ!:×!LÑ!L×!SÑ!SÑ!lÐVZÑ!lÐdkÒ!l×lˆLÜ! ,×"6Ñ"6Ó7ˆGØ*×0Ñ0Ó2ˆHØ˜HÐ$Ð$ð mùô ò 	ØˆGûð	üs8   ‚A4„-A! ±A²,A! ÁA4ÁA! Á!	A1Á*A,Á,A1Á1A4c                 óÐ   — 	  |j                   j                  j                  di |¤d|i¤Ž}t        |j                  «      }|j                  «       }||fS # t        $ r}|‚d}~ww xY wro  rp  r	  s	            rG   Ú"make_sync_openai_embedding_requestz7OpenAIChatCompletion.make_sync_openai_embedding_request�  sl   € ð	ØL˜=×3Ñ3×EÑE×LÑLÑeÈtÑeÐ]dÒeˆLä! ,×"6Ñ"6Ó7ˆGØ*×0Ñ0Ó2ˆHØ˜HÐ$Ð$øÜò 	ØˆGûð	ús   ‚AA Á	A%ÁA Á A%r4  c           	   ƒ   ó„  K  — 	 | j                  d||||	||
¬«      }| j                  ||||¬«      ƒ d {  –—† \  }}||j                  d<   |j                  «       }|j	                  ||d|i|¬«       t        ||d|¬«      }|S 7 ŒN# t        $ r'}|j	                  ||d|it        |«      ¬«       |‚d }~wt        $ r�}|j	                  ||d|it        |«      ¬«       t        |d	d
«      }t        |dd «      }t        |dt        |«      «      }t        |dd «      }|€|rt        |dd «      }t        |||¬«      ‚d }~ww xY w­w)NT©rÖ   rž   r®   rØ   rÓ   rÑ   rÙ   r_  r¢   r2  ©r4  rž   r5  r¡   Ú	embedding)r¤   r¥   Úresponse_typer§   r�   ró   r‘   r©   r  r“   )
rì   rr  rª   rò   r¨   r*   r3   r»   rÈ   rR  )r=   r4  rî   rš   rØ   r›   rž   r®   rÑ   rÓ   rÙ   rí   r‘   r  rV  Úreturned_responserÉ   r�   rY  rZ  r[  s                        rG   Ú
aembeddingzOpenAIChatCompletion.aembedding£  s«  è ø€ ð7	bØ15×1HÑ1HØØØ!ØØ'ØØ-ð 2Ió 2ˆNð '+×&HÑ&HØ-ØØØ'ð	 'Ió '÷ !ÑˆG�Xð BIˆK×*Ñ*Ð+=Ñ>Ø*2×*=Ñ*=Ó*?Ð à×!Ñ!ØØØ!6¸Ð =Ø"6ð	 "ô ô ;[Ø 4Ø&4Ø)Ø")ô	;Ðð %Ð$ð+!ùô, ò 	à×!Ñ!ØØØ!6¸Ð =Ü"% a£&ð	 "ô ð ˆGûÜò 	bà×!Ñ!ØØØ!6¸Ð =Ü"% a£&ð	 "ô ô ")¨¨M¸3Ó!?ˆKÜ# A y°$Ó7ˆMÜ '¨¨6´3°q³6Ó :ˆJÜ$+¨A¨z¸4Ó$@ˆNØÐ$©Ü '¨¸	À4Ó H�Ü¨+¸zÐS`ÔaÐaûð	büsF   ‚E „0B ´BµAB ÂE ÂB Â	D=Â"B0Â0D=Â<A<D8Ä8D=Ä=E c                 óà  •— t         ‰| �  «        	 ||dœ|¥}|xs t        j                  }t	        |t
        «      st        dd¬«      ‚|j                  ||||dœ¬«       |
du r| j                  ||||||||	||¬«
      S | j                  d	|||||	¬
«      }d }| j                  ||||¬«      \  }}||j                  d<   |j                  ||d|i|¬«       t        |j                  «       ||d¬«      }|S # t        $ r}|‚d }~wt        $ ra}t!        |dd«      }t!        |dd «      }t!        |dt#        |«      «      }t!        |dd «      }|€|rt!        |dd «      }t        |||¬«      ‚d }~ww xY w)N)r}   r4  rÛ   r/  rÜ   ©r2  r®   r3  T)
rî   r4  r›   rš   r®   rž   rØ   rÑ   rÓ   rÙ   F)rÖ   rž   r®   rØ   rÓ   rÑ   r6  r¢   r2  rw  rx  )r¤   r¥   r§   ry  r�   ró   r‘   r©   r  r“   )r|   rx  r‚   r   rN   r¹   r3   rK  r{  rì   rt  rª   r¨   r*   rò   rÈ   rR  r»   )r=   r}   r4  rØ   r›   rš   r`   rž   r®   rÑ   r{  rÓ   rÙ   rî   rã   r‘   Úsync_embedding_responser  rÉ   r�   rY  rZ  r[  rC   s                          €rG   rx  zOpenAIChatCompletion.embeddingé  sê  ø€ ô 	‰ÑÔðD	bØ$)°EÑM¸_ÐMˆDØ%ÒD¬×)DÑ)DˆKÜ˜k¬3Ô/Ü!¨cÐ;WÔXÐXà× Ñ ØØØ8<È(Ñ Sð !ô ð ˜TÑ!Ø—‘ØØØ +Ø#1Ø%Ø#Ø#Ø!Ø +Ø#1ð 'ó ð ð ,0×+BÑ+BØØØ!ØØ'Øð ,Có ,ˆMð $(ˆGØ/3×/VÑ/VØ+ØØØ'ð	 0Wó 0Ñ,ˆGÐ,ð BIˆK×*Ñ*Ð+=Ñ>Ø×!Ñ!ØØØ!6¸Ð =Ø"9ð	 "ô ô 2RØ 7× BÑ BÓ DØ&4Ø")Ø)ô	2ˆHð ˆOøÜò 	ØˆGûÜò 	bÜ!(¨¨M¸3Ó!?ˆKÜ# A y°$Ó7ˆMÜ '¨¨6´3°q³6Ó :ˆJÜ$+¨A¨z¸4Ó$@ˆNØÐ$©Ü '¨¸	À4Ó H�Ü¨+¸zÐS`ÔaÐaûð	bús,   ‘A-C5 Á?A5C5 Ã5	E-Ã>D Ä E-ÄAE(Å(E-Úpromptc           	   ƒ   ó   K  — d }	 | j                  d||||	|
|¬«      }|j                  ||j                  dd|j                  › �it        |j                  «      d|dœ¬«       |ri |¥d|i¥n|} |j
                  j                  di |¤d|i¤Žƒ d {  –—† }|j                  «       }|j                  ||d	|i|¬
«       t        ||d¬«      S 7 Œ9# t        $ r$}|j                  ||t        |«      ¬«       |‚d }~ww xY w­w)NT©rÖ   rž   r®   rØ   rÓ   rÒ   rÑ   r°   r±   r1  r3  r*  rØ   r2  rw  Úimage_generation©r¤   r¥   ry  )r4  rž   r¡   r\   )rì   rK  rž   r»   rá   ÚimagesÚgeneraterò   r¨   r*   rÈ   )r=   r  rî   rš   rØ   r›   rž   r®   rÑ   rÓ   rÒ   r‘   r  rí   rœ   rV  rÉ   s                    rG   Úaimage_generationz&OpenAIChatCompletion.aimage_generation?  sV  è ø€ ð ˆð.	Ø$(×$;Ñ$;ØØØ!ØØ'Ø)Øð %<ó %ˆNð × Ñ ØØ&×.Ñ.à /°7¸>×;QÑ;QÐ:RÐ1SÐTÜ # N×$;Ñ$;Ó <Ø#'Ø+/ñ	!ð !ô 	ñ 7>Ð2�4Ð2˜¨'Ò2À4ð ð <˜^×2Ñ2×;Ñ;Ñ\¸lÑ\ÐT[Ò\×\ˆHØ*2×*=Ñ*=Ó*?Ð à×!Ñ!ØØØ!6¸Ð =Ø"6ð	 "ô ô 4Ø 4Ø&4Ø0ôð ð ]ùô ò 	à×!Ñ!ØØÜ"% a£&ð "ô ð
 ˆGûð	üs;   ‚C>†BC ÂCÂ8C ÃC>ÃC Ã	C;ÃC6Ã6C;Ã;C>c                 óv  — i }	 ||dœ|¥}|j                  dd«      }t        |t        «      st        dd¬«      ‚|
du r| j	                  ||||||||	|||¬«      S | j                  d	||||||	¬
«      }|j                  ||j                  dd|j                  › �i|j                  j                  d|dœ¬«       |ri |¥d|i¥n|} |j                  j                  di |¤d|i¤Ž}|j                  «       }|j                  ||d|i|¬«       t        ||d¬«      S # t        $ r'}|j                  ||d|it        |«      ¬«       |‚d }~wt         $ rh}|j                  ||d|it        |«      ¬«       t#        |d«      r!t        t%        |dd«      t        |«      ¬«      ‚t        dt        |«      ¬«      ‚d }~ww xY w)N)r}   r  rÓ   r-   rÛ   r/  rÜ   T)rî   r  r›   rš   r®   rž   rØ   rÑ   rÓ   rÒ   r‘   Fr�  r°   r±   r1  r3  r*  rØ   r2  rw  r‚  rƒ  r�   ró   r\   )rB  rN   r¹   r3   r†  rì   rK  rž   rL  rM  r„  r…  rò   r¨   r*   r»   rÈ   rü   rR  )r=   r}   r  rØ   r`   r›   rž   r®   rš   rÑ   Úaimg_generationrÒ   r‘   rî   rÓ   rã   rœ   Ú	_responser  rÉ   s                       rG   r‚  z%OpenAIChatCompletion.image_generation~  s<  € ð ˆðR	CØ"¨fÑH¸ÐHˆDØ!%§¡¨-¸Ó!;ˆKÜ˜k¬3Ô/Ü!¨cÐ;WÔXÐXà $Ñ&Ø×-Ñ-ØØ!Ø +Ø#1Ø%Ø#Ø#Ø!Ø +Ø!-Ø#ð .ó ð ð ,0×+BÑ+BØØØ!ØØ'Ø)Øð ,Có ,ˆMð × Ñ ØØ%×-Ñ-à /°7¸=×;PÑ;PÐ:QÐ1RÐSØ -× 7Ñ 7× FÑ FØ#'Ø+/ñ	!ð !ô 	ñ 7>Ð2�4Ð2˜¨'Ò2À4ð ð  =˜}×3Ñ3×<Ñ<Ñ]¸|Ñ]ÐU\Ò]ˆIà'×2Ñ2Ó4ˆHà×!Ñ!ØØØ!6¸Ð =Ø"*ð	 "ô ô 4Ø (Ø&4Ø0ôð øô
 ò 	à×!Ñ!ØØØ!6¸Ð =Ü"% a£&ð	 "ô ð ˆGûÜò 	Cà×!Ñ!ØØØ!6¸Ð =Ü"% a£&ð	 "ô ô �q˜-Ô(Ü!¬g°a¸ÈÓ.LÔVYÐZ[ÓV\Ô]Ð]ä!¨c¼3¸q»6ÔBÐBûð	Cús,   „AD ÁB>D Ä	F8Ä""EÅF8ÅA#F3Æ3F8ÚvoiceÚprojectÚaspeechc                 ó„  — |�"|du r| j                  |||||||||	|
|||¬«      S | j                  d|||
|	||¬«      }t        t        |«      }|j	                  ||t        |||«      t        |j                  «      dœ¬«        |j                  j                  j                  d	|||dœ|¤Ž}t        |j                  ¬«      S )
NT)r}   r4  rŠ  r`   rž   r®   rÒ   r‹  rÓ   rØ   r›   rÑ   rÙ   Frv  r}  r3  ©r}   rŠ  r4  ©r  r\   )Úasync_audio_speechrì   r   r   rK  r   r»   rá   ÚaudioÚspeechrû   ÚHttpxBinaryResponseContentr  )r=   r}   r4  rŠ  r`   rž   r®   rÒ   r‹  rÓ   rØ   r›   rŒ  rÑ   rÙ   rã   Úsync_clientr  s                     rG   Úaudio_speechz!OpenAIChatCompletion.audio_speechâ  s  € ð" Ð 7¨d¡?Ø×*Ñ*ØØØØ /ØØ!Ø)ØØ'ØØ'ØØ-ð +ó ð ð   $×6Ñ6ØØØØØ#ØØ)ð  7ó  
ˆô "¤&¨-Ó8ˆØ×ÑØØä':¸5À%ÈÓ'YÜ × 4Ñ 4Ó5ñð 	ô 	
ð :˜+×+Ñ+×2Ñ2×9Ñ9ð 
ØØØñ
ð ñ	
ˆô *°8×3DÑ3DÔEÐErI   c              ƒ   óT  K  — t        t        | j                  d|||
|	||¬«      «      }|j                  ||t	        |||«      t        |j                  «      dœ¬«        |j                  j                  j                  d|||dœ|¤Žƒ d {  –—† }t        |j                  ¬«      S 7 Œ­w)NTrv  r}  r3  rŽ  r�  r\   )r   r   rì   rK  r   r»   rá   r‘  r’  rû   r“  r  )r=   r}   r4  rŠ  r`   rž   r®   rÒ   r‹  rÓ   rØ   r›   rÑ   rÙ   rã   r  s                   rG   r�  z'OpenAIChatCompletion.async_audio_speech   sÍ   è ø€ ô   $ÜØ×#Ñ#ØØØ!ØØ'ØØ-ð $ó ó 
ˆð 	×ÑØØä':¸5À%ÈÓ'YÜ × 6Ñ 6Ó7ñð 	ô 	
ð !B × 3Ñ 3× :Ñ :× AÑ Að !
ØØØñ!
ð ñ	!
÷ 
ˆô *°8×3DÑ3DÔEÐEð
ús   ‚B	B(ÂB&ÂB(rd   r¸   r{   )NNNNNNNNNFN)NNNNNNNN)
NNNNNNNNNN)NNNNN)NNNNNN)NNNNNNN©NNN)0rf   rg   rh   rH   r   r   r»   r¹   rÕ   r¿   rG  r   r¾   rF  r   rì   r   rj   rÂ   Útupler   r  r
  Úobjectr¼   r  r&   r(   r"  r   rA  r    r&  rJ  rI  rg  rr  rt  r#   r{  rx  r†  r$   r‚  r“  r•  r�  rÃ   rÄ   s   @rG   rÌ   rÌ   E  sÏ
  ø„ õð $(Ø"&ñ		-à˜Ñ$ð	-ð ˜D‘jð	-ð ˜4‘Zó		-ð #Ø#Ø"&Ø)6¨¯©°tÓ)<Ø"5Ø#'Ø.2Ø48ñBàðBð �t‘ðBð ˜‘*ð	Bð
 ˜4‘ZðBð ˜Ÿ™Ñ&ðBð ˜4‘ZðBð ˜D‘jðBð ˜Ñ$ tÑ+ðBð ! Ñ1ðBð 
�+Ñ	 Ñ	$óBñH Óð&à#ð&ð ð&ð ˜Ÿ™Ñ&ð	&ð
 'ð&ð 
ˆt�YˆÑ	ò&ó ð&ñP Óð'àð'ð ð'ð ˜Ÿ™Ñ&ð	'ð
 'ð'ð 
ˆt�YˆÑ	ò'ó ð'ðRNàðNð ðNð �t‘*ð	Nð
 ðNð 'ðNð ðNð ðNð 
�$‰óNðj '+ñ"àð"ð 'ð"ð ð	"ð
 ˜t™ð"ð 
ó"ð2 !Ø $Ø)-Ø"Ø#Ø"&Ø&*Ø%)Ø!ØØ#Ø#%ØØ#'Ø*.Ø#'Ø48ñ/qà%ðqð ˜Ÿ™Ñ&ðqð ð	qð
 ðqð 'ðqð �T‰zðqð ˜‘+ðqð   $‘ðqð �t‘ðqð ˜‘*ðqð ˜4‘Zðqð ˜t™ðqð ˜d™
ðqð ðqð" ˜‘ð#qð$ !ð%qð( ˜D‘jð)qð* ! 4™Zð+qð, ˜D‘[ð-qð. ! Ñ1õ/qðz #Ø#Ø"&Ø#'ØØØØ#'Ø&*Ø!Ø48ñ)yàðyð ðyð ð	yð
 $ðyð ðyð &ðyð 'ðyð ˜Ÿ™Ñ&ðyð �t‘ðyð ˜‘*ðyð ˜4‘Zðyð ˜D‘jðyð" ˜D‘[ð#yð$ ˜t™ð%yð& ð'yð( ! Ñ1ó)yðB #Ø#Ø"&Ø#'ØØØØ&*ñ7ð ˜Ÿ™Ñ&ð7ð ð	7ð
 ð7ð �t‘ð7ð ˜‘*ð7ð ˜4‘Zð7ð ˜D‘jð7ð ˜t™ó7ðD #Ø#Ø"&Ø#'ØØØØ#'Ø&*Ø48ñ%uà˜Ÿ™Ñ&ðuð ðuð ð	uð
 ðuð $ðuð ðuð 'ðuð �t‘ðuð ˜‘*ðuð ˜4‘Zðuð ˜D‘jðuð  ˜D‘[ð!uð" ˜t™ð#uð$ ! Ñ1ó%uðn
°¸±ð 
ÈÈdÉ
ð 
ÐW[ó 
ñ Óðà#ðð ðð ˜Ÿ™Ñ&ð	ð
 'òó ðñ( Óðàðð ðð ˜Ÿ™Ñ&ð	ð
 'òó ðð8 #Ø#Ø%)ØØ48ñDbàðDbð ðDbð *ð	Dbð
 ðDbð 'ðDbð �t‘ðDbð ˜‘*ðDbð ˜dÑ"ðDbð ! Ñ1óDbð\ #Ø#ØØØ"&Ø48ñTbàðTbð ðTbð ð	Tbð *ðTbð ðTbð �t‘ðTbð ˜‘*ðTbð ˜4‘ZðTbð ! Ñ1ðTbð 
õTbðz #Ø#ØØØ#'Ø#ñ=àð=ð ð=ð &ð	=ð
 ð=ð 'ð=ð �t‘ð=ð ˜‘*ð=ð ˜D‘jð=ð ˜‘ó=ðL #Ø#Ø/3ØØØ#'Ø#ñbCà�T‰zðbCð ðbCð ð	bCð
 ðbCð 'ðbCð �t‘ðbCð ˜‘*ðbCð &¨Ñ,ðbCð ˜D‘jðbCð ˜‘ðbCð 
óbCðb  $ØØ48ñ<Fàð<Fð ð<Fð ð	<Fð
 ð<Fð �t‘ð<Fð ˜‘*ð<Fð ˜D‘jð<Fð �t‘ð<Fð ð<Fð ˜Ÿ™Ñ&ð<Fð 'ð<Fð ˜‘ð<Fð ! Ñ1ð<Fð  
$ó!<FðV Ø48ñ-Fàð-Fð ð-Fð ð	-Fð
 ð-Fð �t‘ð-Fð ˜‘*ð-Fð ˜D‘jð-Fð �t‘ð-Fð ð-Fð ˜Ÿ™Ñ&ð-Fð 'ð-Fð ! Ñ1ð-Fð 
$÷-FrI   rÌ   c                   ó¸  ‡ — e Zd ZdZdˆ fd„Z	 	 d dedz  dedz  deej                  z  de	dz  d	edz  d
e
ez  dz  dede
ez  dz  fd„Zdededefd„Z	 d!dededededz  deej                  z  de	dz  d	edz  d
e
ez  dz  deeddef   z  fd„Zdededefd„Z	 d!dededededz  deej                  z  de	dz  d	edz  d
e
ez  dz  deeddef   z  fd„Z	 d"dedede	defd„Z	 	 d#dededededz  deej                  z  de	dz  d	edz  de	d
e
ez  dz  defd„Zdededefd„Z	 d!dededededz  deej                  z  de	dz  d	edz  d
e
ez  dz  fd„Zdededefd„Z	 d!dededededz  deej                  z  de	dz  d	edz  d
e
ez  dz  fd„Z	 d!dededz  fd„Z 	 	 d$dedededz  deej                  z  de	dz  d	edz  dedz  d
e
ez  dz  fd„Z!ˆ xZ"S )%ÚOpenAIFilesAPIz©
    OpenAI methods to support for batches
    - create_file()
    - retrieve_file()
    - list_files()
    - delete_file()
    - file_content()
    - update_file()
    re   Nc                 ó"   •— t         ‰| �  «        y r{   rÎ   rÏ   s    €rG   rH   zOpenAIFilesAPI.__init__[  rÐ   rI   rž   r®   rØ   rÓ   rÒ   rÑ   Ú	_is_asyncc                 óà   — t        «       }d }	|€]i }
|j                  «       D ]*  \  }}|dk(  s
|dk(  s|dk(  rŒ|dk(  r|�||
d<   Œ#|€Œ&||
|<   Œ, |du rt        di |
¤Ž}	|	S t        di |
¤Ž}	|	S |}	|	S ©Nr=   rÑ   r�  r®   rá   Tr\   ©r?   rA   r   r   ©r=   rž   r®   rØ   rÓ   rÒ   rÑ   r�  Úreceived_argsrã   rî   rV   rW   s                rG   Úget_openai_clientz OpenAIFilesAPI.get_openai_client^  ó±   € ô 6<³XˆØ59ˆØˆ>ØˆDØ%×+Ñ+Ó-ò  ‘��1Ø˜’; ! x¢-°1¸Ò3CØØ˜*’_¨¨Ø'(�D˜Ò$Ø‘]Ø�D˜’Gð ð ˜DÑ Ü +Ñ 3¨dÑ 3�ð Ðô	 !'¡¨¡�ð Ðð #ˆMàÐrI   Úcreate_file_datarã   c              ƒ   óœ   K  —  |j                   j                  di |¤Žƒ d {  –—† }t        j                  |j	                  «       «      S 7 Œ'­w©Nr\   )Úfilesrû   ÚOpenAIFileObjectÚmodel_validaterò   )r=   r¥  rã   r  s       rG   Úacreate_filezOpenAIFilesAPI.acreate_file|  sG   è ø€ ð
 !; × 3Ñ 3× :Ñ :Ñ NÐ=MÑ N×NˆÜ×.Ñ.¨x×/BÑ/BÓ/DÓEÐEð Oúó   ‚ A¢A
£(Ac	           	      óJ  — | j                  |||||||¬«      }	|	€t        d«      ‚|du r.t        |	t        «      st        d«      ‚| j	                  ||	¬«      S  t        t        |	«      j                  j                  di |¤Ž}
t        j                  |
j                  «       «      S )N©rž   r®   rØ   rÓ   rÒ   rÑ   r�  újOpenAI client is not initialized. Make sure api_key is passed or OPENAI_API_KEY is set in the environment.Tú\OpenAI client is not an instance of AsyncOpenAI. Make sure you passed an AsyncOpenAI client.)r¥  rã   r\   )r£  rD  rN   r   r«  r   r   r¨  rû   r©  rª  rò   )r=   r�  r¥  r®   rž   rØ   rÓ   rÒ   rÑ   rã   r  s              rG   Úcreate_filezOpenAIFilesAPI.create_file„  sÃ   € ð =A×<RÑ<RØØØØ#Ø%ØØð =Só =
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬[Ô9Ü Øróð ð ×$Ñ$Ð6FÐVcÐ$ÓdÐdØBœ$œv }Ó5×;Ñ;×BÑBÑVÐEUÑVˆÜ×.Ñ.¨x×/BÑ/BÓ/DÓEÐErI   Úfile_content_requestc              ƒ   ó‚   K  —  |j                   j                  di |¤Žƒ d {  –—† }t        |j                  ¬«      S 7 Œ­w)Nr�  r\   )r¨  r=  r“  r  )r=   r²  rã   r  s       rG   Úafile_contentzOpenAIFilesAPI.afile_content¦  s>   è ø€ ð
 !< × 3Ñ 3× ;Ñ ;Ñ SÐ>RÑ S×SˆÜ)°8×3DÑ3DÔEÐEð Tús   ‚ ?¢=£?c	           	      ó0  — | j                  |||||||¬«      }	|	€t        d«      ‚|du r.t        |	t        «      st        d«      ‚| j	                  ||	¬«      S  t        t        |	«      j                  j                  di |¤Ž}
t        |
j                  ¬«      S )Nr®  r¯  Tr°  )r²  rã   r�  r\   )r£  rD  rN   r   r´  r   r   r¨  r=  r“  r  )r=   r�  r²  r®   rž   rØ   rÓ   rÒ   rÑ   rã   r  s              rG   Úfile_contentzOpenAIFilesAPI.file_content®  sÃ   € ð =A×<RÑ<RØØØØ#Ø%ØØð =Só =
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬[Ô9Ü Øróð ð ×%Ñ%Ø%9Ø+ð &ó ð ð Dœ$œv }Ó5×;Ñ;×CÑCÑ[ÐFZÑ[ˆä)°8×3DÑ3DÔEÐErI   Ú
chunk_sizec              ƒ   ó  ‡‡‡K  —  |j                   j                  j                  di |¤ŽŠ‰j                  «       ƒ d {  –—† Št	        ‰j
                  «      }dt        t           fˆˆˆfd„}t         |«       |¬«      S 7 Œ@­w)Nre   c                 óÊ  •K  — d } 	 ‰j                  ‰¬«      2 3 d {  –—† }|­–— Œ7 Œ
6 n# t        $ r}|} ‚ d }~ww xY w	 | €‰j                  d d d «      ƒ d {  –—†7   y ‰j                  t        | «      | | j                  «      ƒ d {  –—†7   y # | €‰j                  d d d «      ƒ d {  –—†7   w ‰j                  t        | «      | | j                  «      ƒ d {  –—†7   w xY w­w©N)r·  )Ú
iter_bytesÚBaseExceptionÚ	__aexit__r  Ú__traceback__)ÚexcrÆ   rÉ   r·  r  Úresponse_cms      €€€rG   Ú_streamz7OpenAIFilesAPI.afile_content_streaming.<locals>._streamÞ  sÞ   øè ø€ Ø(,ˆCð
SØ#+×#6Ñ#6À*Ð#6Ó#M÷  ð  ˜%Ø”Kð øÑ#Møä ò Ø�Øûðúð $Nð �;Ø%×/Ñ/°°d¸DÓA×AÒAà%×/Ñ/´°S³	¸3À×@QÑ@QÓR×RÒRøð �;Ø%×/Ñ/°°d¸DÓA×AÒAà%×/Ñ/´°S³	¸3À×@QÑ@QÓR×RÒRüsy   ƒC#‡, ™*�(ž*¡, ¨*ª, «B ¬	=µ8¸=½B ÁC#ÁAÁ/C#Â	BÂ
C#ÂC Â)B,Â*/C ÃCÃC Ã C#©Ústream_iteratorr‘   r\   )	r¨  Úwith_streaming_responser=  Ú
__aenter__rj   r‘   r   Úbytesr   )r=   r²  rã   r·  r‘   rÁ  r  rÀ  s      `  @@rG   Úafile_content_streamingz&OpenAIFilesAPI.afile_content_streamingÔ  sv   úè ø€ ð Q˜]×0Ñ0×HÑH×PÑPÑhÐSgÑhˆØ +× 6Ñ 6Ó 8×8ˆÜ˜h×.Ñ.Ó/ˆð	Sœ}¬UÑ3÷ 	Sô *¹'»)ÈWÔUÐUð# 9ús   …:B¿B Á ABc
           	      ó¸  ‡‡‡— | j                  ||||||	|¬«      }
|
€t        d«      ‚|du r/t        |
t        «      st        d«      ‚| j	                  ||
‰¬«      S  t        t        |
«      j                  j                  j                  d	i |¤ŽŠ‰j                  «       Št        ‰j                  «      }dt        t           fˆˆˆfd„}t         |«       |¬«      S )
Nr®  r¯  Tr°  )r²  rã   r·  re   c               3   óp  •K  — d } 	 ‰j                  ‰¬«      E d {  –—†  	 | €‰j                  d d d «       y ‰j                  t        | «      | | j                  «       y 7 ŒB# t        $ r}|} ‚ d }~ww xY w# | €‰j                  d d d «       w ‰j                  t        | «      | | j                  «       w xY w­wrº  )r»  r¼  Ú__exit__r  r¾  )r¿  rÉ   r·  r  rÀ  s     €€€rG   rÁ  z6OpenAIFilesAPI.file_content_streaming.<locals>._stream  s±   øè ø€ Ø(,ˆCð	LØ#×.Ñ.¸*Ð.ÓE×EÑEð
 �;Ø×(Ñ(¨¨t°TÕ:à×(Ñ(¬¨c«°C¸×9JÑ9JÕKð FùÜ ò Ø�Øûðûð �;Ø×(Ñ(¨¨t°TÕ:à×(Ñ(¬¨c«°C¸×9JÑ9JÕKüsC   ƒB6‡A! œA�A! ¢=B6ÁA! Á!	A2Á*A-Á-A2Á2A5 Á5>B3Â3B6rÂ  r\   )r£  rD  rN   r   rÇ  r   r   r¨  rÄ  r=  Ú	__enter__rj   r‘   r   rÆ  r   )r=   r�  r²  r®   rž   rØ   rÓ   rÒ   r·  rÑ   rã   r‘   rÁ  r  rÀ  s           `    @@rG   Úfile_content_streamingz%OpenAIFilesAPI.file_content_streamingî  sý   ú€ ð =A×<RÑ<RØØØØ#Ø%ØØð =Só =
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬[Ô9Ü Øróð ð ×/Ñ/Ø%9Ø+Ø%ð 0ó ð ð _œT¤&¨-Ó8×>Ñ>×VÑV×^Ñ^ÑvÐauÑvˆØ%×/Ñ/Ó1ˆÜ˜h×.Ñ.Ó/ˆð	Lœ¤%™÷ 	Lô *¹'»)ÈWÔUÐUrI   Úfile_idc              ƒ   óZ   K  — |j                   j                  |¬«      ƒ d {  –—† }|S 7 Œ­w©N©rÍ  )r¨  Úretrieve©r=   rÍ  rã   r  s       rG   Úaretrieve_filezOpenAIFilesAPI.aretrieve_file&  s/   è ø€ ð
 !.× 3Ñ 3× <Ñ <ÀWÐ <Ó M×MˆØˆð Núó   ‚ +¢)£+c	           	      óì   — | j                  |||||||¬«      }	|	€t        d«      ‚|du r.t        |	t        «      st        d«      ‚| j	                  ||	¬«      S |	j
                  j                  |¬«      }
|
S ©Nr®  r¯  Tr°  )rÍ  rã   rÐ  )r£  rD  rN   r   rÓ  r¨  rÑ  ©r=   r�  rÍ  r®   rž   rØ   rÓ   rÒ   rÑ   rã   r  s              rG   Úretrieve_filezOpenAIFilesAPI.retrieve_file.  s¬   € ð =A×<RÑ<RØØØØ#Ø%ØØð =Só =
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬[Ô9Ü Øróð ð ×&Ñ&ØØ+ð 'ó ð ð (×-Ñ-×6Ñ6¸wÐ6ÓGˆàˆrI   c              ƒ   óZ   K  — |j                   j                  |¬«      ƒ d {  –—† }|S 7 Œ­wrÏ  )r¨  ÚdeleterÒ  s       rG   Úadelete_filezOpenAIFilesAPI.adelete_fileT  s/   è ø€ ð
 !.× 3Ñ 3× :Ñ :À7Ð :Ó K×KˆØˆð LúrÔ  c	           	      óì   — | j                  |||||||¬«      }	|	€t        d«      ‚|du r.t        |	t        «      st        d«      ‚| j	                  ||	¬«      S |	j
                  j                  |¬«      }
|
S rÖ  )r£  rD  rN   r   rÛ  r¨  rÚ  r×  s              rG   Údelete_filezOpenAIFilesAPI.delete_file\  s¬   € ð =A×<RÑ<RØØØØ#Ø%ØØð =Só =
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬[Ô9Ü Øróð ð ×$Ñ$ØØ+ð %ó ð ð (×-Ñ-×4Ñ4¸WÐ4ÓEˆàˆrI   Úpurposec              ƒ   óÆ   K  — t        |t        «      r&|j                  j                  |¬«      ƒ d {  –—† }|S |j                  j                  «       ƒ d {  –—† }|S 7 Œ*7 Œ­w)N©rÞ  )rN   r»   r¨  r¼   )r=   rã   rÞ  r  s       rG   Úalist_fileszOpenAIFilesAPI.alist_files‚  s]   è ø€ ô
 �gœsÔ#Ø*×0Ñ0×5Ñ5¸gÐ5ÓF×FˆHð ˆð +×0Ñ0×5Ñ5Ó7×7ˆHØˆð Gøà7ús!   ‚0A!²A³#A!ÁAÁA!ÁA!c	           	      óD  — | j                  |||||||¬«      }	|	€t        d«      ‚|du r.t        |	t        «      st        d«      ‚| j	                  ||	¬«      S t        |t
        «      r|	j                  j                  |¬«      }
|
S |	j                  j                  «       }
|
S )Nr®  r¯  Tr°  )rÞ  rã   rà  )r£  rD  rN   r   rá  r»   r¨  r¼   )r=   r�  r®   rž   rØ   rÓ   rÒ   rÞ  rÑ   rã   r  s              rG   Ú
list_fileszOpenAIFilesAPI.list_files�  sÓ   € ð =A×<RÑ<RØØØØ#Ø%ØØð =Só =
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬[Ô9Ü Øróð ð ×#Ñ#ØØ+ð $ó ð ô
 �gœsÔ#Ø$×*Ñ*×/Ñ/¸Ð/Ó@ˆHð ˆð %×*Ñ*×/Ñ/Ó1ˆHàˆrI   rd   ©NFr{   )é   )rå  Nr¸   )#rf   rg   rh   ri   rH   r»   rF  r¿   rG  r¹   r   r   r¾   r£  ÚCreateFileRequestr©  r«  r   r±  ÚFileContentRequestr“  r´  r¶  r   rÇ  rÌ  Ú
FileObjectrÓ  rØ  r   rÛ  rÝ  rá  rã  rÃ   rÄ   s   @rG   r›  r›  P  s»  ø„ ñõð /3Øñà�t‘ðð ˜‘*ðð ˜Ÿ™Ñ&ð	ð
 ˜4‘Zðð ˜D‘jðð ˜Ñ$ tÑ+ðð ðð 
�+Ñ	 Ñ	$óð<Fà+ðFð #ðFð 
ó	Fð" /3ñ Fàð Fð ,ð Fð ð	 Fð
 �t‘ð Fð ˜Ÿ™Ñ&ð Fð ˜4‘Zð Fð ˜D‘jð Fð ˜Ñ$ tÑ+ð Fð 
˜I d¨DÐ2BÐ&BÑCÑ	Có FðDFà0ðFð #ðFð 
$ó	Fð" /3ñ$Fàð$Fð 1ð$Fð ð	$Fð
 �t‘ð$Fð ˜Ÿ™Ñ&ð$Fð ˜4‘Zð$Fð ˜D‘jð$Fð ˜Ñ$ tÑ+ð$Fð 
$ i°°dÐ<VÐ0VÑ&WÑ	Wó$FðT &ñ	Và0ðVð #ðVð ð	Vð
 
$óVðF &Ø.2ñ6Vàð6Vð 1ð6Vð ð	6Vð
 �t‘ð6Vð ˜Ÿ™Ñ&ð6Vð ˜4‘Zð6Vð ˜D‘jð6Vð ð6Vð ˜Ñ$ tÑ+ð6Vð 
$ó6Vðpàðð #ðð 
ó	ð" /3ñ$àð$ð ð$ð ð	$ð
 �t‘ð$ð ˜Ÿ™Ñ&ð$ð ˜4‘Zð$ð ˜D‘jð$ð ˜Ñ$ tÑ+ó$ðLàðð #ðð 
ó	ð" /3ñ$àð$ð ð$ð ð	$ð
 �t‘ð$ð ˜Ÿ™Ñ&ð$ð ˜4‘Zð$ð ˜D‘jð$ð ˜Ñ$ tÑ+ó$ðR #ñ	à"ð	ð �t‘ó	ð& #Ø.2ñ(àð(ð ð(ð �t‘ð	(ð
 ˜Ÿ™Ñ&ð(ð ˜4‘Zð(ð ˜D‘jð(ð �t‘ð(ð ˜Ñ$ tÑ+÷(rI   r›  c                   ó¾  ‡ — e Zd ZdZdˆ fd„Z	 	 ddedz  dedz  deej                  z  de	dz  d	edz  d
e
ez  dz  dede
ez  dz  fd„Zdededefd„Z	 ddedededz  dedz  deej                  z  de	dz  d	edz  d
e
ez  dz  deeddef   z  fd„Zdededefd„Z	 ddedededz  dedz  deej                  z  de	dz  d	edz  d
e
dz  fd„Zdededefd„Z	 ddedededz  dedz  deej                  z  de	dz  d	edz  d
e
dz  fd„Z	 	 ddededz  de	dz  fd„Z	 	 	 ddededz  dedz  deej                  z  de	dz  d	edz  dedz  de	dz  d
e
dz  fd„Zˆ xZS ) ÚOpenAIBatchesAPIzƒ
    OpenAI methods to support for batches
    - create_batch()
    - retrieve_batch()
    - cancel_batch()
    - list_batch()
    re   Nc                 ó"   •— t         ‰| �  «        y r{   rÎ   rÏ   s    €rG   rH   zOpenAIBatchesAPI.__init__Á  rÐ   rI   rž   r®   rØ   rÓ   rÒ   rÑ   r�  c                 óà   — t        «       }d }	|€]i }
|j                  «       D ]*  \  }}|dk(  s
|dk(  s|dk(  rŒ|dk(  r|�||
d<   Œ#|€Œ&||
|<   Œ, |du rt        di |
¤Ž}	|	S t        di |
¤Ž}	|	S |}	|	S rŸ  r   r¡  s                rG   r£  z"OpenAIBatchesAPI.get_openai_clientÄ  r¤  rI   Úcreate_batch_datarã   c              ƒ   óœ   K  —  |j                   j                  di |¤Žƒ d {  –—† }t        j                  |j	                  «       «      S 7 Œ'­wr§  )Úbatchesrû   r%   rª  rò   )r=   rí  rã   r  s       rG   Úacreate_batchzOpenAIBatchesAPI.acreate_batchâ  sG   è ø€ ð
 != × 5Ñ 5× <Ñ <Ñ QÐ?PÑ Q×QˆÜ×*Ñ*¨8×+>Ñ+>Ó+@ÓAÐAð Rúr¬  c	           	      óJ  — | j                  |||||||¬«      }	|	€t        d«      ‚|du r.t        |	t        «      st        d«      ‚| j	                  ||	¬«      S  t        t        |	«      j                  j                  di |¤Ž}
t        j                  |
j                  «       «      S )Nr®  r¯  Tr°  )rí  rã   r\   )r£  rD  rN   r   rð  r   r   rï  rû   r%   rª  rò   )r=   r�  rí  rž   r®   rØ   rÓ   rÒ   rÑ   rã   r  s              rG   Úcreate_batchzOpenAIBatchesAPI.create_batchê  sÃ   € ð =A×<RÑ<RØØØØ#Ø%ØØð =Só =
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬[Ô9Ü Øróð ð ×%Ñ%Ð8IÐYfÐ%ÓgÐgØDœ$œv }Ó5×=Ñ=×DÑDÑYÐGXÑYˆä×*Ñ*¨8×+>Ñ+>Ó+@ÓAÐArI   Úretrieve_batch_datac              ƒ   óÈ   K  — t        j                  d|«        |j                  j                  di |¤Žƒ d {  –—† }t	        j
                  |j                  «       «      S 7 Œ'­w)Nzretrieving batch, args= %sr\   )r   r  rï  rÑ  r%   rª  rò   )r=   ró  rã   r  s       rG   Úaretrieve_batchz OpenAIBatchesAPI.aretrieve_batch  sY   è ø€ ô
 	×ÑÐ9Ð;NÔOØ > × 5Ñ 5× >Ñ >Ñ UÐATÑ U×UˆÜ×*Ñ*¨8×+>Ñ+>Ó+@ÓAÐAð Vúó   ‚6A"¸A ¹(A"c	           	      óJ  — | j                  |||||||¬«      }	|	€t        d«      ‚|du r.t        |	t        «      st        d«      ‚| j	                  ||	¬«      S  t        t        |	«      j                  j                  di |¤Ž}
t        j                  |
j                  «       «      S )Nr®  r¯  Tr°  )ró  rã   r\   )r£  rD  rN   r   rõ  r   r   rï  rÑ  r%   rª  rò   )r=   r�  ró  rž   r®   rØ   rÓ   rÒ   rÑ   rã   r  s              rG   Úretrieve_batchzOpenAIBatchesAPI.retrieve_batch  sÃ   € ð =A×<RÑ<RØØØØ#Ø%ØØð =Só =
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬[Ô9Ü Øróð ð ×'Ñ'Ð<OÐ_lÐ'ÓmÐmØFœ$œv }Ó5×=Ñ=×FÑFÑ]ÐI\Ñ]ˆÜ×*Ñ*¨8×+>Ñ+>Ó+@ÓAÐArI   Úcancel_batch_datac              ƒ   óÈ   K  — t        j                  d|«        |j                  j                  di |¤Žƒ d {  –—† }t	        j
                  |j                  «       «      S 7 Œ'­w)Nz async cancelling batch, args= %sr\   )r   r  rï  Úcancelr%   rª  rò   )r=   rù  rã   r  s       rG   Úacancel_batchzOpenAIBatchesAPI.acancel_batch8  sY   è ø€ ô
 	×ÑÐ?ÐARÔSØ < × 5Ñ 5× <Ñ <Ñ QÐ?PÑ Q×QˆÜ×*Ñ*¨8×+>Ñ+>Ó+@ÓAÐAð Rúrö  c	           	      ód  — | j                  |||||||¬«      }	|	€t        d«      ‚|du r.t        |	t        «      st        d«      ‚| j	                  ||	¬«      S t        |	t
        «      st        d«      ‚ |	j                  j                  di |¤Ž}
t        j                  |
j                  «       «      S )Nr®  r¯  Tr°  )rù  rã   zVOpenAI client is not an instance of OpenAI. Make sure you passed a sync OpenAI client.r\   )r£  rD  rN   r   rü  r   rï  rû  r%   rª  rò   )r=   r�  rù  rž   r®   rØ   rÓ   rÒ   rÑ   rã   r  s              rG   Úcancel_batchzOpenAIBatchesAPI.cancel_batchA  sÔ   € ð =A×<RÑ<RØØØØ#Ø%ØØð =Só =
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬[Ô9Ü Øróð ð ×%Ñ%Ð8IÐYfÐ%ÓgÐgô ˜-¬Ô0ÜÐuÓvÐvØ6˜-×/Ñ/×6Ñ6ÑKÐ9JÑKˆÜ×*Ñ*¨8×+>Ñ+>Ó+@ÓAÐArI   ÚafterÚlimitc              ƒ   óŠ   K  — t        j                  d||«       |j                  j                  ||¬«      ƒ d {  –—† }|S 7 Œ­w)Nz%listing batches, after= %s, limit= %s©rÿ  r   )r   r  rï  r¼   )r=   rã   rÿ  r   r  s        rG   Úalist_batcheszOpenAIBatchesAPI.alist_batchesg  sD   è ø€ ô 	×ÑÐDÀeÈUÔSØ -× 5Ñ 5× :Ñ :ÀÈeÐ :Ó T×TˆØˆð Uús   ‚8AºA»Ac
           	      óð   — | j                  ||||||	|¬«      }
|
€t        d«      ‚|du r/t        |
t        «      st        d«      ‚| j	                  |
||¬«      S |
j
                  j                  ||¬«      }|S )Nr®  r¯  Tr°  )rã   rÿ  r   r  )r£  rD  rN   r   r  rï  r¼   )r=   r�  rž   r®   rØ   rÓ   rÒ   rÿ  r   rÑ   rã   r  s               rG   Úlist_batcheszOpenAIBatchesAPI.list_batchesq  s§   € ð =A×<RÑ<RØØØØ#Ø%ØØð =Só =
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬[Ô9Ü Øróð ð ×%Ñ%°MÈÐV[Ð%Ó\Ð\Ø'×/Ñ/×4Ñ4¸5ÈÐ4ÓNˆØˆrI   rd   rä  r{   r¸   r—  )rf   rg   rh   ri   rH   r»   rF  r¿   rG  r¹   r   r   r¾   r£  ÚCreateBatchRequestr%   rð  r   rò  ÚRetrieveBatchRequestrõ  rø  ÚCancelBatchRequestrü  rþ  r  r  rÃ   rÄ   s   @rG   rê  rê  ¸  sa  ø„ ñõð /3Øñà�t‘ðð ˜‘*ðð ˜Ÿ™Ñ&ð	ð
 ˜4‘Zðð ˜D‘jðð ˜Ñ$ tÑ+ðð ðð 
�+Ñ	 Ñ	$óð<Bà-ðBð #ðBð 
ó	Bð" /3ñ!Bàð!Bð .ð!Bð �t‘ð	!Bð
 ˜‘*ð!Bð ˜Ÿ™Ñ&ð!Bð ˜4‘Zð!Bð ˜D‘jð!Bð ˜Ñ$ tÑ+ð!Bð 
˜	 $¨¨lÐ":Ñ;Ñ	;ó!BðFBà1ðBð #ðBð 
ó	Bð$ !%ñ Bàð Bð 2ð Bð �t‘ð	 Bð
 ˜‘*ð Bð ˜Ÿ™Ñ&ð Bð ˜4‘Zð Bð ˜D‘jð Bð ˜‘ó BðDBà-ðBð #ðBð 
ó	Bð$ !%ñ$Bàð$Bð .ð$Bð �t‘ð	$Bð
 ˜‘*ð$Bð ˜Ÿ™Ñ&ð$Bð ˜4‘Zð$Bð ˜D‘jð$Bð ˜‘ó$BðR !Ø ñ	à"ðð �T‰zðð �T‰zó	ð$ !Ø Ø $ñ!àð!ð �t‘ð!ð ˜‘*ð	!ð
 ˜Ÿ™Ñ&ð!ð ˜4‘Zð!ð ˜D‘jð!ð �T‰zð!ð �T‰zð!ð ˜‘÷!rI   rê  c            $       ót  ‡ — e Zd ZdCˆ fd„Z	 dDdedz  dedz  deej                  z  dedz  dedz  d	e	dz  de	fd
„Z
	 dDdedz  dedz  deej                  z  dedz  dedz  d	edz  defd„Z	 	 	 	 dEdedz  dedz  deej                  z  dedz  dedz  d	edz  dedz  dedz  dedz  dedz  dee   fd„Zededz  dedz  deej                  z  dedz  dedz  d	edz  ded   deddee   f   fd„«       Zededz  dedz  deej                  z  dedz  dedz  d	e	dz  ded   dz  dee   fd„«       Z	 	 	 	 	 	 dFdedz  dedz  deej                  z  dedz  dedz  dedz  dedz  dedz  dedz  fd„Zdedz  dedz  deej                  z  dedz  dedz  d	edz  dedefd„Z	 	 dGdedz  dedz  deej                  z  dedz  dedz  defd„Zdedz  dedz  deej                  z  dedz  dedz  d	edz  dedefd„Z	 	 dGdedz  dedz  deej                  z  dedz  dedz  defd„Z	 dDdedededz  dedz  deej                  z  dedz  dedz  d	edz  defd„Zededededz  dedz  deej                  z  dedz  dedz  d	edz  d ed   deddef   fd!„«       Zededededz  dedz  deej                  z  dedz  dedz  d	e	dz  d ed   dz  defd"„«       Z	 	 dGdedededz  dedz  deej                  z  dedz  dedz  d edz  fd#„Z	 dDdededz  dedz  deej                  z  dedz  dedz  d	edz  dee   fd$„Zedededz  dedz  deej                  z  dedz  dedz  d	edz  d%ed   deddee   f   fd&„«       Z edededz  dedz  deej                  z  dedz  dedz  d	e	dz  d%ed   dz  dee   fd'„«       Z 	 	 dGdededz  dedz  deej                  z  dedz  dedz  fd(„Z d)edz  dedz  dedz  deej                  z  dedz  dedz  d	edz  d*e!e"   dz  de#fd+„Z$ed)edz  dedz  dedz  deej                  z  dedz  dedz  d*e!e"   dz  d	edz  d,ed   dedde#f   fd-„«       Z%ed)edz  dedz  dedz  deej                  z  dedz  dedz  d*e!e"   dz  d	e	dz  d,ed   dz  de#fd.„«       Z%	 	 dGd)edz  dedz  dedz  deej                  z  dedz  dedz  d*e!e"   dz  fd/„Z%dededz  dedz  deej                  z  dedz  dedz  d	edz  de#fd0„Z&edededz  dedz  deej                  z  dedz  dedz  d	edz  d1ed   dedde#f   fd2„«       Z'edededz  dedz  deej                  z  dedz  dedz  d	e	dz  d1ed   dz  de#fd3„«       Z'	 	 dGdededz  dedz  deej                  z  dedz  dedz  fd4„Z'd5„ Z(deded6edz  d7edz  d)eeef   dz  d8edz  d9edz  d:e!e)   dz  dedz  dedz  deej                  z  dedz  dedz  d	edz  de*fd;„Z+d	ededed6edz  d7edz  d)edz  d8edz  d:e!e)   dz  d<e,dz  de-e.   fd=„Z/d	e	deded6edz  d7edz  d)eeef   dz  d8edz  d:e!e)   dz  d<e,dz  de0e,   fd>„Z1ededed6edz  d7edz  d)edz  d8edz  d9edz  d:e!e)   dz  dedz  dedz  deej                  z  dedz  dedz  d?ed   d<e,dz  dedde*f   f d@„«       Z2ededed6edz  d7edz  d)edz  d8edz  d9edz  d:e!e)   dz  dedz  dedz  deej                  z  dedz  dedz  d?ed   dz  d<e,dz  de*f dA„«       Z2	 	 	 dHdeded6edz  d7edz  d)eeef   dz  d8edz  d9edz  d:e!e)   dz  dedz  dedz  deej                  z  dedz  dedz  d<e,dz  fdB„Z2ˆ xZ3S )IÚOpenAIAssistantsAPIre   Nc                 ó"   •— t         ‰| �  «        y r{   rÎ   rÏ   s    €rG   rH   zOpenAIAssistantsAPI.__init__–  rÐ   rI   rž   r®   rØ   rÓ   rÒ   rÑ   c                 ó°   — t        «       }|€Gi }|j                  «       D ]%  \  }	}
|	dk(  s|	dk(  rŒ|	dk(  r|
�|
|d<   Œ|
€Œ!|
||	<   Œ' t        di |¤Ž}|S |}|S ©Nr=   rÑ   r®   rá   r\   )r?   rA   r   ©r=   rž   r®   rØ   rÓ   rÒ   rÑ   r¢  rî   rV   rW   rã   s               rG   r£  z%OpenAIAssistantsAPI.get_openai_client™  s†   € ô 6<³XˆØˆ>ØˆDØ%×+Ñ+Ó-ò  ‘��1Ø˜’; ! x¢-ØØ˜*’_¨¨Ø'(�D˜Ò$Ø‘]Ø�D˜’Gð ô #™N T™NˆMð Ðð #ˆMàÐrI   c                 ó°   — t        «       }|€Gi }|j                  «       D ]%  \  }	}
|	dk(  s|	dk(  rŒ|	dk(  r|
�|
|d<   Œ|
€Œ!|
||	<   Œ' t        di |¤Ž}|S |}|S r  )r?   rA   r   r  s               rG   Úasync_get_openai_clientz+OpenAIAssistantsAPI.async_get_openai_client²  sˆ   € ô 6<³XˆØˆ>ØˆDØ%×+Ñ+Ó-ò  ‘��1Ø˜’; ! x¢-ØØ˜*’_¨¨Ø'(�D˜Ò$Ø‘]Ø�D˜’Gð ô (Ñ/¨$Ñ/ˆMð Ðð #ˆMàÐrI   Úorderr   Úbeforerÿ  c              ƒ   óÂ   K  — | j                  ||||||¬«      }||dœ}|	r|	|d<   |
r|
|d<    |j                  j                  j                  di |¤Žƒ d {  –—† }|S 7 Œ­w)N©rž   r®   rØ   rÓ   rÒ   rÑ   ©r  r   r  rÿ  r\   )r  ÚbetaÚ
assistantsr¼   )r=   rž   r®   rØ   rÓ   rÒ   rÑ   r  r   r  rÿ  rã   Úrequest_paramsr  s                 rG   Úasync_get_assistantsz(OpenAIAssistantsAPI.async_get_assistantsÍ  s‰   è ø€ ð  $×;Ñ;ØØØØ#Ø%Øð  <ó  
ˆð Øñ!
ˆñ Ø'-ˆN˜8Ñ$ÙØ&+ˆN˜7Ñ#à B × 2Ñ 2× =Ñ =× BÑ BÑ TÀ^Ñ T×Tˆàˆð Uús   ‚AAÁAÁAÚaget_assistantsTc                  ó   — y r{   r\   ©r=   rž   r®   rØ   rÓ   rÒ   rÑ   r  s           rG   Úget_assistantsz"OpenAIAssistantsAPI.get_assistantsñ  ó   € ð 	rI   Fc                  ó   — y r{   r\   r  s           rG   r  z"OpenAIAssistantsAPI.get_assistantsþ  r  rI   c                 óà   — |�|du r| j                  ||||||¬«      S | j                  ||||||¬«      }||	dœ}|
r|
|d<   |r||d<    |j                  j                  j                  di |¤Ž}|S )NTr  r  r  rÿ  r\   )r  r£  r  r  r¼   )r=   rž   r®   rØ   rÓ   rÒ   rÑ   r  r  r   r  rÿ  rã   r  r  s                  rG   r  z"OpenAIAssistantsAPI.get_assistants	  sµ   € ð Ð&¨?¸dÑ+BØ×,Ñ,ØØ!ØØ'Ø)Øð -ó ð ð  $×5Ñ5ØØØØ#Ø%Øð  6ó  
ˆð Øñ!
ˆñ
 Ø'-ˆN˜8Ñ$ÙØ&+ˆN˜7Ñ#à<˜-×,Ñ,×7Ñ7×<Ñ<ÑN¸~ÑNˆàˆrI   Úcreate_assistant_datac              ƒ   óœ   K  — | j                  ||||||¬«      } |j                  j                  j                  di |¤Žƒ d {  –—† }	|	S 7 Œ­w)Nr  r\   )r  r  r  rû   )
r=   rž   r®   rØ   rÓ   rÒ   rÑ   r!  rã   r  s
             rG   Úasync_create_assistantsz+OpenAIAssistantsAPI.async_create_assistants<	  sb   è ø€ ð  $×;Ñ;ØØØØ#Ø%Øð  <ó  
ˆð !E × 2Ñ 2× =Ñ =× DÑ DÑ ]ÐG\Ñ ]×]ˆàˆð ^úó   ‚AAÁA
ÁAc	           	      ó¼   — |�|du r| j                  |||||||¬«      S | j                  ||||||¬«      }	 |	j                  j                  j                  di |¤Ž}
|
S )NT)rž   r®   rØ   rÓ   rÒ   rÑ   r!  r  r\   )r#  r£  r  r  rû   )r=   rž   r®   rØ   rÓ   rÒ   r!  rÑ   r#  rã   r  s              rG   Úcreate_assistantsz%OpenAIAssistantsAPI.create_assistantsS	  s‘   € ð #Ð.Ð3JÈdÑ3RØ×/Ñ/ØØ!ØØ'Ø)ØØ&;ð 0ó ð ð  $×5Ñ5ØØØØ#Ø%Øð  6ó  
ˆð ?˜-×,Ñ,×7Ñ7×>Ñ>ÑWÐAVÑWˆØˆrI   Úassistant_idc              ƒ   óœ   K  — | j                  ||||||¬«      }|j                  j                  j                  |¬«      ƒ d {  –—† }	|	S 7 Œ­w)Nr  ©r'  )r  r  r  rÚ  )
r=   rž   r®   rØ   rÓ   rÒ   rÑ   r'  rã   r  s
             rG   Úasync_delete_assistantz*OpenAIAssistantsAPI.async_delete_assistantu	  s_   è ø€ ð  $×;Ñ;ØØØØ#Ø%Øð  <ó  
ˆð !.× 2Ñ 2× =Ñ =× DÑ DÐR^Ð DÓ _×_ˆàˆð `úr$  c	           	      ó¼   — |�|du r| j                  |||||||¬«      S | j                  ||||||¬«      }	|	j                  j                  j	                  |¬«      }
|
S )NT)rž   r®   rØ   rÓ   rÒ   rÑ   r'  r  r)  )r*  r£  r  r  rÚ  )r=   rž   r®   rØ   rÓ   rÒ   r'  rÑ   Úasync_delete_assistantsrã   r  s              rG   Údelete_assistantz$OpenAIAssistantsAPI.delete_assistantŒ	  sŽ   € ð #Ð.Ð3JÈdÑ3RØ×.Ñ.ØØ!ØØ'Ø)ØØ)ð /ó ð ð  $×5Ñ5ØØØØ#Ø%Øð  6ó  
ˆð (×,Ñ,×7Ñ7×>Ñ>ÈLÐ>ÓYˆØˆrI   Ú	thread_idÚmessage_datac	              ƒ   ón  K  — | j                  ||||||¬«      }	 |	j                  j                  j                  j                  |fi |¤Žƒ d {  –—† }
d }t        |
dd «      €,d|
_        t        j                  |
j                  «       «      }|S t        j                  |
j                  «       «      }|S 7 Œd­w)Nr  ÚstatusÚ	completed)
r  r  Úthreadsr‰   rû   rR  r1  ÚOpenAIMessagerª  rj   )r=   r.  r/  rž   r®   rØ   rÓ   rÒ   rÑ   rã   Úthread_messageÚresponse_objs               rG   Úa_add_messagez!OpenAIAssistantsAPI.a_add_message¯	  sË   è ø€ ð  $×;Ñ;ØØØØ#Ø%Øð  <ó  
ˆð 6`°]×5GÑ5G×5OÑ5O×5XÑ5X×5_Ñ5_Øñ6
àñ6
÷ 0
ˆð
 .2ˆÜ�> 8¨TÓ2Ð:Ø$/ˆNÔ!Ü(×7Ñ7¸×8KÑ8KÓ8MÓNˆLð Ðô )×7Ñ7¸×8KÑ8KÓ8MÓNˆLØÐð0
ús   ‚AB5ÁB3ÁA%B5r7  c
                  ó   — y r{   r\   ©
r=   r.  r/  rž   r®   rØ   rÓ   rÒ   rÑ   r7  s
             rG   Úadd_messagezOpenAIAssistantsAPI.add_messageÒ	  ó   € ð 	rI   c
                  ó   — y r{   r\   r9  s
             rG   r:  zOpenAIAssistantsAPI.add_messageá	  r;  rI   c
           
      ó�  — |	�|	du r| j                  ||||||||¬«      S | j                  ||||||¬«      }
 |
j                  j                  j                  j
                  |fi |¤Ž}d }t        |dd «      €,d|_        t        j                  |j                  «       «      }|S t        j                  |j                  «       «      }|S )NT)r.  r/  rž   r®   rØ   rÓ   rÒ   rÑ   r  r1  r2  )r7  r£  r  r3  r‰   rû   rR  r1  r4  rª  rj   )r=   r.  r/  rž   r®   rØ   rÓ   rÒ   rÑ   r7  rã   r5  r6  s                rG   r:  zOpenAIAssistantsAPI.add_messageò	  sü   € ð Ð$¨¸$Ñ)>Ø×%Ñ%Ø#Ø)ØØ!ØØ'Ø)Øð &ó 	ð 	ð  $×5Ñ5ØØØØ#Ø%Øð  6ó  
ˆð 0Z¨}×/AÑ/A×/IÑ/I×/RÑ/R×/YÑ/YØñ0
àñ0
ˆð
 .2ˆÜ�> 8¨TÓ2Ð:Ø$/ˆNÔ!Ü(×7Ñ7¸×8KÑ8KÓ8MÓNˆLð Ðô )×7Ñ7¸×8KÑ8KÓ8MÓNˆLØÐrI   c              ƒ   ó°   K  — | j                  ||||||¬«      }|j                  j                  j                  j	                  |¬«      ƒ d {  –—† }	|	S 7 Œ­w)Nr  ©r.  )r  r  r3  r‰   r¼   ©
r=   r.  rž   r®   rØ   rÓ   rÒ   rÑ   rã   r  s
             rG   Úasync_get_messagesz&OpenAIAssistantsAPI.async_get_messages
  se   è ø€ ð  $×;Ñ;ØØØØ#Ø%Øð  <ó  
ˆð !.× 2Ñ 2× :Ñ :× CÑ C× HÑ HÐS\Ð HÓ ]×]ˆàˆð ^ús   ‚AAÁAÁAÚaget_messagesc	                  ó   — y r{   r\   ©	r=   r.  rž   r®   rØ   rÓ   rÒ   rÑ   rB  s	            rG   Úget_messagesz OpenAIAssistantsAPI.get_messages8
  ó   € ð 	rI   c	                  ó   — y r{   r\   rD  s	            rG   rE  z OpenAIAssistantsAPI.get_messagesF
  rF  rI   c	           	      óÐ   — |�|du r| j                  |||||||¬«      S | j                  ||||||¬«      }	|	j                  j                  j                  j                  |¬«      }
|
S )NT©r.  rž   r®   rØ   rÓ   rÒ   rÑ   r  r?  )rA  r£  r  r3  r‰   r¼   )r=   r.  rž   r®   rØ   rÓ   rÒ   rÑ   rB  rã   r  s              rG   rE  z OpenAIAssistantsAPI.get_messagesV
  s“   € ð Ð$¨¸$Ñ)>Ø×*Ñ*Ø#ØØ!ØØ'Ø)Øð +ó ð ð  $×5Ñ5ØØØØ#Ø%Øð  6ó  
ˆð (×,Ñ,×4Ñ4×=Ñ=×BÑBÈYÐBÓWˆàˆrI   Úmetadatar‰   c	              ƒ   óê   K  — | j                  ||||||¬«      }	i }
|�||
d<   |�||
d<    |	j                  j                  j                  di |
¤Žƒ d {  –—† }t	        di |j                  «       ¤ŽS 7 Œ­w)Nr  r‰   rJ  r\   )r  r  r3  rû   ÚThreadrj   )r=   rJ  rž   r®   rØ   rÓ   rÒ   rÑ   r‰   rã   rî   Úmessage_threads               rG   Úasync_create_threadz'OpenAIAssistantsAPI.async_create_threadz
  s—   è ø€ ð  $×;Ñ;ØØØØ#Ø%Øð  <ó  
ˆð ˆØÐØ'ˆD�ÑØÐØ'ˆD�Ñà&G m×&8Ñ&8×&@Ñ&@×&GÑ&GÑ&OÈ$Ñ&O× OˆäÑ.˜×+Ñ+Ó-Ñ.Ð.ð !Pús   ‚AA3ÁA1ÁA3Úacreate_threadc
                  ó   — y r{   r\   ©
r=   rJ  rž   r®   rØ   rÓ   rÒ   r‰   rÑ   rO  s
             rG   Úcreate_threadz!OpenAIAssistantsAPI.create_threadš
  r;  rI   c
                  ó   — y r{   r\   rQ  s
             rG   rR  z!OpenAIAssistantsAPI.create_thread©
  r;  rI   c
           
      ó  — |	�|	du r| j                  ||||||||¬«      S | j                  ||||||¬«      }
i }|�||d<   |�||d<    |
j                  j                  j                  di |¤Ž}t        di |j                  «       ¤ŽS )a-  
        Here's an example:
        ```
        from litellm.llms.openai.openai import OpenAIAssistantsAPI, MessageData

        # create thread
        message: MessageData = {"role": "user", "content": "Hey, how's it going?"}
        openai_api.create_thread(messages=[message])
        ```
        T)rJ  rž   r®   rØ   rÓ   rÒ   rÑ   r‰   r  r‰   rJ  r\   )rN  r£  r  r3  rû   rL  rj   )r=   rJ  rž   r®   rØ   rÓ   rÒ   r‰   rÑ   rO  rã   rî   rM  s                rG   rR  z!OpenAIAssistantsAPI.create_threadº
  sÉ   € ð, Ð%¨.¸DÑ*@Ø×+Ñ+Ø!ØØ!ØØ'Ø)ØØ!ð ,ó 	ð 	ð  $×5Ñ5ØØØØ#Ø%Øð  6ó  
ˆð ˆØÐØ'ˆD�ÑØÐØ'ˆD�Ñà A × 2Ñ 2× :Ñ :× AÑ AÑ IÀDÑ IˆäÑ.˜×+Ñ+Ó-Ñ.Ð.rI   c              ƒ   óÊ   K  — | j                  ||||||¬«      }|j                  j                  j                  |¬«      ƒ d {  –—† }	t	        di |	j                  «       ¤ŽS 7 Œ­w)Nr  r?  r\   )r  r  r3  rÑ  rL  rj   r@  s
             rG   Úasync_get_threadz$OpenAIAssistantsAPI.async_get_threadî
  sm   è ø€ ð  $×;Ñ;ØØØØ#Ø%Øð  <ó  
ˆð !.× 2Ñ 2× :Ñ :× CÑ CÈiÐ CÓ X×XˆäÑ(˜Ÿ™›Ñ(Ð(ð Yús   ‚AA#ÁA!ÁA#Úaget_threadc	                  ó   — y r{   r\   ©	r=   r.  rž   r®   rØ   rÓ   rÒ   rÑ   rW  s	            rG   Ú
get_threadzOpenAIAssistantsAPI.get_thread  rF  rI   c	                  ó   — y r{   r\   rY  s	            rG   rZ  zOpenAIAssistantsAPI.get_thread  rF  rI   c	           	      óê   — |�|du r| j                  |||||||¬«      S | j                  ||||||¬«      }	|	j                  j                  j	                  |¬«      }
t        di |
j                  «       ¤ŽS )NTrI  r  r?  r\   )rV  r£  r  r3  rÑ  rL  rj   )r=   r.  rž   r®   rØ   rÓ   rÒ   rÑ   rW  rã   r  s              rG   rZ  zOpenAIAssistantsAPI.get_thread%  sœ   € ð Ð" {°dÑ':Ø×(Ñ(Ø#ØØ!ØØ'Ø)Øð )ó ð ð  $×5Ñ5ØØØØ#Ø%Øð  6ó  
ˆð (×,Ñ,×4Ñ4×=Ñ=È	Ð=ÓRˆäÑ(˜Ÿ™›Ñ(Ð(rI   c                  ó   — y r{   r\   r]   s    rG   Údelete_threadz!OpenAIAssistantsAPI.delete_threadG  s   € ØrI   Úadditional_instructionsÚinstructionsr}   rñ   r  c           	   ƒ   ó¼   K  — | j                  |	|
||||¬«      }|j                  j                  j                  j	                  |||||||¬«      ƒ d {  –—† }|S 7 Œ­w)Nr  ©r.  r'  r_  r`  rJ  r}   r  )r  r  r3  ÚrunsÚcreate_and_poll)r=   r.  r'  r_  r`  rJ  r}   rñ   r  rž   r®   rØ   rÓ   rÒ   rÑ   rã   r  s                    rG   Úarun_threadzOpenAIAssistantsAPI.arun_threadL  s   è ø€ ð"  $×;Ñ;ØØØØ#Ø%Øð  <ó  
ˆð !.× 2Ñ 2× :Ñ :× ?Ñ ?× OÑ OØØ%Ø$;Ø%ØØØð !Pó !
÷ 
ˆð ˆð
ús   ‚AAÁAÁAÚevent_handlerc
                 ó„   — |||||||dœ}
|	�|	|
d<    |j                   j                  j                  j                  di |
¤ŽS )Nrb  rf  r\   ©r  r3  rc  rñ   )r=   rÑ   r.  r'  r_  r`  rJ  r}   r  rf  rî   s              rG   Úasync_run_thread_streamz+OpenAIAssistantsAPI.async_run_thread_streamr  sX   € ð #Ø(Ø'>Ø(Ø ØØñ'
ˆð Ð$Ø$1ˆD�Ñ!Ø.ˆv�{‰{×"Ñ"×'Ñ'×.Ñ.Ñ6°Ñ6Ð6rI   c
           
      ó˜   — |j                   j                  j                  j                  }
|	� |
||||||||	¬«      S  |
|||||||¬«      S )N)r.  r'  r_  r`  rJ  r}   r  rf  rb  rh  )r=   rÑ   r.  r'  r_  r`  rJ  r}   r  rf  Úruns_streams              rG   Úrun_thread_streamz%OpenAIAssistantsAPI.run_thread_stream‹  sn   € ð $Ÿ[™[×0Ñ0×5Ñ5×<Ñ<ˆØÐ$ÙØ#Ø)Ø(?Ø)Ø!ØØØ+ô	ð 	ñ ØØ%Ø$;Ø%ØØØô
ð 	
rI   re  c                  ó   — y r{   r\   ©r=   r.  r'  r_  r`  rJ  r}   rñ   r  rž   r®   rØ   rÓ   rÒ   rÑ   re  rf  s                    rG   Ú
run_threadzOpenAIAssistantsAPI.run_thread¯  ó   € ð( 	rI   c                  ó   — y r{   r\   rn  s                    rG   ro  zOpenAIAssistantsAPI.run_threadÅ  rp  rI   c                 ó˜  — |�Z|du rV|�5|du r1| j                  |	|
||||¬«      }| j                  |||||||||¬«	      S | j                  |||||||||	|
||||¬«      S | j                  |	|
||||¬«      }|�|du r| j	                  |||||||||¬«	      S |j
                  j                  j                  j                  |||||||¬«      }|S )NTr  )	rÑ   r.  r'  r_  r`  rJ  r}   r  rf  )r.  r'  r_  r`  rJ  r}   rñ   r  rž   r®   rØ   rÓ   rÒ   rÑ   rb  )	r  ri  re  r£  rl  r  r3  rc  rd  )r=   r.  r'  r_  r`  rJ  r}   rñ   r  rž   r®   rØ   rÓ   rÒ   rÑ   re  rf  Ú_clientrã   r  s                       rG   ro  zOpenAIAssistantsAPI.run_threadÝ  sm  € ð& Ð" {°dÑ':ØÐ! f°¡nØ!%×!=Ñ!=Ø#Ø%Ø#Ø +Ø!-Ø!ð ">ó "�ð ×3Ñ3Ø"Ø'Ø!-Ø,CØ!-Ø%ØØØ"/ð 4ó 
ð 
ð ×#Ñ#Ø#Ø)Ø(?Ø)Ø!ØØØØØ!ØØ'Ø)Øð $ó ð ð   $×5Ñ5ØØØØ#Ø%Øð  6ó  
ˆð Ð &¨D¡.Ø×)Ñ)Ø$Ø#Ø)Ø(?Ø)Ø!ØØØ+ð *ó 
ð 
ð (×,Ñ,×4Ñ4×9Ñ9×IÑIØØ%Ø$;Ø%ØØØð Jó 
ˆð ˆrI   rd   r{   )Údescé   NN)NNrt  ru  NNr¸   r—  )4rf   rg   rh   rH   r»   rF  r¿   rG  r¹   r   r£  r   r  ÚAsyncCursorPageÚ	Assistantr  r   r   r   r  ÚSyncCursorPagerj   r#  r&  r   r*  r-  r4  r7  r:  r¾   rA  rE  r   ÚOpenAICreateThreadParamsMessagerL  rN  rR  rV  rZ  r^  ÚAssistantToolParamÚRunre  ÚAssistantEventHandlerÚAsyncAssistantStreamManagerÚAsyncAssistantEventHandlerri  ÚAssistantStreamManagerrl  ro  rÃ   rÄ   s   @rG   r
  r
  •  s‘  ø„ õð !%ñà�t‘ðð ˜‘*ðð ˜Ÿ™Ñ&ð	ð
 ˜4‘Zðð ˜D‘jðð ˜‘ðð 
óð@ &*ñà�t‘ðð ˜‘*ðð ˜Ÿ™Ñ&ð	ð
 ˜4‘Zðð ˜D‘jðð ˜dÑ"ðð 
óðF #ØØ!Ø ñ à�t‘ð ð ˜‘*ð ð ˜Ÿ™Ñ&ð	 ð
 ˜4‘Zð ð ˜D‘jð ð ˜dÑ"ð ð �T‰zð ð �T‰zð ð �d‘
ð ð �T‰zð ð 
˜Ñ	#ó ðH ð
à�t‘ð
ð ˜‘*ð
ð ˜Ÿ™Ñ&ð	
ð
 ˜4‘Zð
ð ˜D‘jð
ð ˜dÑ"ð
ð ! ™ð
ð 
�4˜˜¨yÑ9Ð9Ñ	:ò
ó ð
ð ð
à�t‘ð
ð ˜‘*ð
ð ˜Ÿ™Ñ&ð	
ð
 ˜4‘Zð
ð ˜D‘jð
ð ˜‘ð
ð ! ™¨$Ñ.ð
ð 
˜	Ñ	"ò
ó ð
ð* ØØ"ØØ!Ø ñ,à�t‘ð,ð ˜‘*ð,ð ˜Ÿ™Ñ&ð	,ð
 ˜4‘Zð,ð ˜D‘jð,ð �T‰zð,ð �T‰zð,ð �d‘
ð,ð �T‰zó,ð^à�t‘ðð ˜‘*ðð ˜Ÿ™Ñ&ð	ð
 ˜4‘Zðð ˜D‘jðð ˜dÑ"ðð  $ðð 
óð> Ø $ñà�t‘ðð ˜‘*ðð ˜Ÿ™Ñ&ð	ð
 ˜4‘Zðð ˜D‘jðð  $óðDà�t‘ðð ˜‘*ðð ˜Ÿ™Ñ&ð	ð
 ˜4‘Zðð ˜D‘jðð ˜dÑ"ðð ðð 
óð> Ø $ñà�t‘ðð ˜‘*ðð ˜Ÿ™Ñ&ð	ð
 ˜4‘Zðð ˜D‘jðð óðX &*ñàðð ðð �t‘ð	ð
 ˜‘*ðð ˜Ÿ™Ñ&ðð ˜4‘Zðð ˜D‘jðð ˜dÑ"ðð 
óðF ðàðð ðð �t‘ð	ð
 ˜‘*ðð ˜Ÿ™Ñ&ðð ˜4‘Zðð ˜D‘jðð ˜dÑ"ðð ˜t‘}ðð 
�4˜˜}Ð,Ñ	-òó ðð ðàðð ðð �t‘ð	ð
 ˜‘*ðð ˜Ÿ™Ñ&ðð ˜4‘Zðð ˜D‘jðð ˜‘ðð ˜u‘~¨Ñ,ðð 
òó ðð2 Ø%)ñ+àð+ð ð+ð �t‘ð	+ð
 ˜‘*ð+ð ˜Ÿ™Ñ&ð+ð ˜4‘Zð+ð ˜D‘jð+ð ˜d‘{ó+ðj &*ñàðð �t‘ðð ˜‘*ð	ð
 ˜Ÿ™Ñ&ðð ˜4‘Zðð ˜D‘jðð ˜dÑ"ðð 
˜Ñ	'óð2 ðàðð �t‘ðð ˜‘*ð	ð
 ˜Ÿ™Ñ&ðð ˜4‘Zðð ˜D‘jðð ˜dÑ"ðð ˜t‘}ðð 
�4˜˜¨}Ñ=Ð=Ñ	>òó ðð ðàðð �t‘ðð ˜‘*ð	ð
 ˜Ÿ™Ñ&ðð ˜4‘Zðð ˜D‘jðð ˜‘ðð ˜u‘~¨Ñ,ðð 
˜Ñ	&òó ðð. Øñ àð ð �t‘ð ð ˜‘*ð	 ð
 ˜Ÿ™Ñ&ð ð ˜4‘Zð ð ˜D‘jó ðH/à˜‘+ð/ð �t‘ð/ð ˜‘*ð	/ð
 ˜Ÿ™Ñ&ð/ð ˜4‘Zð/ð ˜D‘jð/ð ˜dÑ"ð/ð Ð:Ñ;¸dÑBð/ð 
ó/ð@ ðà˜‘+ðð �t‘ðð ˜‘*ð	ð
 ˜Ÿ™Ñ&ðð ˜4‘Zðð ˜D‘jðð Ð:Ñ;¸dÑBðð ˜dÑ"ðð   ™ðð 
�4˜˜vÐ%Ñ	&òó ðð ðà˜‘+ðð �t‘ðð ˜‘*ð	ð
 ˜Ÿ™Ñ&ðð ˜4‘Zðð ˜D‘jðð Ð:Ñ;¸dÑBðð ˜‘ðð   ™¨Ñ-ðð 
òó ðð2 Øñ2/à˜‘+ð2/ð �t‘ð2/ð ˜‘*ð	2/ð
 ˜Ÿ™Ñ&ð2/ð ˜4‘Zð2/ð ˜D‘jð2/ð Ð:Ñ;¸dÑBó2/ðh)àð)ð �t‘ð)ð ˜‘*ð	)ð
 ˜Ÿ™Ñ&ð)ð ˜4‘Zð)ð ˜D‘jð)ð ˜dÑ"ð)ð 
ó)ð2 ðàðð �t‘ðð ˜‘*ð	ð
 ˜Ÿ™Ñ&ðð ˜4‘Zðð ˜D‘jðð ˜dÑ"ðð ˜T‘]ðð 
�4˜˜vÐ%Ñ	&òó ðð ðàðð �t‘ðð ˜‘*ð	ð
 ˜Ÿ™Ñ&ðð ˜4‘Zðð ˜D‘jðð ˜‘ðð ˜U‘^ dÑ*ðð 
òó ðð. Øñ )àð )ð �t‘ð )ð ˜‘*ð	 )ð
 ˜Ÿ™Ñ&ð )ð ˜4‘Zð )ð ˜D‘jó )òDð
$àð$ð ð$ð "% t¡ð	$ð
 ˜D‘jð$ð �s˜C�x‘. 4Ñ'ð$ð �T‰zð$ð �t‘ð$ð Ð*Ñ+¨dÑ2ð$ð �t‘ð$ð ˜‘*ð$ð ˜Ÿ™Ñ&ð$ð ˜4‘Zð$ð ˜D‘jð$ð ˜dÑ"ð$ð  
ó!$ðL7àð7ð ð7ð ð	7ð
 "% t¡ð7ð ˜D‘jð7ð ˜‘+ð7ð �T‰zð7ð Ð*Ñ+¨dÑ2ð7ð -¨tÑ3ð7ð 
%Ð%?Ñ	@ó7ð2 
àð 
ð ð 
ð ð	 
ð
 "% t¡ð 
ð ˜D‘jð 
ð �s˜C�x‘. 4Ñ'ð 
ð �T‰zð 
ð Ð*Ñ+¨dÑ2ð 
ð -¨tÑ3ð 
ð 
 Ð 5Ñ	6ó 
ðH ðàðð ðð "% t¡ð	ð
 ˜D‘jðð ˜‘+ðð �T‰zðð �t‘ðð Ð*Ñ+¨dÑ2ðð �t‘ðð ˜‘*ðð ˜Ÿ™Ñ&ðð ˜4‘Zðð ˜D‘jðð  ˜T‘]ð!ð" -¨tÑ3ð#ð$ 
�4˜˜s�?Ñ	#ò%ó ðð* ðàðð ðð "% t¡ð	ð
 ˜D‘jðð ˜‘+ðð �T‰zðð �t‘ðð Ð*Ñ+¨dÑ2ðð �t‘ðð ˜‘*ðð ˜Ÿ™Ñ&ðð ˜4‘Zðð ˜D‘jðð  ˜U‘^ dÑ*ð!ð" -¨tÑ3ð#ð$ 
ò%ó ððL ØØ6:ñ#XàðXð ðXð "% t¡ð	Xð
 ˜D‘jðXð �s˜C�x‘. 4Ñ'ðXð �T‰zðXð �t‘ðXð Ð*Ñ+¨dÑ2ðXð �t‘ðXð ˜‘*ðXð ˜Ÿ™Ñ&ðXð ˜4‘ZðXð ˜D‘jðXð" -¨tÑ3÷#XrI   r
  )Wr÷   rO   Úcollections.abcr   r   r   r   r   r   Útypingr	   r
   r   r   r   r   Úurllib.parser   r¿   ÚtiktokenÚaiohttpr   rÝ   r   r   Ú#openai.types.beta.assistant_deletedr   Úopenai.types.file_deletedr   Úpydanticr   Útyping_extensionsr   r‚   r   r  r   Úlitellm.constantsr   Úlitellm.files.typesr   Ú*litellm.litellm_core_utils.litellm_loggingr   rÂ   Ú(litellm.litellm_core_utils.logging_utilsr   r   Ú)litellm.llms.base_llm.base_model_iteratorr   Ú)litellm.llms.base_llm.chat.transformationr    r!   Ú(litellm.llms.bedrock.chat.invoke_handlerr"   Úlitellm.types.utilsr#   r$   r%   r&   r'   Úlitellm.utilsr(   r)   r*   Útypes.llms.openaiÚbaser.   Úchat.gpt_5_transformationr0   Úchat.o_series_transformationr1   Úcommon_utilsr2   r3   r4   r5   r6   r7   rº   r8   r:   rl   rµ   rÌ   r›  rê  r
  r\   rI   rG   ú<module>r—     s  ðÜ Û ß [× [ß E× EÝ !ã áÛÝ%ã ß &Ý @Ý 1Ý Ý &ã Ý  Ý +Ý 1Ý :Ý Sß ^Ý Oß RÝ I÷õ ÷ñ ô #Ý Ý 7Ý =÷õ ñ 1Ó2Ð �UÓ 2Ù*Ó,Ð �%Ó ,÷)ñ )ôXP
�:ô P
ôfÐ+Dô ôHF˜7 Mô HFôV(e�Wô eôPZ�wô Zôz`˜'õ `rI   