
    j             S          d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZmZmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z% erd dl&m'Z' d dl(Z(d dl)Z)d dl*Z*d dl+Z+d d	l,m-Z- d d
l.m/Z/ d dl0Z0d dl0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z>m?Z? d dl@mAZA d dlBmCZC d dlDmEZEmFZF d dlGm1ZH d dlImJZJmKZK d dlLmMZM d dlNmOZOmPZP d dlQmRZR d dlSmTZT d dlUmVZV d dlWmXZXmYZY d dlZm[Z[m\Z\ d dl]m^Z^ d dl_m`Z`maZa d dlbmcZc d dldmeZemfZf d d lgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZ d!d"lmZ d!d#lmZmZmZ d!d$lmZ d!d%lmZmZ d!d&lmZmZ d!d'lmZmZmZmZmZmZ d!d(lmZ d!d)lmZ d!d*lmZ d!d+lmZmZ d!d,lmZ d!d-lmZ d!d.lmZ d!d/lmZmZ d!d0lmZ d!d1lmZ d!d2lmZ d!d3lmZ d!d4lmZ d!d5lmZ d!d6lmZ d!d7lmZ d!d8lmZmZ d!d9lmZ d!d:lmZmZ d!d;lmZ d!d<lmZ d!d=lmZ d!d>lmZ d!d?lmZ d!d@lmZ d!dAlmZ d!d5lmZ d!dBlmZ d!dClmZ d!dDlmZ d!dElmZ d!dFlmZ d!dGlmZ d!dHlmZ d!dIlmZ d!d5lmZ d!dJlmZ d!d@lmZ d!dKlmZ d!dLlmZ d!dMlmZ d!dNlmZ d!dOlmZ d!dPlmZ d!dQlmZ d!dRlmZ d!dSlmZ d!dTlmZ d!dUlm Z  d!dVlmZ d!d5lmZ d!dWlmZ d!dXlmZ d!dYl	m
Z
 d!dZlmZmZ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mZmZmZ  e+j<                  d\      Zd d]ldm Z  d d^lgm!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(  eܫ       Z) eث       Z* eޫ       Z+ eګ       Z, eǫ       Z- e       Z. e       Z/ e       Z0 e       Z1 e       Z2 e       Z3 e˫       Z4 e       Z5 e       Z6 e       Z7 e       Z8 e       Z9 e       Z: e       Z; e       Z< e       Z= e       Z> e       Z? e        Z@ e       ZA e       ZB e       ZC e       ZD e       ZE e       ZF e       ZG e       ZH e       ZI e       ZJ e       ZK eɫ       ZL eҫ       ZM e       ZN eͫ       ZOe!ePeQeRe$e f   ZS G d_ d`      ZT G da db      ZU G dc dd      ZV G de df      ZW eAj                         e2g ddddddddddddddddddddddddddddddddddddddf'dgePdhediee   djeeP   dkee!eYeZf      dleeY   dmeeY   dneeZ   doee[   dpeeR   dqeeZ   dreeZ   dseee      dtee   duee   dveeY   dweeY   dxeeR   dyeeP   dzee!eRe e-   f      d{eeZ   d|ee   d}ee!ePeRf      d~ee[   dee[   deeZ   deed      deed      deeP   deeP   deeP   deeP   deeP   dee\   deeR   dee
   dee   ded   de!e$ehf   fNd              Z]d Z^	 dde!ePeQf   dgePdeeP   fdZ_dee[   dkee!eYePe)j                  f      dgePfdZadee[   dkee!eYePe)j                  f      dgePfdZbdke!eYePe)j                  f   fdZcdke!eYePe)j                  f   fdZd	 	 	 	 	 	 	 	 ddgePdhedoee[   dneeZ   deeS   dee   dee[   dkee!eYePe)j                  f      fdZedgePdePdeeRePf   fdZf eAj                         e2g ddddddddddddddddddddddddddddddddddddddf'dgePdhedkee!eYePe)j                  f      dleeY   dmeeY   dneeZ   doee[   dpeeR   dreeZ   dqeeZ   dseee      dtee   duee   dveeY   dweeY   dxeeR   dyeeP   deed      deed      dzee!eRe e-   f      d{eeZ   d|ee   d}ee!ePeRf      dee[   deeZ   d~ee[   dee   deeR   deeP   deeP   diee   djeeP   deeP   deeP   deeP   dee\   dee
   ded   de!e$ehf   fNd              Zd Zgd Zhe2de"fd       Zie/g ddddddddddddfdeeZ   deeP   deeP   deeP   deeP   deeP   de[dyeeP   ded   deeee"f   fd       Zje/g ddddddddddddfdddeeZ   deeP   deeP   deeP   deeP   deeP   de[dyeeP   ded   de"fd       Zje2g ddddddddddddfdeeZ   deeP   deeP   deeP   deeP   deeP   de[dyeeP   de!e"eeee"f   f   fd       Zje2de!e&e'f   fd       Zke2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dde!ePee!ePee!ePeeZ   f      f      f   dgeeP   deeZ   dee[   dweeY   dxeeeZeZf      deeZ   dqeeZ   dneeZ   dveeY   dee!ePeeP   f      doee[   dpeeR   deeP   dleeY   dmeeY   dyeeP   deeP   deeP   deeP   dee\   deeP   f,d       ZldePdee!e-ef      fdZmde!eePef   een   f   fdZodePdee!e-ef      fdZp	 ddePdgeeP   deeP   defdZqe2	 	 	 ddePdgeeP   deeP   deeP   def
d       Zre2de(fd       Zse2	 	 	 	 	 	 	 	 	 	 	 	 ddgePdedeeP   deeP   dzeed      deeed         dleeZ   dyeeP   deeP   deeP   deeP   deeZ   de!e(eeee(f   f   fdĄ       Zte2defdń       Zue2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddgePdePdee!ePeRf      deeP   deeP   deeP   deeP   deeP   deeZ   deeR   dkee!eYe)j                  f      dzeeP   deeZ   deeP   deeR   deeP   dee[   def$d΄       Zv	 	 	 ddϐeRdeed      deeP   dee   fd҄Zwdӄ ZxdԄ Zy	 ddՐe\dhee   de&fdքZz	 	 	 	 ddՐe\dhee\   dee1   dee!e$e&f      fd؄Z{y)    N)futures)FIRST_COMPLETEDThreadPoolExecutorwait)deepcopy)partial)TYPE_CHECKINGAnyAsyncIteratorCallable	CoroutineDictListLiteralMappingOptionalTupleTypeUnioncastget_args)uuid)ClientSession)	BaseModel)overload)Loggingclientexception_typeget_litellm_paramsget_optional_params),DEFAULT_MOCK_RESPONSE_COMPLETION_TOKEN_COUNT(DEFAULT_MOCK_RESPONSE_PROMPT_TOKEN_COUNT)LiteLLMUnknownProvider)CustomLogger)calculate_request_durationget_audio_file_for_health_check)tracer)ProviderSpecificHeaderUtils)_create_health_check_response_filter_model_params)r   )mock_embeddingmock_image_generation)get_content_from_model_response)
BaseConfigBaseImageGenerationConfig)#convert_model_response_to_streaming)BedrockModelInfo)CohereModelInfo)AsyncHTTPHandlerHTTPHandler)VertexAIModelRouteget_vertex_ai_model_route)_realtime_health_check)get_secret_boolget_secret_str)GenericLiteLLMParams)RawRequestTypedDictStreamingChoices)CustomStreamWrapperProviderConfigManagerUsage_get_model_info_helperadd_openai_metadata/add_provider_specific_params_to_optional_params#async_mock_completion_streaming_obj convert_to_model_response_objectcreate_pretrained_tokenizercreate_tokenizerget_api_keyget_llm_provider!get_non_default_completion_params$get_non_default_transcription_paramsget_optional_params_embeddingsget_optional_params_image_gen!get_optional_params_transcription
get_secretget_standard_openai_paramsmock_completion_streaming_objpre_process_non_default_paramsread_config_argsshould_run_mock_completionsupports_httpx_timeouttoken_counter validate_and_fix_openai_messagesvalidate_and_fix_openai_tools$validate_chat_completion_tool_choice   )verbose_logger)disable_cacheenable_cacheupdate_cache)safe_deep_copy)async_completion_with_fallbackscompletion_with_fallbacks)get_completion_messages#update_messages_with_model_file_ids)custom_promptfunction_call_promptmap_system_message_pt	ollama_ptprompt_factory stringify_json_tool_call_content)ChunkProcessor)AnthropicChatCompletion)AzureAudioTranscription)AzureChatCompletion_check_dynamic_azure_params)AzureOpenAIO1ChatCompletion)AzureTextCompletion)AzureAIEmbedding)BedrockConverseLLM
BedrockLLM)BedrockEmbedding)BedrockImageGeneration)BytezChatConfig)ClarifaiConfig)CodestralTextCompletion)handler)BaseLLMAIOHTTPHandler)BaseLLMHTTPHandler)	CustomLLMcustom_chat_llm_router)DatabricksEmbeddingHandler)aleph_alphapalm)get_api_key_from_env)GroqChatCompletion)HerokuChatConfig)HuggingFaceEmbedding)LemonadeChatConfig)
completion)OCIChatConfig)	oobabooga)OpenAITextCompletion)OpenAIImageVariationsHandler)OpenAIChatCompletion)OpenAIAudioTranscription)OpenAILikeChatHandler)OpenAILikeEmbeddingHandler)OVHCloudChatConfig)PredibaseChatCompletion)SagemakerChatHandler)SagemakerLLM)vertex_ai_non_gemini)	VertexLLM)GoogleBatchEmbeddings)VertexImageGeneration)VertexMultimodalEmbedding)VertexTextToSpeechAPI)VertexAIPartnerModels)VertexEmbedding)VertexAIGemmaModels)VertexAIModelGardenModels)WatsonXChatHandler)IBMWatsonXMixin)AnthropicThinkingParam)ChatCompletionAssistantMessageChatCompletionAudioParamChatCompletionModality$ChatCompletionPredictionContentParamChatCompletionUserMessageHttpxBinaryResponseContentOpenAIModerationResponseOpenAIWebSearchOptions)	AdapterCompletionStreamWrapperChatCompletionMessageToolCallCompletionTokensDetails	FileTypesHiddenParamsLlmProvidersPromptTokensDetailsProviderSpecificHeaderall_litellm_paramscl100k_base)ModelResponseStream)ChoicesEmbeddingResponseMessageModelResponseTextChoicesTextCompletionResponseTextCompletionStreamWrapperTranscriptionResponsec                   t    e Zd Zddddej                  dddee   dee   dee   dee   dee	eef      f
d	Z
y)
LiteLLMNX  )api_keyorganizationbase_urltimeoutmax_retriesdefault_headersr   r   r   r   r   c                Z    t               | _        t        | j                  d       | _        y )N
router_obj)localsparamsChatchat)selfr   r   r   r   r   r   s          e/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/litellm/main.py__init__zLiteLLM.__init__'  s     h6	    )__name__
__module____qualname__litellmnum_retriesr   strfloatintr   r    r   r   r   r   %  sq    
 &*"&#&%,%8%87;7 sm	7
 3-7 %7 c]7 "'#s("347r   r   c                       e Zd Zdee   fdZy)r   r   c                     || _         | j                   j                  dd      du r8| j                   j                  d       t        | j                   |      | _        y t        | j                   |      | _        y )NacompletionFTr   )r   getpopAsyncCompletionscompletionsCompletionsr   r   r   s      r   r   zChat.__init__6  s\    ;;??=%0D8KKOOM*EU
FD  +4;;:NDr   N)r   r   r   r   r
   r   r   r   r   r   r   5  s    O8C= Or   r   c                   &    e Zd Zdee   fdZddZy)r   r   c                      || _         || _        y Nr   r   r   s      r   r   zCompletions.__init__B      $r   Nc                 0   |j                         D ]  \  }}|| j                  |<    |xs | j                  j                  d      }| j                  + | j                  j                  d||d| j                  }|S t	        d||d| j                  }|S Nmodelr   messagesr   )itemsr   r   r   r   r   r   r   kwargskvresponses          r   createzCompletions.createF  s    LLNDAqDKKN #11??&1t11 h26++H
  "PPDKKPHr   r   r   r   r   r   r
   r   r   r   r   r   r   r   A      %8C= %
r   r   c                   &    e Zd Zdee   fdZddZy)r   r   c                      || _         || _        y r   r   r   s      r   r   zAsyncCompletions.__init__T  r   r   Nc                 `  K   |j                         D ]  \  }}|| j                  |<    |xs | j                  j                  d      }| j                  3 | j                  j                  d||d| j                   d {   }|S t	        d||d| j                   d {   }|S 7 (7 wr   )r   r   r   r   r   r   s          r   r   zAsyncCompletions.createX  s     LLNDAqDKKN #11??&8T__88 h26++ H
  )WuxW4;;WWH Xs$   A?B.B*!B.#B,$B.,B.r   r   r   r   r   r   r   S  r   r   r   r   r   	functionsfunction_callr   temperaturetop_pnstreamstream_options
max_tokensmax_completion_tokens
modalities
predictionaudiopresence_penaltyfrequency_penalty
logit_biasuserresponse_formatseedtoolstool_choiceparallel_tool_callslogprobstop_logprobsreasoning_effort)noneminimallowmediumhighdefault	verbosity)r  r  r  safety_identifierservice_tierr   api_versionr   
model_listextra_headersthinkingweb_search_optionsshared_sessionr   returnc(                   K   |(j                  dd      })|(j                  dd      }*|*du rt        |*||        d{    t        j                         }+|(j                  dd      },|(j                  dd      }-t	        |-t
              r|-j                  |(j                  dd      |(|      rw|-j                  | ||(|(j                  dd      |(j                  d	d      ||(j                  d
d      |(j                  dd             d{   \  } }}.|t        |      dk(  rd}|'#t        j                  dt        |'       d       nt        j                  d       i d| d|d|d|d|d|d|d|d|d|	d|
d|d|d|d|d |d!|i d"|d#|d$|d%|d&|d'|d(|d)|d*|d+|d,|d-| d.|!d/|"d0|#d1|d2|||$d|%|&|'d3}/|,#t        | |,|/j                  d-d      4      \  }.},}.}.|)xs t        j                  })|)*t        dAi |/d5d|)i|(i d{   }0|0t!        d6      |0S |(j                  d7      }1|(j                  d8      }2|(j                  d9      }3|(j                  d      }*|1r+t#        |2|3|*:      rt        j$                  |1       d{    	 t'        t(        fi |/|(}4t+        j,                         }5t'        |5j.                  |4      }6|+j1                  d|6       d{   }7t	        |7t2              st	        |7t4              rt	        |7t2              rt5        dAi |7}0|7}0n"t        j6                  |7      r|7 d{   }0n|7}0|,d;k(  s|,d<k(  rGt	        |0t8              r7t        j:                         j=                  |0t        j4                         =      }0t	        |0t>              r|0jA                  |+>       |0S 7 7 7 7 :7 7 # t         $ r}8|,xs d?},tC        | |,|8|/|(@      d}8~8ww xY ww)Ba  
    Asynchronously executes a litellm.completion() call for any of litellm supported llms (example gpt-4, gpt-3.5-turbo, claude-2, command-nightly)

    Parameters:
        model (str): The name of the language model to use for text completion. see all supported LLMs: https://docs.litellm.ai/docs/providers/
        messages (List): A list of message objects representing the conversation context (default is an empty list).

        OPTIONAL PARAMS
        functions (List, optional): A list of functions to apply to the conversation messages (default is an empty list).
        function_call (str, optional): The name of the function to call within the conversation (default is an empty string).
        temperature (float, optional): The temperature parameter for controlling the randomness of the output (default is 1.0).
        top_p (float, optional): The top-p parameter for nucleus sampling (default is 1.0).
        n (int, optional): The number of completions to generate (default is 1).
        stream (bool, optional): If True, return a streaming response (default is False).
        stream_options (dict, optional): A dictionary containing options for the streaming response. Only use this if stream is True.
        stop(string/list, optional): - Up to 4 sequences where the LLM API will stop generating further tokens.
        max_tokens (integer, optional): The maximum number of tokens in the generated completion (default is infinity).
        max_completion_tokens (integer, optional): An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens.
        modalities (List[ChatCompletionModality], optional): Output types that you would like the model to generate for this request. You can use `["text", "audio"]`
        prediction (ChatCompletionPredictionContentParam, optional): Configuration for a Predicted Output, which can greatly improve response times when large parts of the model response are known ahead of time. This is most common when you are regenerating a file with only minor changes to most of the content.
        audio (ChatCompletionAudioParam, optional): Parameters for audio output. Required when audio output is requested with modalities: ["audio"]
        presence_penalty (float, optional): It is used to penalize new tokens based on their existence in the text so far.
        frequency_penalty: It is used to penalize new tokens based on their frequency in the text so far.
        logit_bias (dict, optional): Used to modify the probability of specific tokens appearing in the completion.
        user (str, optional):  A unique identifier representing your end-user. This can help the LLM provider to monitor and detect abuse.
        metadata (dict, optional): Pass in additional metadata to tag your completion calls - eg. prompt version, details, etc.
        api_base (str, optional): Base URL for the API (default is None).
        api_version (str, optional): API version (default is None).
        api_key (str, optional): API key (default is None).
        model_list (list, optional): List of api base, version, keys
        timeout (float, optional): The maximum execution time in seconds for the completion request.

        LITELLM Specific Params
        mock_response (str, optional): If provided, return a mock completion response for testing or debugging purposes (default is None).
        custom_llm_provider (str, optional): Used for Non-OpenAI LLMs, Example usage for bedrock, set model="amazon.titan-tg1-large" and custom_llm_provider="bedrock"
    Returns:
        ModelResponse: A response object containing the generated completion and associated metadata.

    Notes:
        - This function is an asynchronous version of the `completion` function.
        - The `completion` function is called using `run_in_executor` to execute synchronously in the event loop.
        - If `stream` is True, the function returns an async generator that yields completion lines.
    	fallbacksNmock_timeoutTcustom_llm_providerlitellm_logging_obj	prompt_id)r#  non_default_paramsr  prompt_variablesprompt_labelprompt_version)r   r   r$  r#  r%  r  r&  r'  r   uA   🔄 SHARED SESSION: acompletion called with shared_session (ID: )uA   🔄 NO SHARED SESSION: acompletion called without shared_sessionr   r   r   r   r   r   r   r   r   r   stopr   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  deployment_idr   r  r   r  r  r  )r  r  r   r  r  r  r   r!  api_baser   z]No response from fallbacks. Got none. Turn on `litellm.set_verbose=True` to see more details.
mock_delaymock_responsemock_tool_calls)r.  r/  r   text-completion-openaitext-completion-codestralresponse_objectmodel_response_object)loopopenair   r!  original_exceptioncompletion_kwargsextra_kwargsr   )"r   _handle_mock_timeout_asyncasyncioget_event_loop
isinstanceLiteLLMLoggingObj"should_run_prompt_management_hooks async_get_chat_completion_promptlenrZ   debugidrH   r   model_fallbacksr_   	ExceptionrS   sleepr   r   contextvarscopy_contextrunrun_in_executordictr   iscoroutiner   OpenAITextCompletionConfig%convert_to_chat_model_response_objectr=   set_logging_event_loopr   )9r   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  r*  r  r  r  r  r   r  r   r  r  r  r  r  r   r  r   r5  r!  r"  _r9  r   r-  r.  r/  funcctxfunc_with_contextinit_responsees9                                                            r   r   r   e  s    ~ 

;-I::nd3Lt(wFFF!!#D **%:DA
 !**%:DA%'89>>jjd3% 	? 	
 &FF%jjd3#ZZ(:DAND9!::&6= G 	
 	
		
$ UqE !OPRSaPbOccde	
 	O	

))H) 	Y) 		)
 	7) 	{) 	) 	Q) 	&) 	.) 	) 	j) 	 !6) 	j) 	j)  	!)" 	,#)$ 	.%)& 	j')( 	))* 	?+), 	-). 	/)0 	{1)2 	23)4 	H5)6 	7)8 	9): 	H;)< 	{=)> 	7?)@ 	jA)B 	,C)D 	.E)F %&0(Q)T "'7 3&**:t<(
$1 4W44I8 

)4i(J6(J
 
 o   L)JJJ/Mjj!23O::n-L0#'!
 mmJ''')
zA%6A&A &&(#CGGT2"2249JKKmT*j=/
 -.(9=9$H  /**H$H  #;;"&AA#9:99;aa (&-&;&;&= b H h 34++ ,   	G(	
j
( 	( L +"  
1=X 3 /
 	

s   9P	OCP	O	DP	!O"A?P	!O"P	'AO" 8O9AO" O A;O" P	P	P	P	O"  O" "	P+PPP	c                   K   	 t        d|         t        j                  |       r
|  d {   } | 2 3 d {   }t        d|        | 7 #7 6 y # t        $ r}|xs d}t	        |||      d }~ww xY ww)Nz'received response in _async_streaming: zline in async streaming: r6  )r   r!  r8  )print_verboser<  rM  rF  r   )r   r   r!  argslinerV  s         r   _async_streamingr[  s  s     
?zJKx(%~H" 	$5dV<=J &	(  
1=X 3 
 	

sR   A;(A AA AAAA AA A;	A8A33A88A;r.  r!  c           
          t        | t              ryt        | t        j                        r| t	        j
                  t        | dd      t        | dt        |             t        | d|xs d      |t        j                  dd      	      t        | t              r,| d
k(  r't	        j                  dt        | d|xs d      |      t        | t              r,| dk(  r't	        j                  dt        | d|xs d      |      t        | t              r,| dk(  r't	        j                  dt        | d|xs d      |      t        | t              rA| j                  d      r/t	        j
                  d| d|t        j                  dd      	      y y )Nstatus_code  textllm_providerr6  POSTzhttps://api.openai.com/v1/)methodurl)r]  messager`  r   requestzlitellm.RateLimitErrorzthis is a mock rate limit errorrd  r`  r   z"litellm.ContextWindowExceededErrorz,this is a mock context window exceeded errorzlitellm.InternalServerErrorz$this is a mock internal server errorz Exception: content_filter_policyi  azure)r>  rF  r6  APIErrorr   MockExceptiongetattrr   httpxRequestRateLimitErrorContextWindowExceededErrorInternalServerError
startswithr.  r   r!  s      r   !_handle_mock_potential_exceptionsrr    s   
 -+mV__5##}cBM63}3EF ~/B/Nh MM5QR
 	
 
M3	'M=U,U$$5 ~/B/Nh 
 	
 	=#&AA00B ~/B/Nh 
 	
 	=#&::)): ~/B/Nh 
 	
 
M3	'M,D,D*- ##! MM5QR
 	
-	'r   r   c                 X    | du r&|#t        |       t        j                  dd|      y y NTzThis is a mock timeout errorr6  rf  )_sleep_for_timeoutr   Timeoutr   r   r   s      r   _handle_mock_timeoutrx    s;    
 t 37#oo2!
 	
 !4r   c                 t   K   | du r.|+t        |       d {    t        j                  dd|      y y 7 wrt  )_sleep_for_timeout_asyncr   rv  rw  s      r   r;  r;    sH     
 t 3&w///oo2!
 	
 !4/s   868c                 <   t        | t              rt        j                  |        y t        | t              rt        j                  t        |              y t        | t
        j                        r-| j                   t        j                  | j                         y y y r   )r>  r   timerG  r   rk  rv  connectr   s    r   ru  ru    sb    '5!

7	GS	!

5>"	GU]]	+0K

7??# 1L	+r   c                   K   t        | t              rt        j                  |        d {    y t        | t              r't        j                  t        |              d {    y t        | t
        j                        r5| j                  (t        j                  | j                         d {    y y y 7 7 W7 wr   )r>  r   r<  rG  r   rk  rv  r}  r~  s    r   rz  rz    s     '5!mmG$$$	GS	!mmE'N+++	GU]]	+0KmmGOO,,, 1L	+ 	%+,s4   )B>B86B>"B:#AB>0B<1B>:B><B>Fr/  c
           
         	 |
j                  d      xs d}|d}t        ||	|        ||j                  |d       t        |t              st        |t
              rt        || |       t        t        t        t        t        t        f   |      }t        |t              r*|j                  d	      rt        j                  d
d| d      }|
j                  dd      }||st        j                   |       t        |t              rt        di |S t        |t              r|s|S t#        |      }t               }|du rVt               }|
j                  dd      du rt%        t'        ||| |      | d|      S t%        t)        ||| |      | d|      S t        |t        j                        r|t        t        |      }|||j*                  d   j,                  _        njg }t1        |      D ]S  }t        j2                  j5                  |t        j2                  j7                  |d            }|j9                  |       U ||_        t;        t        j                               |_        | |_        |r5|D cg c]  }tA        di | c}|j*                  d   j,                  _!        tE        |dtG        tH        tJ        tH        tJ        z                	 t        j2                  jM                  |       \  }}}}||jN                  d<   ||jQ                  |dd       |S c c}w # t
        $ r Y (w xY w# t
        $ r;}t        |tR        jT                        r|t        djW                  |            d}~ww xY w) aS  
    Generate a mock completion response for testing or debugging purposes.

    This is a helper function that simulates the response structure of the OpenAI completion API.

    Parameters:
        model (str): The name of the language model for which the mock response is generated.
        messages (List): A list of message objects representing the conversation context.
        stream (bool, optional): If True, returns a mock streaming response (default is False).
        mock_response (str, optional): The content of the mock response (default is "This is a mock request").
        mock_timeout (bool, optional): If True, the mock response will be a timeout error (default is False).
        timeout (float, optional): The timeout value to use for the mock response (default is None).
        **kwargs: Additional keyword arguments that can be used but are not required.

    Returns:
        litellm.ModelResponse: A ModelResponse simulating a completion response with the specified model, messages, and mock response.

    Raises:
        Exception: If an error occurs during the generation of the mock completion response.
    Note:
        - This function is intended for testing or debugging purposes to generate mock completion responses.
        - If 'stream' is True, it returns a response that mimics the behavior of a streaming completion.
    r   FNThis is a mock requestrw  zmock-key)inputr   rq  zException: mock_streaming_errorz&This is a mock error raised mid-stream	anthropici  )rd  r`  r   r]  r-  T)r.  r   r   r6  completion_streamr   r!  logging_objr   	assistant)contentrole)indexrd  usageprompt_tokenscompletion_tokenstotal_tokensr   r!  zmy-secret-keyzmy-original-responser  r   original_responsez$Mock completion response failed - {}r   ),r   rx  pre_callr>  r   rF  rr  r   r   rL  r   r   rp  r   ri  r|  rG  r0   r=   rC   rP   choicesrd  r  rangeutilsr   r   appendr   createdr   r   
tool_callssetattrr?   r"   r!   rH   _hidden_params	post_callr6  rh  format)r   r   r   r   r.  r/  r   loggingr!  r   r   is_acompletion
time_delaymodel_response_all_choicesi_choice	tool_callrQ  rV  s                       r   mock_completionr    s   H{JM2;e 4M,uU "  
 mS)Zy-Q-+$7 #t],??@-
 mS)m.F.F-/
 $11@(	M ZZd3
!.JJz"mT* 1=11m]3$$?NMDQOT>02Nzz-/47*&I&m5TU'  (0 '  '"?"-uPQ# $,#  mW%:%:;S-098EN""1%--5L1X!--//#MM11 -K 2  0  ##G,  &2N"!$TYY[!1$ "1<!0I .:	:!0<N""1%--8
 	F"NE>?		
	+2==+I+IPU+I+V(A"AqCVN))*?@
 '"8  
 ;<&  		  Ja)G>EEaHIIJsi   DL: L: 'AL: :L: C&L: <L&AL: 4L+ L: &L: +	L74L: 6L77L: :	M>6M99M>c                    i }	 t        t        t        | |            }|j                  d      *| j	                  d      r| j                  dd      } d}||d<   || fS # t        $ r[}t        j                  dj                  |             | j	                  d      r| j                  dd      } d}||d<   Y d }~|| fS d }~ww xY w)Nr   r!  modez
responses/ 	responseszError getting model info: {})
r   rL  r@   r   rp  replacerF  rZ   rC  r  )r   r!  
model_infor  rV  s        r   responses_api_bridge_checkr    s     "$J&"1D

 >>&!)e.>.>|.LMM,3ED!%Jv u  &;BB1EF
 MM,3ED!%Jvu&s   AA 	C'AB==Cc(                 l   | t        d      t        |      }t        |      }t        |      }t	               })|(j                  dd      }*|(j                  dd      }+|(j                  dd      },t        t        t           |(j                  d	d            }-|(j                  d
d      }.|(j                  dd      }/|(j                  dd      }0|(j                  dd      }1|(j                  dd      }2|(j                  dd      }3|(j                  dd      }4|(j                  dd      }5|(j                  dd      }6|(j                  dd      }7t        t        t           |(j                  dd            }8|(j                  dd      xs |}9|(j                  dd      }:|(j                  dd      };|(j                  dd      }<|9i }9||9j                  |       |(j                  dd      }=|(j                  dd      }>|(j                  dd      }?|(j                  dd      }@|(j                  dd      }A|(j                  d d      }B|(j                  d!d      }C|(j                  d"d      }D|(j                  d#d      }E|(j                  d$d      }F|(j                  d%d      }G|(j                  d&d      }H|(j                  d'd      }I|(j                  d(d      }J|(j                  d)d      }K|(j                  d*d      }L|(j                  d+d      }M|(j                  d,d      }N|(j                  d-d      }O|(j                  d.d      }P|(j                  d/d      }Q|(j                  d0d      }R|(j                  d1d      }S|(j                  d2d      }T|(j                  d3d      }Ut        t        t           |(j                  d4d            }Vt        t        t           |(j                  d5d            }Wt        ||:xs d|;|<6      }t        |(7      }Xi }Yt        |2t               rO|2j#                  VX8      r<|2j%                  | |XVW|(j                  d9d      |(j                  d:d      ;      \  } }}Z	 |"|"}*|=|=}>t        t&        |2      }[|7xs t(        j*                  }7|7t-        di |)S |%3|%D \cg c]  }\|\d<   | k(  s\d=    }]}\t)        j.                  dd>|]i|)S t(        j0                  r%| t(        j0                  v rt(        j0                  |    } t3               }^t5        |^d?t)        j6                                |(j                  d@d      dAu rd@}1||} d@}1t9        | |1|*|$B      \  } }1}_}*|8&|9j                  t;        j<                  |8|1C             ^:t?        ^dD      r.|1^j@                  d<   |(j                  dEd      |^j@                  dF<   |xs |(j                  dGd      xs d}t        |tB        jD                        rtG        |1      s|jH                  xs d}n%t        |tB        jD                        stK        |      }C#D!t)        jL                  |1 dH|  CD|1dIi       n$E"F}Ft)        jL                  |1 dH|  E|F|1dJi       i }`GsHsIsJsKr6| i i}`GrG`|    d%<   HrH`|    d&<   IrI`|    d'<   JrJ`|    d(<   KrK`|    d)<   |(j                  dK      retO        ||(j                  di       j                  dd      t        tP        t        tP        t        t        f   f   |(j                  dK            L      }d}a|1@|1tR        D bcg c]  }b|bjT                   c}bv r tW        jX                  | tS        |1      M      }aaaj[                  |      }N t        Nt              rNdu rt]        |      }__}$i dN| dO|!dP|dQ|dR|dS|dT|dU|dV|
dW|	dX|dY|dZ|d[|d\|d]|d^|i d_| d|1d`|da|db|dc|d|>dd|de|df|#dg|dh|di|dj|&dk|dl|dm|dn|(j                  dn      i}ct_        di |cX}Zta        | |c|X|1|(j                  do      dAdAap      }dt(        jb                  r0Zj                  dqd      rZje                  dq      }etg        ||er      }ti        di d1Sds|$d
|.d|/d|0d|1d|*dt|(j                  dtd      dut(        j0                  dv|3d|4d|5d|6d*LdwUd#Ed!Cd$Fd"Dd|?d/|(j                  d/      dx|(j                  dx      d|(j                  d      d-Ody|(j                  dy      dz|(j                  dz      d+Md{`d||(j                  d|      d.Pd}|(j                  d}      d4Vd5Wd Bd~|(j                  d~d      d|(j                  dd      df|#d|(j                  d      d|(j                  d      d|(j                  d      d|(j                  d      d|(j                  d      d|(j                  d      d|(j                  d      d|>d|d|(j                  dd      }Yt        t         [      jk                  | |d|Y|1       |+s|,s|-r9|(je                  d	d       tm        | ||||+|,[S|(j                  dd      |1|-|      S to        | |1      \  }5} |5j                  d      dk(  r*ddl8m9}f |fju                  | ||9^|$|*S[ZY|T|1tv        |      S |1d@k(  rvd}gTCt        Ttx        jz                        st        Ttx        j|                        rt        df|#iT      }gt        d      xs d@}h|*xs t(        j                  xs t        d      }*|#xs/ t(        j                  xs t        d      xs t(        j                  }#|$xs< t(        j                  xs* t(        j                  xs t        d      xs t        d      }$Zj                  di       je                  dd      xs t        d      }iYj                  dxd      }j|9xs t(        j                  }9||Zd<   |>|>Zd<   t)        j                         j                  |       rlt(        j                  j                         }k|kj                         D ]  \  }l}m|lZvsmZl<    t        ju                  | ||9|$|*|#gi^t        ZY|/[S|T|1      }nnlt(        j                  j                         }k|kj                         D ]  \  }l}m|lZvsmZl<    t        ju                  | ||9|$|*|#hgij^t        ZY|/[S|T      }nZj                  dSd      r[j                  ||$n|9|#|*d       nS |1dk(  rt        d      xs d@}h|*xs t(        j                  xs t        d      }*|*t        d      |#xs t(        j                  xs t        d      }#|$xs< t(        j                  xs* t(        j                  xs t        d      xs t        d      }$Zj                  di       je                  dd      xs t        d      }iYj                  dxd      }j|9xs t(        j                  }9||Zd<   t(        j                  j                         }k|kj                         D ]  \  }l}m|lZvsmZl<    t        ju                  | ||9|$|*t        t        |#      hij^t        ZY|/[S|T      }n|Zj                  dSd      sSdAu r[j                  ||$n|9|#|*d       nS |1dk(  r-	 t        ju                  | ||9^|$|*S[ZY|'|T|1tv        |a      }n|nS |1dk(  rddlTmU}p |pj                  |*      }*|pj                  |$      }$|9xs t(        j                  }9||Zd<   d| v rt        |      }	 t        ju                  | ||9^|$|*S[ZY|'|T|1tv        |      }nZj                  dSd      r[j                  ||$nd|9i       nS |1dk(  s/d| v s+d| v s'|1t(        j                  v r|(j                  d/      dAu rdtx        _Z        |*xs. t(        j                  xs t        d      xs t        d      xs d}*dtx        _B        |$xs/ t(        j                  xs t(        j                  xs t        d      }$|9xs t(        j                  }9||Zd<   t(        j                  j                         }k|kj                         D ]  \  }l}m|lZvsmZl<    t(        j                  rt(        j                  tx        _]        t        |      dkD  r&d|d   v rt        |d   d   t              r	|d   d   }qn"dj                  |D rcg c]  }r|rd   	 c}r      }qt        ju                  | |^t        |$|1|*ST[ZY|/|      }s|Zj                  dSd      du r-Sdu r)Qdu r%t)        j                         j                  s^      }sZj                  dSd      sSdAu r[j                  ||$sd|9i       s}n|nS |1dk(  r-	 t        ju                  | ||9^|$|*S[ZY|'|T|1tv        |a      }n|nS |1dk(  r-	 t        ju                  | ||9^|$|*S[ZY|'|T|1tv        |a      }n|nS |1dk(  r-	 t        ju                  | ||9^|$|*S[ZY|'|T|1tv        |a      }n|nS |1dk(  r|*xs! t(        j                  xs t        d      xs d}*|$xs/ t(        j                  xs t(        j                  xs t        d      }$|9xs t(        j                  }9t(        j                  j                         }k|kj                         D ]  \  }l}m|lZvsmZl<    t        ju                  | ||S|*^ZY|'|1||9tv        |$[T      }n|nS |1dk(  r|*xs. t(        j                  xs t        d      xs t        d      xs d}*|$xs/ t(        j                  xs t(        j                  xs t        d      }$|9xs t(        j                  }9||Zd<   t        ju                  | ||9^|$|*S[ZY|T|1tv        |      }n|nS |1dk(  r|$xs/ t(        j                  xs t        d      xs t(        j                  }$|*xs! t(        j                  xs t        d      xs d}*t        ju                  | ||9^|$|*S[ZY|'|T|1tv        |a      }n|[j                  ||$|n«       |nS | t(        j                  v s]|1dk(  sX|1dk(  sS|1dk(  sN|1dk(  sI|1dk(  sD|1dk(  s?|1dk(  s:|1dk(  s5|1dk(  s0|1dk(  s+|1dk(  s&|1dk(  s!|1dk(  s|1dk(  s|1t(        j                  v sd| v r|*xs. t(        j                  xs t        d      xs t        d      xs d}*Axs! t(        j                  xs t        dѫ      xs d}A|Atx        _]        |$xs/ t(        j                  xs t(        j                  xs t        d      }$|9xs t(        j                  }9||Zd<   t(        j                  rt        |4      }t|ttZd<   t(        j                  j                         }k|kj                         D ]  \  }l}m|lZvsmZl<    t        dҫ      }u	 ur+t        ju                  | ||*|1^tv        [Z|Y|'S||$|9Taӫ      }nn+t        ju                  | ||9^t        |$|*S[ZY|/|`TA|1|'ԫ      }nZj                  dSd      r[j                  ||$nd|9i       nS |1dk(  rr|$xs t(        j                  xs t        d֫      }$|*xs! t(        j                  xs t        d׫      xs d}*t        ju                  | ||*|1^tv        [Z|Y|'S||$|9Taӫ      }n|nS d| v s|1dk(  s| t(        j                  v r|$xs< t(        j                  xs* t(        j                  xs t        dګ      xs t        d۫      }v|*xs! t(        j                  xs t        dܫ      xs d}*`xs t(        j                  }`t        | ||*^t        ZY|/tv        v[|`S|9ޫ      }^|Zj                  dSd      dAu r[j                  |v^«       ^}n|nS d| v s|1dk(  s| t(        j                  v r	 nS |1dk(  r|$xsC t(        j                  xs1 t(        j                  xs t        j                  j                  d      }$`xs t(        j                  }`|*xs. t(        j                  xs t        d      xs t        d      xs d}*t        d      }w|*ws|*j                  d      s|*dz  }*nwrt        j                  d       t        ju                  | ||S|*^ZY|'d||9tv        |$[      }n|nS |1dk(  r4|$xsC t(        j                  xs1 t(        j                  xs t        j                  j                  d      }$`xs t(        j                  }`|*xs. t(        j                  xs t        d      xs t        d      xs d}*t        d      }w|*ws|*j                  d      s|*dz  }*nwrt        j                  d       t        ju                  | ||*St(        j                  ^t        ZY|/tv        |$[|9|T|1      }n|Zj                  dSd      sSdAu r[j                  ||$n«       n}n|nS |1dk(  r|$xs/ t(        j                  xs t        d      xs t(        j                  }x|*xs! t(        j                  xs t        d      xs d}*t        | ||*^t        ZY|/tv        x[      }ndS|Zv rZdS   dAu rt        n| d[      }nZj                  dSd      sSdAu r[j                  ||$n«       n}n|nS |1dk(  r|$xs< t(        j                  xs* t        d      xs t        d      xs t(        j                  }y|*xs! t(        j                  xs t        d      xs d}*t        jt                  | ||*^t        ZY|/tv        t(        j                  y[      }^dS|Zv rZdS   dAu rt        ^| d[      }n|nS ^}n|nS |1dk(  s|1dk(  rm|$xs= t(        j                   xs* t        d      xs t        d      xs t(        j                  }zt        j                  |       }{t        j                  d|{        |{dk(  rA|*xs" t(        j                  xs t        d      xs d }*d| v r<| j                  dd      } n&|*xs" t(        j                  xs t        d      xs d}*|9xs t(        j                  xs i }9|9i }9||9j                  |       t        j                  d|  d|*        t        j                  da        t        ju                  | ||S|*^ZY|'d||9tv        z|a[      }n|nS |1dk(  r|$xs1 t(        j                  xs t        d	      xs t(        j                  }||*xs# t(        j                  xs t        d
      xs d}*t
        ju                  | ||*^t        ZY|/tv        |[d`      }^|^}n|nS |1dk(  r|$xsg t(        j                  xsT t        j                  j                  d      xs2 t        j                  j                  d      xs t(        j                  }}|9xs t(        j                  }~t        ju                  | ||~^}|*S[ZY|T|1tv        |      }n|nS |1dk(  r*t        ju                  | ||9^|$|*S[ZY|T|1tv        |      }n|nS |1dk(  rU|$xs t        d      xs t(        j                  }$|*xs d}*t        ju                  | ||9^|$|*S[ZY|T|1tv        |a      }n|nS |1dk(  rNd}1t        jt                  | |^|*t        ZYd|/tv        [      }^dS|Zv rZdS   dAu rt        ^| d[      }n|nS ^}n|nS |1dk(  r|*xs) t(        j                  xs t        j                  d      }*|$xs1 t(        j                  xs t(        j                  xs t        d      }$|9xs t(        j                  }9	 t        ju                  | ||S|*^ZYd||9tv        |$[T      }nZj                  dSd      r[j                  ||$nd|9i       nS |1dk(  r,t        ju                  | ||9^|$|*S[ZY|T|1tv        |a      }n|nS |1dk(  rv|*xs# t(        j                  xs t        d      xs d}*|$xs? t(        j                  xs- t(        j                  xs t        d      xs t        d       }$t        d!      xs d"}t        d#      xs d$}|d%}|9xs t(        j                  }|rj                         }9t(        j                  j                         }k|kj                         D ]3  \  }l}m|ldk(  rdZv rZl   j                  m       $mZl<   *lZvs/mZl<   5 | |d&Z}t        ju                  | ||S|*^|ZY|'d||9tv        |$[T      }n|[j                  |tx        j                  |n«       |nS |1d'k(  rU|*xs# t(        j                  xs t        d(      xs d)}*|$xs t(        j                  xs t        d*      }$t        d+      xs d"}t        d,      xs d$}|d-}|9xs t(        j                  }|rj                         }9t(        j                  j                         }k|kj                         D ]3  \  }l}m|ldk(  rdZv rZl   j                  m       $mZl<   *lZvs/mZl<   5 | |d&Z}t        ju                  | ||S|*^|ZY|'d'||9tv        |$[T      }n|[j                  |tx        j                  |n«       |nS |1dk(  sd.| v s| t(        j                  v r	 	 nS |1d/k(  rt        d0      |1d1k(  s|1d2k(  r]Zje                  d3d      xs4 Zje                  d4d      xs t(        j                  xs t        d5      }Zje                  d6d      xs4 Zje                  d7d      xs t(        j                  xs t        d8      }Zje                  d9d      xs! Zje                  d:d      xs t        d;      }|$xs+ t!               xs t        d<      xs t(        j                  }|*xs t(        j                  xs t        d=      }*t#        Zxs i       }t$        ju                  | |^t        |Y|/tv        [S||1T|*|9>      }n|nS |1d?k(  rxZje                  d3d      xs4 Zje                  d4d      xs t(        j                  xs t        d5      }Zje                  d6d      xs4 Zje                  d7d      xs t(        j                  xs t        d8      }Zje                  d9d      xs! Zje                  d:d      xs t        d;      }|*xs t(        j                  xs t        d@      }*t#        Zxs i       }t'        | YA      }|t(        j*                  k(  r3t,        ju                  | |^t        Y|/tv        |*[S|9`|TB      }^n#t(        j.                  k(  r3t$        ju                  | |^t        Y|/tv        d[S||1T|*|9>      }^nt(        j0                  k(  r2t2        ju                  | |^t        Y|/tv        |*[S|9`|TB      }^nt(        j4                  k(  r2t6        ju                  | |^t        Y|/tv        |*[S|9`|TB      }^nMt9        jt                  | |^t        Y|/tv        [SC      }^dSZv rZdS   dAu rSdu rt        ^| d?[      }n|nS ^}n|nS |1dDk(  rZje                  dd      xs4 Zje                  dEd      xs t(        j:                  xs t        dF      }|t        dG      |*xsG Zje                  dd      xs3 Zje                  dHd      xs t(        j                  xs t        dI      }*|$xs1 t(        j                  xs t(        j<                  xs t        dJ      }$t>        ju                  | |^t        ZY|/tv        [S|*`|$|K      }dS|Zv rZdS   dAu rSdu rS }n|nS |1dLk(  r|*xs> Zje                  dd      xs* Zje                  dHd      xs t(        j                  xs dM}*|$xs t(        j                  xs t        dN      }$t)        j@                  |O      }tB        ju                  | ||t        ZY|/tv        [S|*`|$|P      }dS|Zv rZdS   dAu rSdu rS }n|nS |1dQk(  r.t        ju                  | ||S|*^ZYdQ||9tv        |$[T      }^|^}n|nS |1dRk(  r/tD        ju                  | |^t        ZY`M|/tv        [SS      }^|^}n|nS |1dTk(  r`xs t(        j                  }`dUZv rt        jF                  dV       Zje                  dU      }|jI                         jK                         }|jL                  rjL                  ZdW<   jN                  rjN                  ZdX<   jP                  rjP                  ZdY<   dEZvsZdE   jR                  jT                  ZdE<   tW        jX                  |       }|dZk(  rA| j                  d[d      } tZ        ju                  | |`^ZY|/tv        [|9|ST|*|$\      }n|nS d]k(  rA| j                  d^d      } t        ju                  | ||S|*^ZYdT||9tv        |$[T      }n|nS t        ju                  | ||S|*^ZYdT||9tv        |$[T      }nnS |1d_k(  r3t\        ju                  | ||9^t        |$|*S[ZY|/|`Ttv        d_`      }n|nS |1dak(  rg|$xs= Zje                  dbd      xs( t        dc      xs t        dd      xs t        de      }$|*xsl Zje                  df|Zje                  d|Zje                  dHd                  xs6 t        dg      xs( t        dh      xs t        di      xs t        dj      }*Zje                  dk|Zje                  dld            }d}|Zj                  df|*      }*|j                  db|j                  ds|$            }$|j                  dm|j                  dnd            }Zdm<   t        ju                  | ||S|*^ZY|'da||9tv        |$[T      }n|nS |1dok(  r^`xs t(        j                  }`t_        jt                  | ||`^t        ZY|/tv        [p
      }^dS|Zv rZdS   dAu rt        ^| do[      }n|nS ^}n|nS |1dqk(  rSt(        j                  xs |*xs t        dr      xs ds}*t        ju                  | ||S|*^ZY|'dq||9tv        |$[T      }n|nS |1dtk(  rt(        j                  xs |*xs t        dr      xs ds}*|$xsE t(        j`                  xs2 t        j                  j                  du      xs t(        j                  }$t        ju                  | ||S|*^ZY|'dt||9tv        |$[T      }n|nS |1dvk(  r>t(        j                  xs |*}*t        ju                  | ||S|*^ZY|'|1||9tv        |$[      }n|nS |1dwk(  r|$xs1 t(        jb                  xs t(        j                  xs t        dx      }$t        dy      }|*xs( t(        j                  xs t        dz      xs d{ d|}*`xs t(        j                  }`t        ju                  | ||S|*^ZY|'dw||9tv        |$[      }n|nS |1d}k(  s| t(        jd                  v r}|*xs t(        j                  }*d}}1Zje                  dSd      }tg        jt                  | ||*^t        |ZY|/tv        [T~      }^|dAu r"^d   d   d   d   }t        || d}[      }n|nS ^}n|nS |1dk(  s| t(        jh                  v r@	 |du rtk        |      nd}Tt        ju                  | ||9^|$|*S[ZY|'||T|1tv        |      }n|nS |1dk(  r?t(        j                  xs |*}*t        ju                  | ||S|*^ZY|'d||9tv        |$[      }n|nS |1dk(  rg|$xs1 t(        jl                  xs t        d      xs t(        j                  }$t        ju                  | ||9^|$|*S[ZY|T|1tv        |tn              }n	 |nS |1dk(  rg|$xs1 t(        jp                  xs t        d      xs t(        j                  }$t        ju                  | ||9^|$|*S[ZY|T|1tv        |tr              }n	 |nS |1dk(  s| t(        jt                  v r|$xs1 t(        jv                  xs t        d      xs t(        j                  }$|*xs# t(        j                  xs t        d      xs d}*t        ju                  | ||9^|$|*S[ZY|T|1tv        |tx              }n	 |nS |1dk(  rt(        j                  xs |*xs d}|dk(  rt        d      	 dj                  |D rcg c]  }r|rd   	 c}r      }qt(        jz                  j}                  |9| |qg|
|||(j                  d      dd|(j                  di             }|j                         }	 |d   d   d   d   }|^j                  d   j                  _        t        t        j                               |^_        | |^_        |^}n|nS |1t(        j                  v rd}t(        j                  D ]  }|d   |1k(  sd   } t        | |1      t        S|      }|9xs t(        j                  xs i }9 di d_| dh|d|9d^dt        ds|$d|*d1Sd[dZd=Yd|/d|d{`d2Tdtv        }n|dAu rt        n| |1[      S nS t        | |1      c c}\w c c}bw # t        $ r'}o[j                  ||$t        o      d|9i       |od}o~oww xY w# t        $ r'}o[j                  ||$t        o      d|9i       |od}o~oww xY wc c}rw # t        $ r'}o[j                  ||$t        o      d|9i       |od}o~oww xY w# t        $ r'}o[j                  ||$t        o      d|9i       |od}o~oww xY w# t        $ r'}o[j                  ||$t        o      d|9i       |od}o~oww xY w# t        $ r'}o[j                  ||$t        o      d|9i       |od}o~oww xY w# t        $ r'}o[j                  ||$t        o      d|9i       |od}o~oww xY w# t        $ r'}o[j                  ||$t        o      d|9i       |od}o~oww xY wc c}rw # t        $ r}ot        | |1o|)|(      d}o~oww xY w(  a  
    Perform a completion() using any of litellm supported llms (example gpt-4, gpt-3.5-turbo, claude-2, command-nightly)
    Parameters:
        model (str): The name of the language model to use for text completion. see all supported LLMs: https://docs.litellm.ai/docs/providers/
        messages (List): A list of message objects representing the conversation context (default is an empty list).

        OPTIONAL PARAMS
        functions (List, optional): A list of functions to apply to the conversation messages (default is an empty list).
        function_call (str, optional): The name of the function to call within the conversation (default is an empty string).
        temperature (float, optional): The temperature parameter for controlling the randomness of the output (default is 1.0).
        top_p (float, optional): The top-p parameter for nucleus sampling (default is 1.0).
        n (int, optional): The number of completions to generate (default is 1).
        stream (bool, optional): If True, return a streaming response (default is False).
        stream_options (dict, optional): A dictionary containing options for the streaming response. Only set this when you set stream: true.
        stop(string/list, optional): - Up to 4 sequences where the LLM API will stop generating further tokens.
        max_tokens (integer, optional): The maximum number of tokens in the generated completion (default is infinity).
        max_completion_tokens (integer, optional): An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens.
        modalities (List[ChatCompletionModality], optional): Output types that you would like the model to generate for this request.. You can use `["text", "audio"]`
        prediction (ChatCompletionPredictionContentParam, optional): Configuration for a Predicted Output, which can greatly improve response times when large parts of the model response are known ahead of time. This is most common when you are regenerating a file with only minor changes to most of the content.
        audio (ChatCompletionAudioParam, optional): Parameters for audio output. Required when audio output is requested with modalities: ["audio"]
        presence_penalty (float, optional): It is used to penalize new tokens based on their existence in the text so far.
        frequency_penalty: It is used to penalize new tokens based on their frequency in the text so far.
        logit_bias (dict, optional): Used to modify the probability of specific tokens appearing in the completion.
        user (str, optional):  A unique identifier representing your end-user. This can help the LLM provider to monitor and detect abuse.
        logprobs (bool, optional): Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the content of message
        top_logprobs (int, optional): An integer between 0 and 5 specifying the number of most likely tokens to return at each token position, each with an associated log probability. logprobs must be set to true if this parameter is used.
        metadata (dict, optional): Pass in additional metadata to tag your completion calls - eg. prompt version, details, etc.
        api_base (str, optional): Base URL for the API (default is None).
        api_version (str, optional): API version (default is None).
        api_key (str, optional): API key (default is None).
        model_list (list, optional): List of api base, version, keys
        extra_headers (dict, optional): Additional headers to include in the request.

        LITELLM Specific Params
        mock_response (str, optional): If provided, return a mock completion response for testing or debugging purposes (default is None).
        custom_llm_provider (str, optional): Used for Non-OpenAI LLMs, Example usage for bedrock, set model="amazon.titan-tg1-large" and custom_llm_provider="bedrock"
        max_retries (int, optional): The number of retries to attempt (default is 0).
    Returns:
        ModelResponse: A response object containing the generated completion and associated metadata.

    Note:
        - This function is used to perform completions() using the specified language model.
        - It supports various optional parameters for customizing the completion behavior.
        - If 'mock_response' is provided, a mock completion response is returned for testing or debugging.
    Nzmodel param not passed in.)r   )r  )r	  r,  r.  r/  r   force_timeoutr   	logger_fnverboseFr!  r"  rD  metadatar  proxy_server_requestr  provider_specific_headerheadersensure_alternating_rolesuser_continue_messageassistant_continue_messager   r   cooldown_timecontext_window_fallback_dictr   
ssl_verifyinput_cost_per_tokenoutput_cost_per_tokeninput_cost_per_secondoutput_cost_per_secondinitial_prompt_valuerolesfinal_prompt_value	bos_token	eos_tokenpreset_cache_keyhf_model_namesupports_system_message
base_model(disable_add_transform_inline_image_blocktext_completionatext_completionr   r   zno-logr#  r%  )r   r  r  r  r   )r#  r$  r&  r'  )r   r   r$  r#  r%  r&  r'  
model_namelitellm_paramsdeploymentsr  rg  Tr   r!  r,  r   )r  r!  r  aws_region_nameregion_namerequest_timeout/r  r  litellm_providerr  r  r  model_file_id_mapping)r   model_idr  r   providerr   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   r  r  r  r  r  allowed_openai_paramsadditional_drop_params)r   passed_paramsspecial_paramsr!  r  remove_sensitive_keysadd_provider_specific_paramsprovider_configfunctions_unsupported_model)r   r   r   litellm_call_idmodel_alias_mapcompletion_call_idno_logazure_ad_token_providerlitellm_trace_idlitellm_session_idcustom_prompt_dictlitellm_metadatadrop_params"merge_reasoning_content_in_choicesuse_litellm_proxyazure_ad_token	tenant_id	client_idclient_secretazure_usernameazure_passwordazure_scoper   litellm_request_debugr   r  optional_paramsr  r!  r-  )
r   r   r.  r/  r  r   r-  r!  r   r   r  r  r  r   )responses_api_bridge)r   r   r  r  r   r,  r   r  r  r  r   r   r!  encodingr   )azure_client_paramsazure_clientAZURE_API_TYPEAZURE_API_BASEAZURE_API_VERSIONAZURE_OPENAI_API_KEYAZURE_API_KEY
extra_bodyAZURE_AD_TOKENr  r  )r   r   r  r   r,  r  dynamic_paramsr  r  rX  r  r  r  r  r   r   r   r!  )r   r   r  r   r,  r  api_typer  r  r  r  rX  r  r  r  r  r   r   r   )r  r  r,  )r  r   r  additional_args
azure_textz}api_base is required for Azure OpenAI LLM provider. Either set it dynamically or set the AZURE_API_BASE environment variable.)r   r   r  r   r,  r  r  r  r  r  rX  r  r  r  r  r   r   r   deepseek)r   r   r  r  r   r,  r   r  r  r  r  r   r   r!  r  r   r  azure_ai)AzureFoundryModelInfoz	command-r)r   r   r  r  r   r,  r   r  r  r  r  r   r   r!  r  r   r0  zft:babbage-002zft:davinci-002r6  OPENAI_BASE_URLOPENAI_API_BASEhttps://api.openai.com/v1OPENAI_API_KEYr   )r   r   r  rX  r   r!  r,  r   r   r  r  r  r  r   r2  fireworks_aiherokuxaigroqGROQ_API_BASEzhttps://api.groq.com/openai/v1GROQ_API_KEY)r   r   r   r   r,  r  r  r  r  r!  r   r  r  r   r  r   aiohttp_openaicometapiCOMETAPI_KEYCOMETAPI_API_BASEhttps://api.cometapi.com/v1r  custom_openai	deepinfra
perplexity
nvidia_nimcerebrasbaseten	sambanova
volcengineanyscaletogether_ainebiuswandbclarifaizft:gpt-3.5-turboOPENAI_ORGANIZATION)EXPERIMENTAL_OPENAI_BASE_LLM_HTTP_HANDLER)r   r   r,  r!  r  r  r  r  r   r  r  r   r   r   r  r   r  )r   r   r  r  rX  r   r,  r   r  r  r  r  r   r  r   r   r!  r  mistralMISTRAL_API_KEYMISTRAL_API_BASEzhttps://api.mistral.ai/v1	replicateREPLICATE_API_KEYREPLICATE_API_TOKENREPLICATE_API_BASEzhttps://api.replicate.com/v1)r   r   r,  r  rX  r  r  r  r  r   r  r  r   r  anthropic_textANTHROPIC_API_KEYANTHROPIC_API_BASEANTHROPIC_BASE_URLz%https://api.anthropic.com/v1/complete$LITELLM_ANTHROPIC_DISABLE_URL_SUFFIXz/v1/completezILITELLM_ANTHROPIC_DISABLE_URL_SUFFIX is set, skipping /v1/complete suffix)r   r   r   r   r,  r  r  r  r  r!  r   r  r  r   r  r  z%https://api.anthropic.com/v1/messagesz/v1/messageszILITELLM_ANTHROPIC_DISABLE_URL_SUFFIX is set, skipping /v1/messages suffix)r   r   r,  r   r  r  rX  r  r  r  r  r   r  r  r   r   r!  	nlp_cloudNLP_CLOUD_API_KEYNLP_CLOUD_API_BASEzhttps://api.nlpcloud.io/v1/gpu/)r   r   r,  r  rX  r  r  r  r  r   r  )r!  r  r~   ALEPH_ALPHA_API_KEYALEPHALPHA_API_KEYALEPH_ALPHA_API_BASEz$https://api.aleph-alpha.com/complete)r   r   r,  r  rX  r  r  r  r  default_max_tokens_to_sampler   r  cohere_chatcohereCOHERE_API_KEY
CO_API_KEYzCohere route: v2COHERE_API_BASEzhttps://api.cohere.com/v2/chatzv2/r  zhttps://api.cohere.ai/v1/chatzModel: z, API Base: zProvider Config: )r   r   r   r   r,  r  r  r  r  r!  r   r  r  r   r  r  maritalkMARITALK_API_KEYMARITALK_API_BASEzhttps://chat.maritaca.ai/api)r   r   r,  r  rX  r  r  r  r  r   r  r!  r  huggingfaceHF_TOKENHUGGINGFACE_API_KEYocicompactifaiCOMPACTIFAI_API_KEYzhttps://api.compactif.ai/v1)r   r   r  r  r   r,  r   r  r  r  r   r   r!  r  r   r  r   )r   r   r  r,  rX  r  r  r   r  r  r  
databricksDATABRICKS_API_BASEDATABRICKS_API_KEY)r   r   r   r   r,  r  r  r  r!  r   r  r  r   r  r   	datarobot
openrouterOPENROUTER_API_BASEzhttps://openrouter.ai/api/v1OPENROUTER_API_KEY
OR_API_KEYOR_SITE_URLzhttps://litellm.aiOR_APP_NAMEliteLLM)zHTTP-RefererzX-Titler   vercel_ai_gatewayVERCEL_AI_GATEWAY_API_BASEzhttps://ai-gateway.vercel.sh/v1VERCEL_AI_GATEWAY_API_KEYVERCEL_SITE_URLVERCEL_APP_NAME)zhttp-refererzx-titletogethercomputerr   zPalm was decommisioned on October 2024. Please use the `gemini/` route for Gemini Google AI Studio Models. Announcement: https://ai.google.dev/palm_docs/palm?hl=envertex_ai_betageminivertex_projectvertex_ai_projectVERTEXAI_PROJECTvertex_locationvertex_ai_locationVERTEXAI_LOCATIONvertex_credentialsvertex_ai_credentialsVERTEXAI_CREDENTIALSPALM_API_KEYGEMINI_API_BASE)r   r   r  rX  r  r  r  r  rd  ra  rg  gemini_api_keyr  r   r   r!  r   r,  r  	vertex_aiVERTEXAI_API_BASE)r   r  )r   r   r  rX  r  r  r  r  r,  rd  ra  rg  r  r   r  r  r   r   )r   r   r  rX  r  r  r  r  rd  ra  rg  r  r   	predibasepredibase_tenant_idPREDIBASE_TENANT_IDzMissing Predibase Tenant ID - Required for making the request. Set dynamically (e.g. `completion(..tenant_id=<MY-ID>)`) or in env - `PREDIBASE_TENANT_ID`.r   PREDIBASE_API_BASEPREDIBASE_API_KEY)r   r   r  rX  r  r  r  r  r  r   r,  r  r   r  r   r1  z/https://codestral.mistral.ai/v1/fim/completionsCODESTRAL_API_KEY)r   )r   r   r  rX  r  r  r  r  r  r   r,  r  r   r   sagemaker_chat	sagemaker)r   r   r  rX  r  r  r  r  r  r  r  r   bedrockaws_bedrock_clientz'aws_bedrock_client' is a deprecated param. Please move to another auth method - https://docs.litellm.ai/docs/providers/bedrock#boto3---authentication.aws_access_key_idaws_secret_access_keyaws_session_tokenconversez	converse/)r   r   r  r  r  r  r  r  r  r  r   r   r   r,  r   converse_likezconverse_like/watsonx)r   r   r  r  rX  r   r,  r   r  r  r  r  r   r  r   r  r!  watsonx_textapikeyWATSONX_APIKEYWATSONX_API_KEY
WX_API_KEYrc  WATSONX_API_BASEWATSONX_URLWX_URLWML_URLwx_credentialswatsonx_credentialstokenwatsonx_tokenvllm)
r   r   r  r  rX  r  r  r  r  r  ollamaOLLAMA_API_BASEhttp://localhost:11434ollama_chatOLLAMA_API_KEYtriton
cloudflareCLOUDFLARE_API_KEYCLOUDFLARE_ACCOUNT_IDCLOUDFLARE_API_BASEz.https://api.cloudflare.com/client/v4/accounts/z/ai/run/petals)r   r   r,  r  rX  r  r  r  r  r  r   r  rd  	snowflaker~  gradient_aibytezBYTEZ_API_KEYlemonadeLEMONADE_API_KEYovhcloudOVHCLOUD_API_KEYOVHCLOUD_API_BASE0https://oai.endpoints.kepler.ai.cloud.ovh.net/v1customzGapi_base not set. Set api_base or litellm.api_base for custom endpointstop_k)promptr   r   r   r  )r   r   )r  jsondataoutputr  custom_handler)async_fnr   
custom_llmr  rX  r  r  r  r  r7  r   )
ValueErrorrV   rW   rX   r   r   r   r   boolr   updater   rL  ra   rI   r>  r?  r@  get_chat_completion_promptr   r   rE  r`   batch_completion_modelsr  r   r  r?   rH   r(   get_provider_specific_headershasattrr  rk  rv  rT   readr   register_modelrb   r   r   valuer>   get_provider_chat_config'translate_developer_role_to_system_rolere   r    rQ   add_function_to_promptr   rd   r   update_environment_variablesr  r  litellm.completion_extrasr  r   r  r6  AzureOpenAIAsyncAzureOpenAIrm   rN   r,  r  r9   AZURE_DEFAULT_API_VERSIONr   	azure_keyr  AzureOpenAIO1Configis_o_series_model
get_configr   azure_o1_chat_completionsrX  AzureOpenAIConfigazure_chat_completionsr  azure_text_completionsbase_llm_http_handlerrF  "litellm.llms.azure_ai.common_utilsr  get_api_baserG   rh   +openai_text_completion_compatible_providersr  
openai_keyrN  r   rB  listjoinopenai_text_completionsrO  groq_keyGroqChatConfigbase_llm_aiohttp_handlercometapi_keyopen_ai_chat_completion_modelsopenai_compatible_providersenable_preview_featuresrA   OpenAIConfigr8   openai_chat_completionsreplicate_modelsreplicate_keyr  replicate_chat_completionclarifai_modelsanthropic_keyosenvironendswithrZ   rC  anthropic_chat_completionsnlp_cloud_keynlp_cloud_chat_completionr=   aleph_alpha_keyr~   r   
cohere_keyr2   get_cohere_router  maritalk_keyopenai_like_chat_completionhuggingface_keyr   getenvdatabricks_keyopenrouter_keyOpenrouterConfigVercelAIGatewayConfigtogether_ai_modelsra  rd  r   r^   vertex_chat_completionr6   r5   PARTNER_MODELS%vertex_partner_models_chat_completionGEMINIGEMMAvertex_gemma_chat_completionMODEL_GARDEN#vertex_model_garden_chat_completionr   rp  predibase_keypredibase_chat_completionsr   codestral_text_completionssagemaker_llmwarning_get_credentialsget_frozen_credentials
access_key
secret_keyr  metar  r1   get_bedrock_route bedrock_converse_chat_completionwatsonx_chat_completionvllm_handler
ollama_keycloudflare_api_keypetals_modelspetals_handlersnowflake_modelsr4   	bytez_keybytez_transformationlemonade_keylemonade_transformationovhcloud_modelsovhcloud_keyovhcloud_transformationmodule_level_clientpostr  r  rd  r  r   r|  r  r   _custom_providerscustom_provider_mapr#   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	  r  r  r
  r  r*  r  r  r  r   r   r   r  r   r  r  r  r   rY  r,  r.  r/  r   r  r  r  r!  r"  rD  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  r  r  r  r  r  r   r   r  r#  r%  r$  r  r  r  mr  r  dynamic_api_keyr  r  r  optional_param_argsprocessed_non_default_paramsr  r  r  r  r  r  configr   r   r   rV  r  r  rd  	_responsemetadata_payloaduse_base_llm_http_handlerr  disable_url_suffixr  r  r  cohere_router  r  
hf_headersopenrouter_site_urlopenrouter_app_nameopenrouter_headers_headersr  vercel_site_urlvercel_app_namevercel_headersrb  re  rg  rl  
new_paramsmodel_router  _model_responsetext_completion_model_responserx  credsbedrock_router  r  
account_idresp_stringrc  respresponse_jsonstring_responser  item
handler_fns                                                                                                                                                                 r   r   r     sE   F }566/BH)6E6;OK8Dzz*d+H28**_d2SMjj!2D9O

>4(HILJJ4M

;-IjjE*G **%:DA **%:DA	D$	Bzz*d+HL$/J!::&<dC

;-I#'(&**5OQU*V  jjD):]G/5zz"D0 BHB LR::$dL  }%**tK **]D1KJJ5M#)::.Ld#S ::nd3LL$/J!::&<dC"JJ'>E"JJ'>E#ZZ(@$G!::&<dCJJw%E$8$?

;-I

;-Izz"4d;JJ5M$jj)BDIL$/J/5zz2D0, jj!2E:Ozz"4e<**]E2KZZ$'FZZ%(FXc]FJJ{D$ABIHTNFJJ7I4,PQ&!9!BU3#=	H ;&IN %'89>>4F 	? 	
  ::1-ND9!::&6= ; 
		
D)
H"%K)<=8!8!8	 ,4t44!-7-71\?e;S"#Z   22S{SdSS""u0G0G'G++E '9JJw&$.")$!E")@P 3	A
="OX $/NN+II-E(; %'.BR*SCVN))*?@;A::!4<N))-8
 FVZZ(93?F3gu}}-6L7
 ll)cGGU]]3GnG  +0E0Q""*+1UG40D1F,?7 "-%;"""*+1UG41F2H,?7   !"'#DX"5)*@A5:"5)'2!BT"5)*>?9B"5)+69B"5)+6::-.:!L"599$E&*d38n,-vzz:Q/R'H 15*/B+7G
+7xHNN<G
 0
 4LLl3F&GO &&NN! O H
 $/2D9'50,h?H&%G%
%
]%
 ;%
 U	%

 %
 f%
 n%
 D%
 *%
 $%:%
 *%
 *%
 U%
  0%
  !2%
  *!%
" D#%
& U'%
( "#6)%
* +%
, D-%
. U/%
0 ;1%
2 ;3%
4 5%
6 L7%
8 ;9%
: "#6;%
< =%
>  0?%
@ A%
B !"4C%
D  !2E%
F LG%
H $VZZ0G%HI%
L . 
!
%7
 (F-- 3#)::.F#G"&)-+	(
$ ))o.A.A)4/
 +:*=*=-+' ,!-HH
 , 2
#2
2
 (2
  	2

 2
 !42
 2
 #JJ'8$?2
 $332
  "2
 2
 "2
 "62
 .2
 2
  #8!2
" "6#2
$ $:%2
& #8'2
( ()2
* #JJ'89+2
, %+JJ/H$I-2
. #)**-D"E/2
0 "12
2 $ZZ(:;32
4  &zz*>?52
6 (72
8  292
: $ZZ(:;;2
< 6^=2
> 

=1?2
@  A2
B .C2
D "E2
F 06zz4d0G2
L %jj)<eDM2
N $O2
P "::&67Q2
R jj-S2
T jj-U2
V !**_5W2
X "::&67Y2
Z "::&67[2
\ 

=1]2
^ $_2
` a2
b #)**-De"Lc2
f 	(EE8) 3 	F 	
 O|JJ~t,"+ /'!::lD9$7)   7-@

E >>&![0F'22!-!'# /-$7! 3  $ ') #N!66#5#56ff&=&=>!<)6(D!'"
 ""23>wHS7#3#3SzBR7SH  5&&5!"565 44	   3??3$$3 ""893 "/2  -00rBFF $ 2 01  '5&8&8)4'# 0G(3@0&1<.**,>>U>K 44??A"LLNDAq0-.*	 + 5??%##% +#1#1#1"/$3#1' ' +#!(;% @ , !22==?"LLNDAq0-.*	 + 2<<%##% +%#1#1,C#1"/$3#1' ' +#!' = , ""8U3!!"#&.#*'2$,%	 " 	DE qD !L0%&67B7HW7#3#3W~FV7WH  T 
  7&&7!"56   3??3$$3 ""893 "/2  -00rBFF $ 2 01  '5&8&8)4'# 0G(3@0 ..99;F1_,)*OA&	 ' .88!! k2!-(?-+ /-##'% 9 H* ""8U3{d7J!!"#&.#*'2$,%	 " 	dB QB !J.0;;%##1#% + '$3#1#1#!(;%!$3# < HB OA !J.P,99(CH+77@G0G(3@0 e#;XN0;;%##1#% + '$3#1#1#!(;%!! < 8 ""8U3!!"#&.%.$8	 " n? a?  #;;5(5("BBC

,-5&FO  /##//0/ /0/ /  "&F  0??0%%0 ./	  0G(3@0 77BBDF1_,)*OA&	 '
 ##&-&:&:# H!!,x{95t< "!Y/X"NX'79#5X"NO 0::!-+$7!'# /-# ; I$  ##He4=5(#u, $>>@ff$-^ g 	 ""8U3{d7J!!"#&/%.$8	 "  !Hn< m< !N20;;%##1#% + '$3#1#1#!(;%!$3# < f< o; !H,0;;%##1#% + '$3#1#1#!(;%!$3# < j; s: !E)0;;%##1#% + '$3#1#1#!(;%!$3# < l: u9 !F* 4##4o.4 4	   .??.##. n-	  0G ++668F1_,)*OA&	 ' -77!'!- /--$7!#! 8 H@9 ]8 !$44  /##//0/ /0/ /   0??0%%0 ./	  0G(3@0/::!-!'# /-$7! ; Hr7 Q7 !J. #''#!.1# ??	   1##1!"561 1	  -77!-!'# /--$7! /# 8 H* 8  F6 5 W;;;"o5"k1"l2"l2"j0"i/"k1"l2"j0"h."m3"h."g-"j0"g&I&II!U*
  /##//0/ /0/ /   ''34 	  #/F  0??0%%0 ./	  0G(3@0..#6x#@ #/2BOJ/ ))446F1_,)*OA&	 ' )8;)%3,4??#!)!),?'5!)$+(7 ''5'5$/% ' '%(7#  @  H(  7AA#!) ''5&3 '!)$/$+(7'5"+ '+=%%1,?'5%  B  H< ""8U3!!"#&.%.$8	 " N2 A2 !I-QQJ?P4QG /##/01/ /	  -77!!$7-!# /--' /# 8 Hn1 G1 5 "k1000  5((5??5 125 34   2##2232 2	  "4!Qw7Q7Q6!!-+ /-#!%##5'N" ""8U3t;!!")&4 "  &Hh/ e/ %"j0///\/ [/ !$44 7((7??7 ::>>"56	  "4!Qw7Q7Q ;##;23; 23; ;  "11W!X$* )).9N*#$$_ -77!'!- /--$4!# 8 H`. - !K/ 7((7??7 ::>>"56	  "4!Qw7Q7Q  ;##;23; 23; ;  "11W!X$* )).9N*#$$_ 2<<!!'#*#=#=-+ /-#!#$7# = H& ""8U3{d7J!!"#&. " 
  HL, K, !K/ #((#12# ??	   5##5235 5	  1!!-+ /-#!%#H ?*x/HD/P.(3 '	 ""8U3{d7J!!"#&. "   Hn* m* !M1 #**#34# 23# ??   :##:45: :	  )33!!-+ /-#!-4-?-?'#N ?*x/HD/P."(5 '	  %H\) [) !M15HH5T #%%#!"23# ",/# ??  +;;EBL  >,!@At# 8''8%&788 8	  E>!MM%4E  7''7%&787 7	  66BG(}-  75'hZ!HI  #4_4E!FG,77!'!- /--$1!" /#! 8 HL( i' !J. #''#01# ??	   2##2122 2	  9CC!!-+ /-#!$#$.#5 D N  &Hj& i& !M1 #**#::>>*-# ::>>"78# ??  !3GOOJ,77!"-'!'# /-$7! 8 HV& u% !E),77!-!'# /-$7! 8 Hr% Q% !M1S>*?@SGOO   @#@H -77!-!'# /-$7! /! 8 H@% ]$ !K/"-&11!-!+ /-#!#N ?*x/HD/P."(3 '	  %Hl# k# !L0 4##49923   4??4))4 23	  0G0;;!% +%#1$3#1(4##%# '! < 6 ""8U3!!"#&.%.$8	 " J" }! !K/,77!-!'# /-$7! /! 8 Hz! W! !L0 2##2!"782 2	   ,??,)), 23, l+  #-]";"S?S",]";"Hy !4."
 1'//H"))(3(G --88:F1$#6'*11!4-.*o-)*OA& ' #LOLD -77!'!- /--$0!#! 8 H& (  V Q !$77 5##5!">?5 5	  U7??Uj9T.U  )):;S?SO():;HyO !0*N
 1'//H%%h/$G 22==?F1$#6'*11!4-.*o-)*OA& ' #LOLD -77!'!- /--$7!#! 8 H& (  X Q  =0"e+333 B A !F* v  !$448Kx8W##$4d; 2"&&':DA2))2 01	   ##$5t< 3"&&';TB3**3 12	   ##$8$? 6"&&'>E645   #')#n-# ??	   T7#3#3TzBS7TH'(=2>J-88!-+ *-#! 20#5-#'$7!%' 9 H@ U !K/##$4d; 2"&&':DA2))2 01	   ##$5t< 3"&&';TB3**3 12	   ##$8$? 6"&&'>E645   V7#3#3VzBU7VH'(=2>J3NK 0???!F!Q!Q%#1"/$.#1'%%$6#4'9 ' +#'9#!% "R "(  2 9 99!7!B!B%#1"/$.#1'%$6#4'9#' ' +#(;!%")' "C "*  2 8 88!=!H!H%#1"/$.#1'%%$6#4'9 ' +#'9#!% "I "(  2 ? ??!D!O!O%#1"/$.#1'%%$6#4'9 ' +#'9#!% "P "* "6!@!@%#1"/$.#1'%$6#4'9 ' +"" /'1T9#u,2&,7$+	 H $O%Hx w !K/##K6 5"&&'<dC5..5 34	     q 
  4"&&z484"&&z484 ##4 23   3??3((3 12	  9CC!-+ /-#!#'!#5# D O& O+#H-55(&&&HN M !$?? E"&&z48E"&&z48E ##E E  SSJ?R4SG-4-K-K.* 9CC!=+ /-#!#'!#5 D O$ O+#H-55(&&&H@  !$442==!'!- /-$4!# > N& &HT S !K/*55!-+ /-#5+#!#' 6 N  &Hn m !I-!3!Qw7Q7Q#6&& n &5%8%89M%N"*;;=TTV##;@;K;KO$78##?D?O?OO$;<;;;@;;O$78%_<&'89A +//;; $$56 ->>uEM
*k26;FF%'9#1$3#1'% '")# +!%# G r Q /1&6;0;;!% +%#1$3#1(1##%# '! < L i 1;;!% +%#1$3#1(1##%# '! < h G !I-.99!-+!'# /-##5!$-# : HD _ !N2 0"&&x60!"230 ""340 ",/   
-"&&#''"O$7$7
D$I
- ""45
- "-0
- "(+
- "),  -00 ##)4N $(E))--eX>(,,n00GD '**"&&'  +0(,77!'!- /--$2!#! 8 HB _ !F*!3!Qw7Q7Q)44!#5-+ /-#!#N O+0IT0Q /"(. '	   &Hf e !H,   ,,/0, ,	  -77!'!- /--$,!#! 8 HV q !M1   ,,/0, ,	   #%%#::>>"23# ??	  -77!'!- /--$1!#! 8 HR m
 !H,''38H,77!'!- /--$7!# 8 Hh
 G
 !L0 4--4??4 23	  $$;<J Y##Y34Y DJ<xX	  "4!Qw7Q7Q,77!'!- /--$0!# 8 Hf	 C	 !H,9N9N0N37#3#3H"*$((59F+66!!-+ /-#!#N ~,Y7:9EiP.(0 '	  %HJ I !K/5G<T<T3T4:eOK0  1;;%##1#% + '$3#1#1#!(;%!! < ~ G !M1''38H,77!'!- /--$1!# 8 H@ ] !G+ #$$#!/2# ??	  -77!-!'# /-$7! 4! 8 H& f e !J. #''#!"45# ??	  -77!-!'# /-$7! 7! 8 H& n k !J.%7;R;R2R #''#!"45# ??	   F##F!"56F F	  -77!-!'# /-$7! 7! 8 H& f c !H,""4h4"C{cRi ] " XXJgwy1JKF..33"#)(&0'2!&!'G!4
 jjr2
 4 D !IIKM ,F3A6x@CO8GN""1%--5%(%5N"#(N %Hl g  7#<#<< 37N33
#'::%)*:%;N 4 %,5H 
 0$VJ 66BG " !    .	
 ,   " ( $ !0  . $   $6   "!H$ ~*&.(; '	   )1D ]QNG
r  !!"#&)!f%.$8	 "  \  !!"#&)!f%.$8	 "  L #Oz  !!"#&)!f%.$8	 "  <  !!"#&)!f%.$8	 "  >  !!"#&)!f%.$8	 "  `  !!"#&)!f%.$8	 "  D  !!"#&)!f%.$8	 "  J  !!"#&)!f%.$8	 "  f Kt  
 3 "
 	

sa  (9CX "CX (CQ36CQ3=CX I5CX CQ8M$CX ACX F/CX A+CX .ACX D8CX A0CX 8CX >*CQ= (CX *ACX )CR0 ,*CX @DCX DA3CX FCS#FBCX H9CX H?*CS( I)CX I+CX I1*CT JCX JCX J#*CU KCX KB)CX M91CX N+B.CX QBCX S7E9CX Y1CX ZACV [*CX \A6CX ]>C CX aCX a=C8CX e6D9CX j0CCX m3B<CX p0CX p4E7CX v,BCX x?B.CX {./CX |ACX }9ACX 	CX A<CX A
*CV4 A4*CX B1CX CDCX G1ACX IC>CX MACX N* CX OE;CX UI:CX _CX _DCX c"CX c&B?CX f&CX f*3CX g4CX hECX mACX n+CX o8CX pE-CX u2ACX wCX wACX x/B!CX {ACX |B1CX BCX ACX ACX A7=CW' B4CX B6ACX C;A,CX E(A,CX GB&CX I<ACX K CXKCCX N2CX OBCX Q#CX Q%CX Q=	CR-R"CR(R(CR-R-CX R0	CS R9"CSSCS S CX S(	CTS1"CTTCTTCX T	CUT$"CUUCUUCX U	CU>U"CU9U9CU>U>CX V	CV1V
"CV,V,CV1V1CX V4	CW$V="CWWCW$W$CX W'	CXW0"CXXCXXCX X	CX?X(CX:X:CX?c                     	 ddl }|j                  dd      }d|d<   d|d<   |j                  dd      }|j                  d	t              }|d
k(  r5|j	                  |j                  dd      |j                  |      d      }n"|j	                  |j                  |      d      } ||g| i |S # t        $ r}t        d|       d}~ww xY w)z8
    Executes a litellm.completion() with 3 retries
    r   N?tenacity import failed please run `pip install tenacity`. Errorr      r   retry_strategyconstant_retryoriginal_functionexponential_backoff_retryrY   
   
multipliermaxTr   r)  reraiser)  r>  )tenacityrF  r   r   Retryingwait_exponentialstop_after_attemptrY  r   r@  rV  r   r5  r7  retryers           r   completion_with_retriesrF    s   
 **]A.KF=F=MSZZ*NN 

#6
C44##**aR*@,,[9 $ 
 ##,,[94 $ 
 $6t6v66/  
MaSQ
 	

s   B2 2	C;C		Cc                    K   	 ddl }|j                  dd      }d|d<   d|d<   |j                  dd      }|j                  d	t              }|d
k(  r5|j	                  |j                  dd      |j                  |      d      }n"|j	                  |j                  |      d      } ||g| i | d{   S # t        $ r}t        d|       d}~ww xY w7 #w)z{
    [DEPRECATED]. Use 'acompletion' or router.acompletion instead!
    Executes a litellm.completion() with 3 retries
    r   Nr3  r   r4  r   r5  r6  r7  r8  rY   r9  r:  Tr=  r?  )r@  rF  r   r   AsyncRetryingrB  rC  rD  s           r   acompletion_with_retriesrI    s
    

 **]A.KF=F=ZZ 02BCN

#6
C44((**aR*@,,[9 ) 
 ((,,[94 ) 
 *<T<V<<<)  
MaSQ
 	

( =s4   CB< B/C7C8C<	CCCCc                    K   t        j                         }t        |       dkD  r| d   n|d   }d|d<   |j                  dd      }	 t	        t
        g| i |}t        j                         }t	        |j                  |      }t        |||j                  dd            \  }}}}|j                  d|       d{   }	d}
t        |	t              rt        di |	}
n2t        |	t              r|	}
nt        j                  |	      r
|	 d{   }
|
+t        |
t              rt        |
d	      r||
j                   d<   |
t#        d
      |
S 7 7 B# t$        $ r}|xs d}t'        |||| |      d}~ww xY ww)ay  
    Asynchronously calls the `embedding` function with the given arguments and keyword arguments.

    Parameters:
    - `args` (tuple): Positional arguments to be passed to the `embedding` function.
    - `kwargs` (dict): Keyword arguments to be passed to the `embedding` function.

    Returns:
    - `response` (Any): The response returned by the `embedding` function.
    r   r   T
aembeddingr!  Nr,  r+  r  zCUnable to get Embedding Response. Please pass a valid llm_provider.r6  r7  r   )r<  r=  rB  r   r   	embeddingrH  rI  rJ  rH   rK  r>  rL  r   rM  r  r  r  rF  r   rY  r   r5  r   r!  rR  rS  rT  rQ  rU  r   rV  s               r   rK  rK    s     !!#D4y1}DG&/EF< **%:DA,
y24262 &&(#CGGT2'7 3ZZ
D1(
$1 #2249JKK04mT*(9=9H'89$H  /**H 8%67"23=PH##$9:U  ) L +  
1=X 3 "
 	

sP   AE8A5E <E=AE E?E E8E E 	E5E00E55E8r   
dimensionsencoding_formatr,  r  cachingrK  Tc                     y r   r   r   r  rN  rO  r   r,  r  r   r  rP  r  r!  r  r  rK  r   s                   r   rL  rL  G      , r   )rK  c                     y r   r   rR  s                   r   rL  rL  a  rS  r   c                     |j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  d      }|j                  dd      }|j                  dd      }|j                  d	d      }|j                  d
d      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      }g d}d	d
gt        z   }||z   }|j                         D  !ci c]  \  } }!| |vs| |! }"} }!t	        | |||      \  } }}#}|#|#}t        d| |
|||d|"}$|"| t        j                  | d|  |||di       |&|xs d}t        j                  | d|  |||di       t        di |}%|}&|&j                  | |
|$|%|       |t        | |      S 	 d}'|du s|dk(  r|xs t        j                  xs t        d      }|xs/ t        j                  xs t        d      xs t        j                  }|$j                  dd      xs t        d      }(|xs/ t        j                  xs t        j                   xs t        d      }|t#        d      t$        j'                  | |||||(||&|t)               |$||||xs ||%       }'n| t        j*                  v s|d!k(  s|d"k(  s
|d#k(  s|d$k(  r|xs. t        j                  xs t        d%      xs t        d&      xs d'}t        j,                  xs t        d(      xs dt.        _        |xs/ t        j                  xs t        j0                  xs t        d)      }|||$d
<   d}t2        j'                  | ||||&|t)               |$||||*      }'n|d+k(  r}|xs t        j                  xs t5        d,      }|xs/ t        j                  xs t        j6                  xs t5        d-      }t8        j'                  | ||||&|t)               |$||.
      }'nI|d/k(  s|d0k(  s
|d1k(  s|d2k(  r|xs t        j                  xs t        d3      }|3|xs/ t        j                  xs t        j:                  xs t        d4      }|||$d
<   t<        j'                  | ||||&|t)               |$||.
      }'
n|d5k(  s|d6k(  r|xs< t        j>                  xs* t        d7      xs t        d8      xs t        j                  })|tA        |tB              r|}ni }tD        j'                  | ||||)|&|t)               |$|||%|9      }'
n"|d:k(  ra|xs/ t        jF                  xs t5        d;      xs t        j                  }tH        j'                  | |tJ        |||&t)               |$|||%<      }'	n|d=k(  rKtA        |tL              r|g}*n|}*tN        jQ                  | |*tJ        |&|$t)               |||i |tR        ||>      }'	nl|d?k(  r8|t#        d@      tD        j'                  | |||||&|t)               |$||i A      }'	n/|dBk(  rw|xs tU               xs t        j                  }+|xs t        j                  xs t        dC      }tV        jY                  | |tJ        |&|$t)               ddd|tR        dB|+||D      }'n|dEk(  r|$j                  dFd      xs> |$j                  dGd      xs* t        jZ                  xs t        dH      xs t        dI      },|$j                  dJd      xs> |$j                  dKd      xs* t        j\                  xs t        dL      xs t        dM      }-|$j                  dNd      xs, |$j                  dOd      xs t        dP      xs t        dQ      }.|xs* t        j                  xs t        dR      xs t        dS      }dT|$v sdU|$v s| t^        j`                  v r6t^        jc                  | |tJ        |&|$|%t)               |,|-|.|tR        dE||V      }'nKtd        j'                  | |tJ        |&|$t)               |,|-|.dE||tR        |||W      }'n|dXk(  r+tg        j&                  | |tJ        ||&|$t)               |Y      }'n|dZk(  rt        j                  xs |xs t        d[      xs d\}tA        |tL              r|g}ti        d] |D              st        jj                  d^| | dZ_      |du rtl        jn                  ntl        jp                  }/ |/|| |tJ        |&|$t)               `      }'n9|dak(  r.tr        j'                  | |tJ        |&|$t)               tR        b      }'n|dck(  rJ|xs t        j                  xs t        dd      }t2        j'                  | ||||&|t)               |$||.
      }'n|dek(  rJ|xs t        j                  xs t        df      }t2        j'                  | ||||&|t)               |$||.
      }'nh|dgk(  ro|xs t        j                  xs t        dh      }|xs! t        j                  xs t        di      xs dj}t2        j'                  | ||||&|t)               |$||.
      }'n|dkk(  ro|xs t        j                  xs t        dl      }|xs! t        j                  xs t        dm      xs dn}t2        j'                  | ||||&|t)               |$||.
      }'n|dok(  rq|xs t        j                  xs t        dp      }|xs! t        j                  xs t        dq      xs dr}tD        j'                  | |||||&|t)               |$||i A      }'n
|dsk(  r+tD        j'                  | |||||&|t)               |$||i A      }'n|dtk(  r+tD        j'                  | |||||&|t)               |$||i A      }'n|duk(  rYtu        jv                  |$||v      }0|0dw   }|0dx   }dy|0v r|0dy   |$dy<   tD        j'                  | |||||&|t)               |$i ||z      }'nL|d{k(  rs|xs! t        j                  xs t        d|      xs d}}|xs! t        j                  xs t        d~      xs d}t2        j'                  | ||||&|t)               |$||.
      }'n|dk(  r}|xs t        j                  xs t        d      }|xs/ t        j                  xs t        j0                  xs t        d      }tx        j'                  | ||||&|t)               |$||.
      }'nR|dk(  rAtA        |tL              r|g}*n|}*tD        j'                  | |*||||&|t)               |$i ||z      }'n|dk(  r~|xs* t        j                  xs t        d      xs t        d      }1|1t#        d      |tA        |tB              r|}ni }tD        j'                  | ||||&||$i t)               |1|||      }'n|dk(  rq|xs t        j                  xs t        d      }|xs! t        j                  xs t        d      xs d}tD        j'                  | |||||&|t)               |$||i A      }'n|dk(  r|xs/ t        jz                  xs t        d      xs t        j                  }|xs! t        j                  xs t        d      xs d}tD        j'                  | |||||&|t)               |$||i A      }'n|t        j|                  v rmd}2t        j~                  D ]  }3|3d   |k(  s|3d   }2 |2t        | |      |s|2j&                  n|2j                  }4 |4| ||&||||$t)               tR        |%
      }'nt        | |      |'+t        |'d      rtA        |'t(              r||'j                  d<   |'t        | |      |'S c c}!} w # t        $ r1}5|j                  ||tM        |5             t        | |5||      d}5~5ww xY w)aw  
    Embedding function that calls an API to generate embeddings for the given input.

    Parameters:
    - model: The embedding model to use.
    - input: The input for which embeddings are to be generated.
    - encoding_format: Optional[str] The format to return the embeddings in. Can be either `float` or `base64`
    - dimensions: The number of dimensions the resulting output embeddings should have. Only supported in text-embedding-3 and later models.
    - timeout: The timeout value for the API call, default 10 mins
    - litellm_call_id: The call ID for litellm logging.
    - litellm_logging_obj: The litellm logging object.
    - logger_fn: The logger function.
    - api_base: Optional. The base URL for the API.
    - api_version: Optional. The version of the API.
    - api_key: Optional. The API key to use.
    - api_type: Optional. The type of the API.
    - caching: A boolean indicating whether to enable caching.
    - custom_llm_provider: The custom llm provider.

    Returns:
    - response: The response received from the API call.

    Raises:
    - exception_type: If an exception occurs during the API call.
    rg  Nr   r  r   r"  r.  r  rK  r  r  r  r  r  r  )r  rN  r  r,  r  r   r*  r   r   r   r   r   rO  r  )r   r  rN  rO  r!  r  r  g        r  r  )r   r.  Tr   r  r  r  r  zPNo API Base provided for Azure OpenAI LLM provider. Set 'AZURE_API_BASE' in .env)r   r  r,  r   r  r  r  r  r   r  r  r   rK  r   r  r  r6  r&  r   litellm_proxyr  r  r  r*  r  )r   r  r,  r   r  r   r  r  r   rK  r   r  rN  rO  rP  )
r   r  r,  r   r  r   r  r  r   rK  openai_likehosted_vllm	llamafile	lm_studioOPENAI_LIKE_API_BASEOPENAI_LIKE_API_KEYr@  r?  rA  rB  )r   r  r!  r,  r   r  r   r  r  r   rK  r  r  rH  rJ  )r   r  r  r   r,  r  r  r  r   rK  r  rw  )r   r  r  r  r  r  r   r   rK  r  r,  rX  r  r   r  z7api_base is required for triton. Please pass `api_base`)r   r  r!  r,  r   r  r   r  r  r   rK  r  r`  rk  )r   r  r  r  r  r  ra  rd  rg  rK  rX  r!  r   r,  r   rm  ra  rb  rc  VERTEX_PROJECTrd  re  rf  VERTEX_LOCATIONrg  rh  ri  VERTEX_CREDENTIALSrn  VERTEX_API_BASEimagevideo)r   r  r  r  r  r  r  ra  rd  rg  rK  rX  r!  r   r,  )r   r  r  r  r  r  ra  rd  rg  r!  r   rK  rX  r   r,  r   r   )r   r  r  r,  r  r  r  r   r  r  r  c              3   <   K   | ]  }t        |t                y wr   )r>  r   ).0r0  s     r   	<genexpr>zembedding.<locals>.<genexpr>s  s     ?z$,s   z+Invalid input for ollama embeddings. input=rd  r   r`  )r,  r   promptsr  r  r  r  rv  )r   r  r  r  r  r  rX  r,  r-  r  FIREWORKS_AI_API_KEYr'  NEBIUS_API_KEYNEBIUS_API_BASEzapi.studio.nebius.ai/v1r(  WANDB_API_KEYWANDB_API_BASEz!https://api.inference.wandb.ai/v1r#  SAMBANOVA_API_KEYSAMBANOVA_API_BASEzhttps://api.sambanova.ai/v1voyageinfinityr~  )r  r   r,  r   r,  r  )r   r  r!  r,  r   r  r   r  r  r  r   rK  
xinferenceXINFERENCE_API_KEYzstub-xinference-keyXINFERENCE_API_BASEzhttp://127.0.0.1:9997/v1r  AZURE_AI_API_BASEAZURE_AI_API_KEYjina_air$  ARK_API_KEYVOLCENGINE_API_KEYzuMissing API key for Volcengine. Set ARK_API_KEY or VOLCENGINE_API_KEY environment variable or pass api_key parameter.)r   r  r   r!  r  r,  r  r  r  r   r   rK  r  r  r  r  r  r  r  r  r  r  r  r  )
r   r  r  r,  r   r   r  r  rX  r  r  r!  r  )r   r8  r!  r:  r   )Gr   r   r   r   rH   rK   r   r  r   r  r+   r,  r9   r  r  r   r  r  r  rL  r   open_ai_embedding_modelsr   r6  r  r  rN   r  databricks_embeddingopenai_like_keyopenai_like_embeddingr  r>  rL  r  r  huggingface_embedr  r   bedrock_embedding
embeddingsrX  r   google_batch_embeddingsbatch_embeddingsra  rd  vertex_multimodal_embedding%SUPPORTED_MULTIMODAL_EMBEDDING_MODELSmultimodal_embeddingvertex_embeddingr   allBadRequestErrorr  ollama_aembeddingsollama_embeddingsr  r   get_watsonx_credentialsazure_ai_embeddingr  r  r  r#   rK  r  r  rF  r  r   )6r   r  rN  rO  r   r,  r  r   r  rP  r  r!  r  r  r   rg  r   r  r   r"  r.  r  rK  r  r  r  r  r  r  openai_paramsr  default_paramsr   r   r$  r  r  litellm_params_dictr  r   r  r  transformed_inputrl  rb  re  rg  ollama_embeddings_fncredentialsvolcengine_keyr  r0  r1  rV  s6                                                         r   rL  rL  |  s   Z JJw%EZZ$'FZZ 0$7N**]D1K-3ZZ8M-N+1::ot+LM$jj)BDI!'L$!?JJJ5MjjD)G!::&<dC"JJ'>E"JJ'>E#ZZ(@$GM  	 	N
 #^3N'A1N+B1   =M/	=9E "!4 '/ O ',A,M&'q0,@-B(;3	
 (!7!>3&'q0-B.D(;3	
 -6v6*G(('*/ )   EGGn
  	 D=/7:  W7#3#3W~FV7WH  5&&5!"565 44	  -00 $ 2 01 
  3??3$$3 "/2	   f 
 .77!'-(?#02 /%'0=2! 8 H& W555"h."m3"l2"o5  /##/!"34/ ""34/ /  $$ !"78   4??4%%4 ""23	  (3@0K /88!#02 /%'- 9 H !L0X7#3#3XzBW7XH  4??4))4 23	  ,55!#02 /% 6 H  =0"m3"k1"k1 VG,,V?U0V 
  ==..= &&;<	  (3@0 -66!#02 /% 7 H !H,0C}0T #%%#!"23# ",/# ??  (Zt-L',66$7!"#02 /%2 7 H !M1 #**#34# ??	  )22!!#02 /%2 3 H !I-%%%*G!$)!(33'!# /02%!!++ 4 H  !H, M  -66$7!#02 /%! 7 H !H,$Q(<(>Q'//NX7#3#3X~FW7XH.??!# /02# $#'%+$,&! @ H$ !K/##$4d; 4"&&':DA4))4 ""454 ""23   ##$5t< 5"&&';TB5**5 ""565 ""34   ##$8$? 8"&&'>E8!"898 ""67	   5##5!"565 ""34	  ?*o-.TTU 7KK% '$3#6#4#6#4$6'9)"/(3!% L $ ,55% '$3#4#6#4$6'9(3#)"/#%!! 6 $ !K/ **!!# /02	H !H,   ,,!"34, ,	  %%???--I%Q!)  % ))-- !
 ,!!# /02H !K/$..!# /02+ / H !I-UUNCT4UG.88!#02 /% 9 H !N2T7??Tn=S.T  /88!#02 /% 9 H !H,TTNCS4TG -##-!"34- -	  /88!#02 /% 9 H !G+SSN?4SG 7##7!"237 7	  /88!#02 /% 9 H !K/WWNCV4WG 1##1!"671 1	  -66$7!#02 /%! 7 H !H,,66$7!#02 /%! 7 H !J.,66$7!#02 /%! 7 H !I-)AA /8K "),G":.H+%+6w+?(,66$7!#02 /!% 7 H !L0 )??)!"67) )	   .##.!"78. .	  /88!#02 /% 9 H !J. 7##7!"56   6??6%%6 ""45	  *33!#02 /% 4 H !I-%%%*G!$)!,66'$7!#02 /!% 7 H !L0 8??8!-08 ""67	  %  L  (Zt-L',66$7#! /!02&% 7 H !J.VVNCU4VG F##F!"56F F	  -66$7!#02 /%! 7 H !J. #''#!.1# ??	   1##1!"561 1	  -66$7!#02 /%! 7 H !G$=$==26N33
#'::%)*:%;N 4 %,5H  " ((#..  "#! /02+2H )1D   "238%67=PH##$9:(1D  wx  
%%!!f 	& 	
   3	
 	

s.   #0 u	 )B	 		A@,>>A@c                    K   t        j                         }t        |       dkD  r| d   n|d   }d|d<   d}	 t        t        g| i |}t        j                         }t        |j                  |      }|j                  d|       d{   }t        |t              st        |t              rt        |t              rt        di |}	n%|}	n"t        j                  |      r| d{   }	n|}	|j                  dd      du s t        |	t              st        |	t              r+t        t!        |	|||       |||j                  d	      
      S t        |	t              r|	S t        j                  |	      r
|	 d{   }	t               }
t"        j$                  j&                  j)                  |
|	|      }
|
S 7 .7 7 A# t*        $ r}|xs d}t-        |||| |      d}~ww xY ww)zP
    Implemented to handle async streaming for the text completion endpoint
    r   r   Tr   Nr   F)r   r   r!  rY  r   )r  r   r!  r   )text_completion_responser   r!  r6  r7  r   )r<  r=  rB  r   r  rH  rI  rJ  rK  r>  rL  r   rM  r   r   r=   r[  r   r  LiteLLMResponseObjectHandlerconvert_chat_to_text_completionrF  r   )rY  r   r5  r   r!  rR  rS  rT  rU  r   r  rV  s               r   r  r    s     !!#D4y1}DG&/E F=;
888 &&(#CGGT2"2249JKKmT*j1/
 -.1BMB(  /**H$H JJx'4/($?@($78."2%(;	# $7%zz*:;
 
 ($:;$$X.!)>'='?$'.}}'Q'Q'q'q)A!$7 (r ($
 ,+U L +2 *  
1=X 3 "
 	

sy   4G%AF> 	F7
AF> 'F:(A%F> G%F> G% F> :F<;;F> 6G%7F> :F> <F> >	G"GG""G%r  best_ofechor)  suffixc           
        )*+ dd l }	 dv r*d   }t        |t              r|j                  d       t	               *i )||)d<   ||)d<   ||)d<   ||)d<   ||)d<   ||)d<   ||)d	<   |	|	)d
<   |
|
)d<   ||)d<   ||)d<   ||)d<   ||)d<   ||)d<   ||)d<   ||)d<   ||)d<   ||)d<   ||)d<   t        ||      \  }}}}|dk(  r	|du r	dvrdd<   t        | t              rdd l}t        j                  d      +t        |       dkD  rt        | d   t              r| D cg c]  }d  }})*+fd}|j                  j                         5 } t        |       D !"cg c]  \  }!}"| j                  ||!|"       }#}!}"t        |j                  j                  |#            D ]  \  }!}$|$j!                         ||!<    |*_        d d d        *S g }%t        | t              r?t        |       dkD  r1t        | d   t              r| D ]  }&d|&d}'|%j%                  |'        nt        | t              rd| dg}%nv|dk(  s|dk(  s|d k(  s
|d!k(  s|d"k(  rNt        | t              r>t        |       dkD  r0t        | d   t              rt'        j(                  d#$       d| dg}%nt+        d%|  d&      j                  d'd        |.|dk(  r)|t,        j.                  vrd(|z   )j                  dd        t1        d)      dd*<   t3        |%d+)}(j5                  d,d-      du r|(S |du s$j5                  dd-      du st        |(t6              rt9        |(||.      }(|(S t        |(t8              r|(S t        |(t              r|(S t,        j:                  j<                  j?                  |(*/      **S c c}w c c}"}!w # 1 sw Y   *S xY w)0Nr   enginer  r  r  r  r  r   r   r  r)  r   r   r  r   r   r  r,  r  r   r!  r+  rH  Ttop_n_tokensr4  ztext-davinci-003c                     
j                  |      }i }t        |dd|}|j                  dd       	d<   d	d<   |j                  dd       	d<   |j                  dd       	d<   |d   d	   S )
Nr4  )r   r  r   rD  r  objectr  r   r  r   )decoder  r   )r  individual_promptdecoded_prompt
all_paramsr   rY  r   r   r  r  	tokenizers        r   process_promptz'text_completion.<locals>.process_prompt  s    %.%5%56G%HN!>F!>o!>J7F  $-$%8
 %8H 6>\\$5M,T29J,X6:B,,yRV:W,Y78@Wd8S,W5#I.q11r   )r  r  r6  rg  r	  r1  r0  z\List of lists being passed. If this is for tokens, then it might not work across all models.)msgzVUnmapped prompt format. Your prompt is neither a list of strings nor a string. prompt=z;. File an issue - https://github.com/BerriAI/litellm/issuesr  ztext-completion-openai/z;model is not set. Set either via 'model' or 'engine' param.r  r   r   F)r  r   r   r!  )r   r  ) copyr>  r   r   r   rH   r  concurrent.futurestiktokenencoding_for_modelrB  r   r   	enumeratesubmitas_completedresultr  r  rZ   r  rF  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   r  r,  r  r   r  r!  rY  r   r  _engine_modelr  
concurrentxr  r  executorr  r  completed_futuresfuturer   prd  r   r  r  r  s,    `                    ``                 @@@r   r  r  D  s   j 4 6"=Z5E

857&(O%,	""&$/@+,(2%&.
#(2%} #.>*+"&$*!!,:()$*!)4&#( "&&.
#)4&%,	"&1D-. >N/>:F( m+4<V+)*~& fd#% 334FGI6{Q:fQi#>+126aT6	22 2"  ''::< 5>f4E)4E0A0 !;LM4E & ) &/"**778IJ&	6 (.}}	!& 8A,4 = 0/ H&$CK!O
6!9c8RA%!4GOOG$  
FC	 #78  8+"g-"l2"&AA"&>>vt$K!Ovay$'n	
 $78dekdl  mh  i
 	
 JJxx'???-6E 5t<}VWW $F 
  	
 H zz-'4/$::h&$.h 34.&) 3	
 	H9	: (23 	22RR%= 	S 	
  $#a 3() = 0/s%   ?	O.O=OA	OOO$
adapter_idc                   K   	 d}t         j                  D ]  }|d   | k(  s|d   } |)t        dj                  | t         j                              |j	                  |      }t        di | d{   }d}t        |t              r|j                  |      }t        |t              r|j                  |      }|S 7 L# t        $ r}|d}~ww xY ww)	zD
    Implemented to handle async calls for adapter_completion()
    NrD  adapterHNo matching adapter given. Received 'adapter_id'={}, litellm.adapters={}r  r   r  r   )r   adaptersr  r  !translate_completion_input_paramsr   r>  r   "translate_completion_output_paramsr=   ,translate_completion_output_params_streamingrF  )r  r   translation_objr0  
new_kwargsr   translated_responserV  s           r   aadapter_completionr  R  s     26$$DDzZ'"&y/ % "Zaa 0 0  %FFfFU
DOD]R\D]>]  	 h."1"T"T! #U # h 34LL&. M    #" ?^   sA   CC AC 4C5AC  CC 	CCCCc            	         K   ddl m} t        t        t        t        t
        t        t        t        f   t        t           f   f    |j                  di | ddi      }| d {   S 7 w)Nr   )"GenerateContentToCompletionHandler	_is_asyncTr   )%litellm.google_genai.adapters.handlerr  r   r   r
   r   r   r   r   bytesgenerate_content_handler)r   r  coros      r   aadapter_generate_contentr  {  si      Y#sE$sCx.-2F"FGGHC*CC 	
	
 $	
D ::s   A#A,%A*&A,c                    d }t         j                  D ]  }|d   | k(  s|d   } |)t        dj                  | t         j                              |j	                  |      }t        di |}d }t        |t              r|j                  |      }|S t        |t              st        j                  |      r|j                  |      }|S )NrD  r  r  r  r  r  r   )r   r  r  r  r  r   r>  r   r  r=   inspectisgeneratorr  )r  r   r  r0  r  r   r  s          r   adapter_completionr    s     /3O  :#"9oO ! V]]G,,
 	
 !BB&BQJ:D:Rz:RH  (M*-PP Q 
  
H1	2g6I6I(6SHH"* I  	 r   r  c                     |xs/ t         j                  xs t         j                  xs t        d      }|j	                  dd       }|j	                  dd       }|0|t        j                  ||      }nt        j                  |      }||j                  j                  | |      }n|j                  j                  |       }|j                         }t         j                  j                  j                  |      S )	Nr  r,  r   )r   r   )r   r  r   r  r3  )r   r   r  r9   r   r6  OpenAImoderationsr   
model_dumpr  r  convert_to_moderation_response)r  r   r   r   r,  openai_clientr   response_dicts           r   
moderationr    s    
 	 	,??	,	, *+	  zz*d+HJJx.M"MM'HMM"MM':M ,,33%u3M ,,33%3@"--/M==55TT% U  r   c                   K   ddl m} |xs/ t        j                  xs t        j                  xs t        d      }t        di |}|j                  dd       }d }	 t        j                  |xs d||j                  |j                        \  }}}	}|j                  dd       }
|
t        |
|      s't        j                  d||j                  xs |	      }n|
}|xs$ t        j                  j                  j                   }|(|j#                  ||j                  d
d       i i ||       |&|j$                  j'                  | |       d {   }n$|j$                  j'                  |        d {   }|j)                         }t        j*                  j,                  j/                  |      S # t        j                  $ r Y 7w xY w7 }7 Zw)Nr   )AsyncOpenAIr  r"  r  r  r   T)is_asyncr   r,  r  r  r  r  r  r   )r6  r  r   r   r  r9   r:   r   rH   r,  r  r>  r  _get_openai_clientr   OPENAIr  r  r  r   r  r  r  r  )r  r   r   r!  r   r  r  r"  _dynamic_api_base_dynamic_api_keyr  _openai_clientr   r  s                 r   amoderationr    s     # 	 	,??	,	, *+	  +4V4O7=zzt8  $$+2 3$--#++	
	
 JJx.MJ}k$J '>&P&P$--B1B 'Q '
 ' .R1E1E1L1L1R1R&88FD) !4 	9 	
 '33::e:TT'33:::GG"--/M==55TT% U  E "" < UGsI   AG6F3 B=GG$G4G5>G3G
G	G

GGc                    K   t        j                         }t        |       dkD  r| d   n|d   }d|d<   |j                  dd      }d}	 t	        t
        g| i |}t        j                         }t	        |j                  |      }t        ||j                  dd            \  }	}}	}	|j                  d|       d{   }
t        |
t              rt        di |
}nMt        |
t              r|
}n:t        j                  |
      r|
 d{   }n|j                  d|       d{   }t        |t              st        d	t!        |             |;t        |t"              s+|)t%        |d
d      }|t'        |      }|t)        |d
|       |S 7 7 7 n# t*        $ r}|xs d}t-        |||| |      d}~ww xY ww)a
    Calls openai + azure whisper endpoints.

    Allows router to load balance between them
    r   r   TatranscriptionfileNr,  r   r,  zVInvalid response from transcription provider, expected TranscriptionResponse, but got durationr6  r7  r   )r<  r=  rB  r   r   transcriptionrH  rI  rJ  rH   rK  r>  rL  r   rM  r  typer   rj  r%   r  rF  r   )rY  r   r5  r   r  r!  rR  rS  rT  rQ  rU  r   existing_durationcalculated_durationrV  s                  r   r  r    s     !!#D4y1}DG&/E#F::fd#D2
}6t6v6 &&(#CGGT2'7&**Z">(
$1
 #2249JKKmT*,=}=H'<=$H  /**H "11$8IJJH($9:himnviwhxy   x3  !(*d C (&@&F#&2Hj2EF9 L + K(  
1=X 3 "
 	

sc   AF>	A4F =F>AF FF &F'A)F F>F F F 	F; F66F;;F>r  language)r  r_  srtverbose_jsonvtttimestamp_granularities)wordsegmentr   c                    |j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  d      }|j                  d	d      }|j                  d
g        t        |      }|j                  dd      }|rt        |      |j                  d<   |t
        j                  }t        j                  j                         }t        | ||
|	      \  } }}}
||}	t        d"| ||||||d|}t        d"i |}|j                  | |i ||||di d||       d}t        j                  | t!        |            }|dk(  r|
xs t        j"                  xs t%        d      }
|xs t        j&                  xs t%        d      }|j                  dd      xs t%        d      }|	xs/ t        j(                  xs t        j*                  xs t%        d      }	||d	<   t,        j/                  | ||||||||
|	||||      }n|dk(  s|t        j0                  v r|
xs. t        j"                  xs t3        d      xs t3        d      xs d}
t        j4                  xs t3        d      xs dt
        _        |	xs/ t        j(                  xs t        j6                  xs t3        d      }	t8        j/                  | |||||||||
|	||      }nJ|Ht:        j/                  | ||||||"t=        |t>              st=        |t@              r|nd||||
|	|i |      }|9t=        |tB              s)tE        |d d      }|tG        |      } | tI        |d |        |tK        d!      |S )#r  r  Nr  r  r  r  Fr"  r  tagsr   r  )r   r  r  r  r  r   r!  r  r  r  r  r  stream_responser  r  rg  r   r  r  r  r  )r   
audio_filer  r  r  r   r   r  r,  r   r  r  r   r  r6  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   r   r  r,  r   r!  r  r  r  z8Unmapped provider passed in. Unable to get the response.r   )&r   r   rJ   r   model_call_detailsr6  DEFAULT_MAX_RETRIESr   r  r   rH   rM   r   r  r>   'get_provider_audio_transcription_configr   r,  r9   r  r   r  azure_audio_transcriptionsaudio_transcriptionsr  rN   r   r  openai_audio_transcriptionsr  r>  r4   r3   r   rj  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$  r   r  r  r  r  r   r  r  r  r  s!                                    r   r  r  ]  sL   6 jj!2D9O!::&<dCL$/Jzz*d+HZZ 0%8N-3ZZ8M-NJJ5M
JJvr=fE 	

8T"  ;>v;..x800]]88:N<L/	=9E "!7 	' 7/	 	O -6v644.$8$  $!
 
 0 5 $ 	  ,SS12O
 g%Sw//S>BR3S U7..U.AT2U 	  $4d; 
~@

  //  / o.	 	 ,9(-BB+))+#)#. C 
  
	(wBBB  +++,+ +,+ + 	    /0 	 bW__b0B0BbjQaFb.CC+))+#+. D 
 
	$(==+.)) %v{3!&*:;	  #+ 3+/ > 
6 Jx$C#Hj$?$"<T"B".*.ABSTTOr   c                  X  K   t        j                         }t        |       dkD  r| d   n|d   }d|d<   |j                  dd      }	 t	        t
        g| i |}t        j                         }t	        |j                  |      }t        ||j                  dd            \  }}}}|j                  d|       d{   }	t        j                  |	      r|	 d{   }
|
S |j                  d|       d{   }
|
S 7 A7 $7 
# t        $ r}|xs d	}t        |||| |
      d}~ww xY ww)z%
    Calls openai tts endpoints.
    r   r   Taspeechr!  Nr,  r  r6  r7  )r<  r=  rB  r   r   speechrH  rI  rJ  rH   rK  rM  rF  r   rM  s               r   r  r  2  sB    
 !!#D4y1}DG&/EF9 **%:DA
v/// &&(#CGGT2'7&**Z">(
$1
 #2249JKK}-**H  "11$8IJJH L* K 
1=X 3 "
 	

sm   AD*A4D ;C=<D C?D  D*!D 6D7D <D*=D ?D D 	D'D""D''D*voicer   projectr  speedinstructionsr  r  c                    |j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }t        | ||      \  } }}}|j                  dg        i }|||d<   |||d	<   |||d
<   |
t        j                  }
|"t        j
                  xs t        j                  }t        d;i |}t        j                  | t        j                  |            }||j                  | ||d|      \  }}t        t        |j                  d            }|j                  | ||||||	d i d||       d }|dk(  s|t        j                   v r|t#        |t$              st        j&                  d| |      |xs. t        j(                  xs t+        d      xs t+        d      xs d}|xs/ t        j,                  xs t        j.                  xs t+        d      }|xs! t        j0                  xs t+        d      xs d }|xs! t        j2                  xs t+        d      xs d }|xs t        j4                  }t6        j9                  | |||||||||
||      }n|dk(  r| j;                  d      rUddlm} |t        j&                  d| |      t        ||      } |j@                  d;| ||||||
|tB        |xs d||d |}n|t#        |t$              st        j&                  d!| |      |xs t        j(                  xs t+        d"      }|xs t        jD                  xs t+        d#      }|xs< t        j,                  xs* t        jF                  xs t+        d$      xs t+        d%      }|j                  d&i       j                  d'd       xs t+        d(      } |j                  d)d       }!|r||d<   tH        j9                  | ||||||| |!|||
|||*      }n|d+k(  s|d,k(  r tK        d;i |}"|"j(                  xs d-}|"jL                  xs t        jL                  xs tO        d.      }#|"jP                  xs t        jP                  xs tO        d/      }$|"jR                  xs tO        d0      }%|+t#        |tT              st        j&                  d1| | |      d2| v r#d3d4l+m,}& |&j[                  | |||||xs i ||5      S t\        j9                  ||%|#|$|
|| |||||6      }n|d2k(  r#d3d4l+m,}& |&j[                  | |||||xs i ||5      S |d7k(  rSdd8l/m0}' |t        j&                  d9| |      t        |'|      }( |(j@                  d;| ||||||
|tB        |xs d||d |}|)tc        d:je                  |t        jf                              |S )<Nr  r  r  r  r  r+  r  r  r  r  r  F)r   r  r  r  r   r"  r  r  r6  z;'voice' is required to be passed as a string for OpenAI TTSrf  r  r  r  r  r*  OPENAI_PROJECT)r   r  r  r  r   r,  r   r  r   r   r   r  rg  zspeech/r   )AzureAVATextToSpeechConfigz,Azure Speech Service configuration not found)r   r  r  r  r  r  r   r  r  r  r,  r   z:'voice' is required to be passed as a string for Azure TTSr   r  r  r  r  r  r  r  )r   r  r  r  r   r,  r  r  r  r   r   r   r   r  r  rm  r_  r  rc  rf  ri  zN'voice' is required to be passed as a dict for Vertex AI TTS, passed in voice=r`  rY   )#speech_to_completion_bridge_handler)r   r  r  r  r  r  r  r!  )r  rg  ra  rd  r   r,  r   r  r  r  r   r  runwayml)RunwayMLTextToSpeechConfigz/RunwayML Text-to-Speech configuration not foundz@Unable to map the custom llm provider={} to a known provider={}.r   )4r   rH   r   r   r  r   r6  r  r   r>   "get_provider_text_to_speech_configr   map_openai_paramsr   r   r  r  r>  r   r  r,  rN   r   r  r   r  r  r  audio_speechrp  0litellm.llms.azure.text_to_speech.transformationr	  dispatch_text_to_speechr  r  r  r  r:   ra  r9   rd  rg  rL  4endpoints.speech.speech_to_completion_bridge.handlerr
  r  vertex_text_to_speech3litellm.llms.runwayml.text_to_speech.transformationr  rF  r  provider_list))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  r  text_to_speech_provider_configr  r   r	  azure_configr  r  generic_optional_paramsrb  re  rg  r
  r  runwayml_configs)                                            r   r  r  [  sN   , ::fd#D%+ZZ0A4%HO!::&<dCJJ5ML$/J<L)<x=9E JJvrO"-<)*#( *6'))))GV-G-G,6v6 	@@))*=>	
 # &1!?!Q!Q+ "R "
  4I)JKK,,'.$8$  $!
 
 0 -  6:Hx''"E"EE=E3!7))U0   +++,+ +,+ + 	  ,,!!, *+	 	  ##/0 	 	  *+ 	 	 ,W__*77+%# 8 
 
	'I&
 .5--J!4   *,JL <|;;  /$7'+&;(5! H" }Zs%;--X!4 
  S7#3#3SzBR7SH%_)<)<_
K^@_K  /??/$$/ 45/ o.  -<,?,?b,Q,U,U $- -  
 '-jj1JD&Q#3@0-:: /!'-(?)'2 ; H" 
	+/BFV/V"6"@"@*339r#22 2%%201 	 $33 3&&312 	 $66 645 	
 Zt%<))hinhop0 
 u 7== /22'$7 > 	 	 )551,.+# 6 
 
	(	
 399+.Mr# 3 : 	
 		
 

	*	

 *1))I0  &(F
 ;?:: 
+ 3#'"7$u
 
  NUU#W%:%:
 	

 Or   model_paramsr  )r   r   rL  r  audio_transcriptionimage_generationvideo_generationbatchrerankrealtimer  ocrc                   K   ddl m} t        dg ddt        t	        j
                               t        j                  j                         t        t	        j
                               d      }|| d<   |j                  | 	      } 	 | j                  d
d      }|t        d      |t        j                  v r$|"t        j                  |   j                  d      }t        |      \  }}}}|t        j                  v r$|"t        j                  |   j                  d      }ddi| d<   |xs d}d|v r|j                  ||| |       d{   S |j                  ||| ||      }	||	v r> |	|           d{   }
t!        |
di       j                  di       xs i }t#        |      S t        d| d      7 k7 A# t        $ r~}t%        j&                         }t)        |t              r|dd }|ddt        |       d| icY d}~S t        |      dz   |z   }|j*                  j                  d      }||dcY d}~S d}~ww xY ww) a   
    Support health checks for different providers. Return remaining rate limit, etc.

    Returns:
        {
            "x-ratelimit-remaining-requests": int,
            "x-ratelimit-remaining-tokens": int,
            "x-ms-region": str,
        }
    r   )HealthCheckHelpersr  Fr   T)r   r   r   	call_typer  
start_timefunction_idlog_raw_request_responser"  )r  r   Nzmodel not setr  r  zno-cachecacher   *)r   r!  r  r"  )r   r!  r  r  r  r  r  zMode zI not supported. See modes here: https://docs.litellm.ai/docs/proxy/healthi  errorzerror:zz. Missing `mode`. Set the `mode` for the model - https://docs.litellm.ai/docs/proxy/health#embedding-models  
stacktrace: z
stack trace: raw_request_typed_dict)r*  r+  )/litellm.litellm_core_utils.health_check_helpersr#  r   r   r   uuid4datetimenow;_update_model_params_with_health_check_tracking_informationr   rF  r   
model_costrH   ahealth_check_wildcard_modelsget_mode_handlersrj  r)   	traceback
format_excr>  r  )r  r  r  r  r#  r"  r   r!  rQ  mode_handlersr  _response_headersrV  stack_traceerror_to_returnr+  s                   r   ahealth_checkr:    s    > S "DJJL)$$((*

%!%	 +>L&'VV% 	W 	
 >
+//>=O,,G&&&4<%%e,008D+;%+H("AqG&&&4<%%e,008D !
W ~v%<+II$7)$7	 J    +<< 3% = 
 = 1mD133I 	#3R8<<YKQr  11BCCvfg /  4  
**,k3'%et,K<6#a&  *e  fq  er  s  a&#44{B!4!G!G!K!K$"

 %&<
 	
!
sy   BICF; F7F; I'F; 7F98/F; 'I(F; 9F; ;	I=H=II0H=7I8I=IIc                     	 t        j                  |        t        j                  rt	        |        y y # t
        $ r Y y w xY wr   )rZ   rC  r   set_verboseprintrF  )print_statements    r   rX  rX  "  s=    _-/"  s   04 	A A c                      t         j                  &t        t         j                        }t        di | |S t	        d      )Nz`No config path set, please set a config path using `litellm.config_path = 'path/to/config.json'`r   )r   config_pathrR   r   r  )r   config_argss     r   config_completionrB  +  sA    &&w':':;2F2k22n
 	
r   chunksc           
         | d   d   }| d   d   }| d   d   }| d   d   }| d   j                  dd       }| d   d   d   d	   }| d   d   d   d
   }|||||d d||dgd d d dd}	g }
| D ]R  }|d   }|D ]F  }|t        |d      s|j                  d      %|j                  d      }|
j                  |       H T dj                  |
      }||	d   d   d<   t	        |      dkD  rn	 	 t        ||      |	d   d<   t        ||d      |	d   d<   |	d   d   |	d   d   z   |	d   d<   t        di |	S # t        $ r t        d       d|	d   d<   Y Tw xY w)Nr   rD  r  r  r   system_fingerprintr  finish_reasonr  )r_  r  r  rG  r  )rD  r  r  r   rE  r  r  r_  r  r   r  r  z1token_counter failed, assuming prompt tokens is 0T)r   r_  count_response_tokensr  r  r   )	r   r  r  r  rB  rU   rF  rX  r   )rC  r   rD  r  r  r   rE  rG  r  r   content_listchunkr  choicer  combined_contents                   r   $stream_chunk_builder_text_completionrM  6  s    
4BAYx FQi	"G1IgE';TB2Jy)!,_=Mbz)$Q'
3H 0 $!.	
 "!% 
H( L	"F"FF+JJv&2 **V,##G,   ww|, &6HY6"
q /-:(.
/* .;".HW)* 	/*Xg->?R-SS Wn% "-H-- 	/ 	IJ-./*	/s   ,D5 5EEr  c                 	   	 | t        j                  dddd      | sy t        | |      }|j                  } t	        |       dk(  ry t        | d   d   d   t         j                  j                        rt        | |      S | d   d   }|j                  |       }| D cg c]0  }t	        |d         dkD  rd	|d   d   d
   v r|d   d   d
   d	   |2 }	}t	        |	      dkD  rP|j                  |	      }
t        t        |j                  d         }d |j                  _        |
|j                  _        | D cg c]0  }t	        |d         dkD  rd|d   d   d
   v r|d   d   d
   d   |2 }}t	        |      dkD  rNt        t        |j                  d         }d |j                  _        |j#                  |      |j                  _        | D cg c]0  }t	        |d         dkD  rd|d   d   d
   v r|d   d   d
   d   |2 }}t	        |      dkD  r|j'                  |      |d   d   d   d<   | D cg c]0  }t	        |d         dkD  rd|d   d   d
   v r|d   d   d
   d   |2 }}t	        |      dkD  r|j)                  |      |d   d   d   d<   | D cg c]0  }t	        |d         dkD  rd|d   d   d
   v r|d   d   d
   d   |2 }}t	        |      dkD  r|j+                  |      |d   d   d   d<   | D cg c]0  }t	        |d         dkD  rd|d   d   d
   v r|d   d   d
   d   |2 }}t	        |      dkD  r|d   d   d   d
   d   }||d   d   d   d<   | D cg c]0  }t	        |d         dkD  rd|d   d   d
   v r|d   d   d
   d   |2 }}t	        |      dkD  r=t        t        |j                  d         }|j-                  |      |j                  _        t1        |      }|j3                  |      }|j5                  | ||||      }t7        |d|       t         j8                  r|t7        |d|j;                  |             |S c c}w c c}w c c}w c c}w c c}w c c}w c c}w # t<        $ rK}t?        j@                  djC                  tE        |                   t        j                  dddd      d }~ww xY w)Nr^  z=Error building chunks for logging/streaming usage calculationr  )r]  rd  r`  r   r   r  )rC  r   r   r  deltar   r  rd  thinking_blocksreasoning_contentannotationsr  )rC  r   completion_outputr   reasoning_tokensr  cost)r  zAlitellm.main.py::stream_chunk_builder() - Exception occurred - {})#r   rh  ri   rC  rB  r>  r  r   rM  build_base_responseget_combined_tool_contentr   r   r  rd  r  r  "get_combined_function_call_contentr   get_combined_contentget_combined_thinking_contentget_combined_reasoning_contentget_combined_audio_contentr  r-   count_reasoning_tokenscalculate_usager  include_cost_in_streaming_usage_response_cost_calculatorrF  rZ   	exceptionr  r   )rC  r   r%  end_timer  	processorr   r   rJ  tool_call_chunkstool_calls_listr  function_call_chunkscontent_chunksrP  reasoning_chunksannotation_chunksrR  audio_chunksrS  rT  r  rV  s                          r   stream_chunk_builderrk    s?   Y
>""W	  "684	!! v;!1Ii #W]]%>%>
 8  q	'"008  
5#$q(i 0 3G <<i #G,\:F	  	 
  1$'AABRSO7H$4$4Q$78G&*GOO#)8GOO&   
5#$q(5#3A#6w#??i #G,_=I	  	  
 #$q(7H$4$4Q$78G&*GOO#<<=QR OO)  
5#$q(U9-a099i #G,Y7C	  	 
 ~"..~> Y"9-i8  
5#$q(!U9%5a%8%AAi #G,->?K	  	 
 !#77H Y"9-.?@  
5#$q(#uY'7':7'CCi #G,-@AM	  	 
  1$889IJ Y"9-.AB  
5#$q(y!1!!4W!==i #G,];G	  	 
  !A%+A.y9!<WEmTK?JHY"9-m<  
5#$q(5+A.w77i #G,W5A	  	 
 |q 7H$4$4Q$78G$-$H$H$VGOO!;HE$;;HE))/- * 
 	'5) 22{7Nv{DDHDU a
 





B  
  OVVA	

 S	
 	

s   Q= &Q= 9Q= Q= 5QA$Q= 75Q,A"Q= 5Q$1Q= 45Q))1Q= 5Q.1Q=  5Q353Q= (5Q8B<Q= #Q= =	SASSr   )FNr  NFNNN)NNNNNNNNNNNNNNNNNNNNN)NN)NNN)NNNNNNr   NNNNN)NNNNNNNNNNNNNNNN)r   NN)NNNN(|  r<  rH  r.  r  r  r  randomsysr|  r4  r  r   r  r   r   r   r  r   	functoolsr   typingr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   litellm._uuidr   aiohttpr   dotenvrk  r6  r  pydanticr   typing_extensionsr   r   r   r   r   r   r    litellm.constantsr!   r"   litellm.exceptionsr#   "litellm.integrations.custom_loggerr$   ,litellm.litellm_core_utils.audio_utils.utilsr%   r&   %litellm.litellm_core_utils.dd_tracingr'   8litellm.litellm_core_utils.get_provider_specific_headersr(   -litellm.litellm_core_utils.health_check_utilsr)   r*   *litellm.litellm_core_utils.litellm_loggingr?  )litellm.litellm_core_utils.mock_functionsr+   r,   8litellm.litellm_core_utils.prompt_templates.common_utilsr-   litellm.llms.base_llmr.   r/   )litellm.llms.base_llm.base_model_iteratorr0   !litellm.llms.bedrock.common_utilsr1    litellm.llms.cohere.common_utilsr2   &litellm.llms.custom_httpx.http_handlerr3   r4   #litellm.llms.vertex_ai.common_utilsr5   r6   litellm.realtime_api.mainr7   litellm.secret_managers.mainr8   r9   litellm.types.routerr:   litellm.types.utilsr;   r<   litellm.utilsr=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   _loggingrZ   caching.cachingr[   r\   r]   litellm_core_utils.core_helpersr^   !litellm_core_utils.fallback_utilsr_   r`   0litellm_core_utils.prompt_templates.common_utilsra   rb   +litellm_core_utils.prompt_templates.factoryrc   rd   re   rf   rg   rh   0litellm_core_utils.streaming_chunk_builder_utilsri   llms.anthropic.chatrj   llms.azure.audio_transcriptionsrk   llms.azure.azurerl   rm    llms.azure.chat.o_series_handlerrn   llms.azure.completion.handlerro   llms.azure_ai.embedrp   llms.bedrock.chatrq   rr   llms.bedrock.embed.embeddingrs    llms.bedrock.image.image_handlerrt   llms.bytez.chat.transformationru   !llms.clarifai.chat.transformationrv   !llms.codestral.completion.handlerrw   llms.cohere.embedrx   cohere_embed!llms.custom_httpx.aiohttp_handlerry   "llms.custom_httpx.llm_http_handlerrz   llms.custom_llmr{   r|   llms.databricks.embed.handlerr}   llms.deprecated_providersr~   r   llms.gemini.common_utilsr   llms.groq.chat.handlerr   llms.heroku.chat.transformationr   "llms.huggingface.embedding.handlerr   !llms.lemonade.chat.transformationr   llms.nlp_cloud.chat.handlerr   r  llms.oci.chat.transformationr   llms.ollama.completionr  llms.oobabooga.chatr   llms.openai.completion.handlerr   $llms.openai.image_variations.handlerr   llms.openai.openair   "llms.openai.transcriptions.handlerr   llms.openai_like.chat.handlerr   "llms.openai_like.embedding.handlerr   !llms.ovhcloud.chat.transformationr   llms.petals.completionr  llms.predibase.chat.handlerr   llms.replicate.chat.handlerr  llms.sagemaker.chat.handlerr   !llms.sagemaker.completion.handlerr   llms.vertex_air   8llms.vertex_ai.gemini.vertex_and_google_ai_studio_geminir   <llms.vertex_ai.gemini_embeddings.batch_embed_content_handlerr   8llms.vertex_ai.image_generation.image_generation_handlerr   6llms.vertex_ai.multimodal_embeddings.embedding_handlerr   4llms.vertex_ai.text_to_speech.text_to_speech_handlerr   ,llms.vertex_ai.vertex_ai_partner_models.mainr   2llms.vertex_ai.vertex_embeddings.embedding_handlerr   'llms.vertex_ai.vertex_gemma_models.mainr   'llms.vertex_ai.vertex_model_garden.mainr   llms.vllm.completionr  llms.watsonx.chat.handlerr   llms.watsonx.common_utilsr   types.llms.anthropicr   types.llms.openair   r   r   r   r   r   r   r   types.utilsr   r   r   r   r   r   r   r   r   get_encodingr  r   r   r   r   r   r   r   r   r   r  r  r  openai_image_variationsgroq_chat_completionsr  r  r  r  r  r  r}  r  r  r   r~  bedrock_image_generationr  r  r  vertex_image_generationr  r  r  r  r  r  r  r|  r  rz  r  r  sagemaker_chat_completionr	  heroku_transformationoci_transformationr  r  r   rF  rL  MOCK_RESPONSE_TYPEr   r   r   r   wrapr   r   r  r  r   r[  rr  rv  rx  r;  ru  rz  r  r  rF  rI  rK  rL  r  r  r  r  r  r  r  r  r  r  r  r  r:  rX  rB  rM  rk  r   r   r   <module>r     s        	  
    H H      $ %      &   6 ; 9 T H ? < P = H 5 E       > % F F ;  M 8 D N I > 1 = : D ; = F 6 D B > E 8 : 6 = D A P 7 5 * @ N 4 H @ J A = @ P = ; 0 O X O O H N N 9 9 9 6 6 8 8	 	 	 	 	
 
 
 
 
 
 !8  / 3	 	 	 	 	 /0 .0 68 68 *, %' 46 ,. 79 ,. 46 (* 46 46 #5#7  $& 13 " "$ 79 /1 /1 (=(? %24 &?&A #-/ ,. 24 35 13 *, 02 02 &( (* "_ ,. ,. 3	4@SST 7 7 	O 	O $ $   $#'+/#'!!%)	 $+/9=AE04(,)-!%>B .2*.#"& 	<@'+"&"!%!!%$(15;?04_I
I
 I
 ~	I

 C=I
 eE3J'(I
 %I
 E?I
 }I
 TNI
 TNI
 I
 $C=I
 456I
  =>!I
" ,-#I
$ uo%I
&  'I
( )I
* 3-+I
. eD$y/$9:;/I
0 3-1I
2 D>3I
4 %T	*+5I
6 "$7I
8 tn9I
: 3-;I
> EF?I
D  789EI
F  }GI
H 3-II
L smMI
N #OI
P c]QI
R SI
T D>UI
X -.YI
Z !!78[I
^ _-_I
b =--.cI
  I
X
( *.8
i(8
8
 "#8
v
4.
eE3567
 

4.
eE3567
 
$eS%--&? @ $-E%emm2K,L - #2J&*#(:>_J_J_J TN_J }	_J
 ./_J d^_J 4._J eE3567_JD 498  :>#'!!%)	+/ $9=AE04(,)-!% 	<@>B .2#"&*.;?$('+"& $#'"!%!!%1504aU,
U,
 U,
 eE3567	U,

 %U,
 E?U,
 }U,
 TNU,
 TNU,
 $C=U,
 U,
 456U,
 =>U,
 ,-U,
  uo!U,
"  #U,
$ %U,
& 3-'U,
* EF+U,
0  7891U,
2 eD$y/$9:;3U,
4 3-5U,
6 D>7U,
8 %T	*+9U,
: tn;U,
< 3-=U,
> "$?U,
@ !!78AU,
D D>EU,
F  }GU,
H 3-IU,
L ~MU,
N C=OU,
R smSU,
T #UU,
V c]WU,
X YU,
\ -.]U,
` _-aU,
d =--.eU,
  U,
pX7@=> <
): <
 <
D 
  $%)"!%!"! 	
 c] sm # c] sm  3-$ %( sC**+) 
2 
  $%)"!%!"!$ "'% 	
 c] sm # c] sm  3-$ %( ) 
4   $%)"!%!"!y
 	y

 c]y
 smy
 #y
 c]y
 smy
 y
 3-y
$ iS2C(CDDE%y
 y
z F

!#>>?F
 F
R 
   	 	 	 	 	 	 	 	 	!%) 	#'! 	"!%!!%)-aG$T%T%T#Y"7889::G$ C=	G$
 G$ G$  G$ S#XG$" #G$( )G$. /G$4 5G$: c49n;G$@ TNAG$B TNCG$D EG$J %KG$L E?MG$N OG$V smWG$X #YG$Z c][G$\ ]G$` "#aG$ G$Z&&eI==>?&R
4S>=//0  eI==>? N GK}6>sm@   !)-	EEC=E c]E "#	E E EV >
-B >
 >
B 
 #  	JN!%!"!%!%%QQ
Q sm	Q
 SMQ <=Q &d73D+E&FGQ #Q 3-Q c]Q smQ  #!Q" ##Q(  )C6K,K"LLM)Q Qh %
&@ %
 %
P  )-!"!%"&!!%#59%)"&")-"%GGG E#t)$%G c]	G
 smG #G 3-G c]G #G tnG eE5==012G c]G C=G 3-G  d^!G" "##G$ d^%G(  )G G|
 	  't
t

	
t
$ SM%t
& D>'t
r
 .2G.G.$TNG.G.X  $%)`
`
tn`

 '"`
 eM#99:;`
r   