
    CjD             W       6   % S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
Jr  S SKJrJrJr  S SKJr  S SKJr  S SKJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$  S SK%J&r&  S SK'J(r(  \(       a  S S	K)J*r*  S SK+r+S SK,r,S SK-r-S SK.r.S S
K/J0r0  S SK1J2r2  S SK3r3S SK3J4r4  S SK5J6r6J7r7J8r8J9r9J:r:  \(       a  S SK;J<r<  S SK=J>r>  S SK?J@r@JArA  S SKBJCrC  S SKDJErE  S SKFJGrG  S SKHJIrIJJrJ  S SKKJLrL  S SKMJNrN  S SKOJPrP  S SKQJRrR  S SKSJTrTJUrU  S SK;J<rV  S SKWJXrXJYrY  S SKZJ[r[  S SK\J]r]J^r^  S SK_J`r`  S SKaJbrb  S SKcJdrd  S S KeJfrfJgrg  S S!KhJiri  S S"KjJkrk  S S#KlJmrmJnrn  S S$KoJprp  S S%KqJrrrJsrs  S S&KtJuru  S S'K=JvrvJwrwJxrxJyry  S S(K5JzrzJ{r{J|r|J}r}J~r~JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  S)S*KJr  S)S+KJrJrJr  S)S,KJr  S)S-KJrJr  S)S.KJrJrJr  S)S/KJrJrJrJrJrJr  S)S0KJr  S)S1KJr  S)S2KJr  S)S3KJrJr  S)S4KJr  S)S5KJr  S)S6KJr  S)S7KJr  S)S8KJrJr  S)S9KJr  S)S:KJr  S)S;KJr  S)S<KJr  S)S=KJr  S)S>KJr  S)S?KJr  S)S@KJr  S)SAKJr  S)SBKJrJr  S)SCKJr  S)SDKJrJr  S)SEKJr  S)SFKJr  S)SGKJr  S)SHKJr  S)SIKJr  S)SJKJr  S)SKKJr  S)S?KJr  S)SLKJr  S)SMKJr  S)SNKJr  S)SOKJr  S)SPKGJ Gr   S)SQGKGJGr  S)SRGKGJGr  S)SSGKGJGr  S)STGKGJGr  S)SUGK	GJ
Gr
  S)S?GKJGr  S)SVGKGJGr  S)SJGKJGr  S)SWGKGJGr  S)SXGKGJGr  S)SYGKGJGr  S)SZGKGJGr  S)S[GKGJGr  S)S\GKGJGr  S)S]GKGJGr  S)S^GKGJ Gr   S)S_GK!GJ"Gr"  S)S`GK#GJ$Gr$  S)SaGK%GJ&Gr&  S)SbGK'GJ(Gr(  S)S?GK)JGr*  S)ScGK+GJ,Gr,  S)SdGK-GJ.Gr.  S)SeGK/GJ0Gr0  S)SfGK1GJ2Gr2GJ3Gr3GJ4Gr4GJ5Gr5GJ6Gr6GJ7Gr7GJ8Gr8GJ9Gr9  S)SgGK:GJ;Gr;GJ<Gr<GJ=Gr=GJ>Gr>GJ?Gr?GJ@Gr@GJAGrAGJBGrBGJCGrC  \" 5       GrD\" 5       GrEG\" 5       GrFG\ " 5       GrG\" 5       GrH\" 5       GrIG\" 5       GrJG\" 5       GrK\" 5       GrL\" 5       GrM\" 5       GrN\" 5       GrO\" 5       GrP\" 5       GrQ\" 5       GrR\" 5       GrSG\" 5       GrT\" 5       GrU\" 5       GrV\" 5       GrW\" 5       GrX\" 5       GrYG\" 5       GrZG\$" 5       Gr[G\ " 5       Gr\G\" 5       Gr]G\" 5       Gr^G\"" 5       Gr_G\&" 5       Gr`G\(" 5       GraG\" 5       GrbG\," 5       GrcG\" 5       GrdG\" 5       Gre\" 5       Grf\" 5       Grg\" 5       GrhG\" 5       Gri\" 5       Grj\" 5       Grk\" 5       GrlG\
" 5       Grm\" 5       Grn\"G\oG\pG\q\~\w4   Grr " Sh Si5      Grs " Sj Sk5      Grt " Sl Sm5      Gru " Sn So5      Grv\PGR                  " 5       \4/ SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS4)SpG\oSq\Sr\\   Ss\G\o   St\\"G\xG\y4      Su\G\x   Sv\G\x   Sw\G\y   Sx\G\z   Sy\G\q   Sz\G\y   S{\G\y   S|\\G\4      S}\G\5   S~\G\3   S\G\x   S\G\x   S\G\q   S\G\o   S\\"G\q\!\0   4      S\G\y   S\\   S\\"G\oG\q4      S\G\z   S\G\z   S\G\y   S\\S      S\\S      S\G\o   S\G\o   S\G\o   S\G\o   S\G\o   S\G\{   S\G\q   S\G\0   S\G\9   S\G\z   S\S   S\G\z   S\"\~\{4   4RS jj5       5       Gr|S Gr} SS\"G\oG\p4   SpG\oS\G\o   4S jjGr~S\G\z   St\\"G\xG\o\,GR                  4      SpG\o4S jGrS\G\z   St\\"G\xG\o\,GR                  4      SpG\o4S jGrSt\"G\xG\o\,GR                  4   4S jGrSt\"G\xG\o\,GR                  4   4S jGr        SSpG\oSq\Sx\G\z   Sw\G\y   S\G\r   S\\   S\G\z   St\\"G\xG\o\,GR                  4      4S jjGr    SSpG\oSG\oS\G\9   S\\\      S\\   S\\   S\ G\qG\o4   4S jjGrS\G\o   SpG\oSG\z4S jGrSG\qSG\q4S jGrS\\G\q      S\\G\q      4S jGr SSG\oSG\qS\G\q   SG\q4S jjGr\PGR                  " 5       \4/ SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS4)SpG\oSq\St\\"G\xG\o\,GR                  4      Su\G\x   Sv\G\x   Sw\G\y   Sx\G\z   Sy\G\q   S{\G\y   Sz\G\y   S|\\G\4      S}\G\5   S~\G\3   S\G\x   S\G\x   S\G\q   S\G\o   S\\S      S\\S      S\\"G\q\!\0   4      S\G\y   S\\   S\\"G\oG\q4      S\G\z   S\G\y   S\G\z   S\G\9   S\G\z   S\G\q   S\G\o   S\G\o   Sr\\   Ss\G\o   S\G\o   S\G\o   S\G\o   S\G\{   S\G\0   S\S   S\G\z   S\"\~\{4   4RS jj5       5       rS GrS GrS GrS Gr\4S\|4S j5       Gr\2/ SSSSSSSSSSSS4S\G\y   S\G\o   S\G\o   S\G\o   S\G\o   S\G\o   SG\zS\G\o   S\S   S\\\\|4   4S jj5       Gr\2/ SSSSSSSSSSSS4SS.S\G\y   S\G\o   S\G\o   S\G\o   S\G\o   S\G\o   SG\zS\G\o   S\S   S\|4S jjj5       Gr\4/ SSSSSSSSSSSS4S\G\y   S\G\o   S\G\o   S\G\o   S\G\o   S\G\o   SG\zS\G\o   S\"\|\\\\|4   4   4S jj5       Gr\4S\"\\4   4S j5       Gr\4                     SS\"G\o\\"G\o\\"G\o\G\y   4      4      4   Sp\G\o   S\G\y   S\G\z   S\G\x   S\\G\yG\y4      S\G\y   Sz\G\y   Sw\G\y   S\G\x   S\\"G\o\G\o   4      Sx\G\z   Sy\G\q   S\G\o   Su\G\x   Sv\G\x   S\G\o   S\G\o   S\G\o   S\G\o   S\G\{   S\G\o   4,S jj5       GrSG\oS\\"\0G\;4      4S jGrS\"\G\o\4   \G\   4   4S jGrSG\oS\\"\0G\;4      4S jGr SSG\oSp\G\o   S\G\o   SG\84S jjGr\4   SSG\oSp\G\o   S\G\o   S\G\o   SG\84
S jj5       Gr\4S\4S j5       Gr\4            SSpG\oSG\>S\G\o   S\G\o   S\\S      S\\\S         Su\G\y   S\G\o   S\G\o   S\G\o   S\G\o   S\G\y   S\"\\\\\4   4   4S jj5       Gr\4SG\74S j5       Gr\4                SSpG\oSG\oS\\"G\oG\q4      S\G\o   S\G\o   S\G\o   S\G\o   S\G\o   S\G\y   S\G\q   St\\"G\x\,GR                  4      S\G\o   S\G\y   S\G\o   S\G\q   S\G\o   S\G\z   S\"G\7\\\G\74   4   4$S jj5       Gr   SSG\qSG\oS-  S\G\o   S\\   4S jjGrS GrS Gr SSG\{Sq\\   S\4S jjGr    SSG\{Sq\G\{   S\S   S\\"\~\4      4S jjGr     SSpG\oSq\\\G\o\4         S\\\G\o\4         S\G\o   S\G\o   S\G\o   SS4S jjGrSGq\\   G\S'   S GrSG\oS\4S jGrg)    N)futures)FIRST_COMPLETEDThreadPoolExecutorwait)deepcopy)partial)TYPE_CHECKINGAnyAsyncIteratorCallable	CoroutineDictIterableListLiteralMappingOptionalTupleTypeUnioncastget_args)_redact_string)uuid)ClientSession)	BaseModel)overload)client)exception_typeget_litellm_paramsget_optional_paramspeek_reasoning_summary_aliases4strip_reasoning_summary_aliases_from_optional_params)Logging)TokenCountResponse),DEFAULT_MOCK_RESPONSE_COMPLETION_TOKEN_COUNT(DEFAULT_MOCK_RESPONSE_PROMPT_TOKEN_COUNT)LiteLLMUnknownProvider)CustomLogger)run_async_function)calculate_request_durationget_audio_file_for_health_check)CompletionTimeout)OPTIONAL_KWARGS_KEYS)tracer)ProviderSpecificHeaderUtils)_create_health_check_response_filter_model_params)mock_embeddingmock_image_generation)get_content_from_model_response)
BaseConfigBaseImageGenerationConfig)#convert_model_response_to_streaming)BedrockModelInfo)CohereModelInfo)AsyncHTTPHandlerHTTPHandler)OpenAIGPT5Config)JSONProviderRegistry)VertexAIModelRouteget_vertex_ai_model_route)_realtime_health_check)get_secret_boolget_secret_str)GenericLiteLLMParams)CustomPricingLiteLLMParamsModelResponseStreamRawRequestTypedDictStreamingChoices)'ChoicesCustomStreamWrapperEmbeddingResponseMessageModelResponseProviderConfigManagerTextChoicesTextCompletionResponseTextCompletionStreamWrapperTranscriptionResponseUsage_get_model_info_helper/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_model_info!get_non_default_completion_params$get_non_default_transcription_paramsget_optional_params_embeddingsget_optional_params_image_gen!get_optional_params_transcriptionget_requester_metadata
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_and_fix_thinking_param$validate_chat_completion_tool_choicevalidate_openai_optional_params   )verbose_logger)disable_cacheenable_cacheupdate_cache)safe_deep_copy)async_completion_with_fallbackscompletion_with_fallbacks)add_system_prompt_to_messages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)AzureAnthropicChatCompletion)AzureAIEmbedding)BedrockConverseLLM
BedrockLLM)BedrockEmbedding)BedrockImageEdit)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)NvidiaRivaAudioTranscription)"NvidiaRivaAudioTranscriptionConfig)OpenAIAudioTranscription)OpenAILikeChatHandler)OpenAILikeEmbeddingHandler)OVHCloudChatConfig)PredibaseChatCompletion)SagemakerChatHandler)SagemakerLLM)GenAIHubOrchestration)vertex_ai_non_gemini)	VertexLLM)GoogleBatchEmbeddings)VertexImageGeneration)VertexMultimodalEmbedding)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_paramsc                       \ rS rSrSSSS\R
                  SS.S\\   S\\   S\\   S\\	   S	\\
\\4      4
S
 jjrSrg)LiteLLMiJ  NX  )api_keyorganizationbase_urltimeoutmax_retriesdefault_headersr   r   r   r   r   c                T    [        5       U l        [        U R                  S S9U l        g )N
router_obj)localsparamsChatchat)selfr   r   r   r   r   r   s          ^/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/litellm/main.py__init__LiteLLM.__init__K  s     h6	    )r   r   )__name__
__module____qualname____firstlineno__litellmnum_retriesr   strfloatintr   r   __static_attributes__ r   r   r   r   J  sv     &*"&#&%,%8%87;7 sm	7
 3-7 %7 c]7 "'#s("347 7r   r   c                   (    \ rS rSrS\\   4S jrSrg)r   iY  r   c                     Xl         U R                   R                  SS5      SL a5  U R                   R                  S5        [        U R                   US9U l        g [        U R                   US9U l        g )NacompletionFTr   )r   getpopAsyncCompletionscompletionsCompletionsr   r   r   s      r   r   Chat.__init__Z  sZ    ;;??=%0D8KKOOM*EU
FD  +4;;:NDr   )r   r   N)r   r   r   r   r   r
   r   r   r   r   r   r   r   Y  s    O8C= Or   r   c                   2    \ rS rSrS\\   4S jrSS jrSrg)r   ie  r   c                     Xl         X l        g Nr   r   r   s      r   r   Completions.__init__f      $r   Nc                 8   UR                  5        H  u  pEXPR                  U'   M     U=(       d    U R                  R                  S5      nU R                  b*  U R                  R                  " SX!S.U R                  D6nU$ [	        SX!S.U R                  D6nU$ Nmodelr   messagesr   )itemsr   r   r   r   r   r   r   kwargskvresponses          r   createCompletions.createj  s    LLNDAKKN #11??&11 26++H
  "PPDKKPHr   r   r   	r   r   r   r   r   r
   r   r  r   r   r   r   r   r   e      %8C= %
r   r   c                   2    \ rS rSrS\\   4S jrSS jrSrg)r   iw  r   c                     Xl         X l        g r   r   r   s      r   r   AsyncCompletions.__init__x  r   r   Nc                 h  #    UR                  5        H  u  pEXPR                  U'   M     U=(       d    U R                  R                  S5      nU R                  b2  U R                  R                  " SX!S.U R                  D6I S h  vN nU$ [	        SX!S.U R                  D6I S h  vN nU$  N' N7fr   )r  r   r   r   r   r  s          r   r  AsyncCompletions.create|  s     LLNDAKKN #11??&!__88 26++ H
  )WuW4;;WWH Xs$   BB2B. B2'B0(B20B2r   r   r	  r   r   r   r   r   w  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xhighdefault	verbosity)r*  r+  r,  safety_identifierservice_tierr   api_versionr   
model_listextra_headersthinkingweb_search_options$include_server_side_tool_invocationsshared_sessionr   enable_json_schema_validationreturnc*                   #    U*R                  SS5      n+U*R                  SS5      n,U,SL a  [        U,X@5      I Sh  vN   [        R                  " 5       n-U*R                  SS5      n.U*R                  SS5      n/[	        U/[
        5      (       a  U/R                  U*R                  SS5      U*US9(       av  U/R                  U UU*U*R                  SS5      U*R                  S	S5      UU*R                  S
S5      U*R                  SS5      S9I Sh  vN u  n nn0Ub  [        U5      S:X  a  SnU(b$  [        R                  " S[        U(5       S35        O[        R                  " S5        0 SU _SU_SU_SU_SU_SU_SU_SU_SU_SU	_SU
_SU_SU_SU_SU_S U_S!U_0 S"U_S#U_S$U_S%U_S&U_S'U_S(U_S)U_S*U_S+U_S,U_S-U _S.U!_S/U"_S0U#_S1U_S2U_EUU$SU%U&U'U(U)S3.En1U.c   [        U U.U1R                  S-S5      S49u  n0n.  n0U+=(       d    [        R                  n+U+b+  [        SB0 U1DS5SU+0U*E0D6I Sh  vN n2U2c  [!        S65      eU2$ U*R                  S75      n3U*R                  S85      n4U*R                  S95      n5U*R                  S5      n,U3(       a.  [#        U4U5U,S:9(       a  [        R$                  " U35      I Sh  vN    ['        [(        40 U1DU*D6n6[*        R,                  " 5       n7['        U7R.                  U65      n8U-R1                  SU85      I Sh  vN n9[	        U9[2        5      (       d  [	        U9[4        5      (       a#  [	        U9[2        5      (       a  [5        SB0 U9D6n2U9n2O([        R6                  " U95      (       a  U9I Sh  vN n2OU9n2U.S;:X  d  U.S<:X  d  U.S=:X  aK  [	        U2[8        5      (       a6  [        R:                  " 5       R=                  U2[        R4                  " 5       S>9n2[	        U2[>        5      (       a  U2RA                  U-S?9  U2$  GN GN GN GN^ GN	 N! [          a  n:U.=(       d    S@n.[C        U U.U:U1U*SA9eSn:A:ff = f7f)Ca  
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   rA  r@  rB  r"  rC  rD  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   r2  r   r3  r'  r0  )r1  r4  r   r5  r6  r7  r8  r9  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)rK  rL  r=  text-completion-openaitext-completion-codestraltext-completion-inception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lenrq   debugidr[   r   model_fallbacksrv   	Exceptionrh   sleepr   r   contextvarscopy_contextrunrun_in_executordictrM   iscoroutinerP   OpenAITextCompletionConfig%convert_to_chat_model_response_objectrJ   set_logging_event_loopr   );r   r   r  r  r   r  r  r  r  r  rF  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  rG  r'  r/  r0  r1  r   r2  r   r3  r4  r5  r6  r7  r8  r9  r  r<  r=  rS  r>  r?  _rW  r  rJ  rK  rL  funcctxfunc_with_contextinit_responsees;                                                              r   r   r     s    D 

;-I::nd3Lt(wFFF!!#D **%:DA
 !**%:DA%'89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 %&00T()FU+X "'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"&AA#9::99;aa (&-&;&;&= b H h 344++ ,  E 	G(	
n
( 	( L +$  
1=X 3 /
 	

s   9Q
PCQ
PD#Q
1P2BQ
:P;Q
 AP  PA1P  PB	P  Q
Q
Q
Q
P  P   
Q*QQQ
c                  #     [        SU  35        [        R                  " U 5      (       a
  U I S h  vN n U   S h  vN n[        SU 35        U7v   M   N$ N
 g ! [         a  nU=(       d    Sn[	        UUUS9eS nAff = f7f)Nz'received response in _async_streaming: zline in async streaming: rT  )r   r>  rV  )print_verboserZ  rk  rd  r   )r  r   r>  argslinert  s         r   _async_streamingry    s     
?zJKx((%~H" 	$5dV<=J &	(  
1=X 3 
 	

sS   B.A AA AAAA AA B
B'A==BBrK  r>  c                 x   [        U [        5      (       a  [        U [        R                  5      (       a  U e[        R
                  " [        U SS5      [        U S[        U 5      5      [        U SU=(       d    S5      U[        R                  " SSS9S	9e[        U [        5      (       a0  U S
:X  a*  [        R                  " S[        U SU=(       d    S5      US9e[        U [        5      (       a0  U S:X  a*  [        R                  " S[        U SU=(       d    S5      US9e[        U [        5      (       a0  U S:X  a*  [        R                  " S[        U SU=(       d    S5      US9e[        U [        5      (       aB  U R                  S5      (       a+  [        R
                  " SU SU[        R                  " SSS9S	9eg g )Nstatus_code  textllm_providerrT  POSTzhttps://api.openai.com/v1/)methodurl)r{  messager~  r   requestzlitellm.RateLimitErrorzthis is a mock rate limit errorr  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\  rd  rT  APIErrorr   MockExceptiongetattrr   httpxRequestRateLimitErrorContextWindowExceededErrorInternalServerError
startswithrK  r   r>  s      r   !_handle_mock_potential_exceptionsr    s   
 -++mV__5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    U SL a%  Ub!  [        U5        [        R                  " SSUS9eg g NTzThis is a mock timeout errorrT  r  )_sleep_for_timeoutr   Timeoutr=  r   r   s      r   _handle_mock_timeoutr    s;    
 t 37#oo2!
 	
 !4r   c                 t   #    U SL a-  Ub)  [        U5      I S h  vN   [        R                  " SSUS9eg g  N7fr  )_sleep_for_timeout_asyncr   r  r  s      r   rY  rY    sG     
 t 3&w///oo2!
 	
 !4/s   868c                 b   [        U [        5      (       a  [        R                  " U 5        g [        U [        5      (       a   [        R                  " [        U 5      5        g [        U [
        R                  5      (       a/  U R                  b!  [        R                  " U R                  5        g g g r   )r\  r   timere  r   r  r  connectr   s    r   r  r    sk    '5!!

7	GS	!	!

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

7??# 1L	+r   c                   #    [        U [        5      (       a  [        R                  " U 5      I S h  vN   g [        U [        5      (       a(  [        R                  " [        U 5      5      I S h  vN   g [        U [
        R                  5      (       a7  U R                  b)  [        R                  " U R                  5      I S h  vN   g g g  N N^ N7fr   )r\  r   rZ  re  r   r  r  r  r  s    r   r  r    s     '5!!mmG$$$	GS	!	!mmE'N+++	GU]]	+	+0KmmGOO,,, 1L	+ 	%+,s4   /CC<C.C/ACCCCCFrL  c
           
      <    U
R                  S5      =(       d    SnUc  Sn[        XiU S9  Ub  UR                  USS9  [        U[        5      (       d  [        U[
        5      (       a  [        UU US9  [        [        [        [        [        [        4   U5      n[        U[        5      (       a-  UR                  S	5      (       a  [        R                  " S
SU SS9nU
R                  SS5      nUb  U(       d  [        R                   " U5        [        U[        5      (       a  [        S0 UD6$ [        U[        5      (       a  U(       d  U$ [#        U5      n[        5       nUSL aG  [        5       nU
R                  SS5      SL a  [%        ['        XXS9U SUS9$ [%        [)        XXS9U SUS9$ [        U[        R                  5      (       a  Ue[        [        U5      nUc  XMR*                  S   R,                  l        Oe/ n[1        U5       HN  n[        R2                  R5                  U[        R2                  R7                  USS9S9nUR9                  U5        MP     Xl        [;        [        R                  " 5       5      Ul        Xl        U(       a8  U Vs/ s H  n[A        S0 UD6PM     snUR*                  S   R,                  l!        [E        US[G        [H        [J        [H        [J        -   S95         [        R2                  RM                  U S9u  nn  nXRN                  S'   Ub  URQ                  USSS9  U$ s  snf ! [
         a     N'f = f! [
         a@  n[        U[R        RT                  5      (       a  Ue[        SRW                  U5      5      eSnAff = f) a  
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 requestr  zmock-key)inputr   r  zException: mock_streaming_errorz&This is a mock error raised mid-stream	anthropici  )r  r~  r   r{  rJ  T)rK  r   r  rT  completion_streamr   r>  logging_objr   	assistant)contentrole)indexr  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   r  pre_callr\  r   rd  r  r   r   rj  rM   rF   r  r   r  r  re  r8   rJ   rV   re   choicesr  r  rangeutilsrI   rL   appendr   createdr   r   
tool_callssetattrrS   r'   r&   r[   _hidden_params	post_callrT  r  format)r   r   r  r  rK  rL  r=  loggingr>  r   r  is_acompletion
time_delaymodel_response_all_choicesi_choice	tool_callro  rt  s                       r   mock_completionr    s   H}JM2;e 4M,uU "  
 mS))Zy-Q-Q-+$7 #t],??@-
 mS))m.F.F-/
 /
 $11@(	M ZZd3
!.JJz"mT** 1=11m]33$$?NMDQOT>02Nzz-/47*&I&5'  (0 '  '"?"u# $,#  mW%:%:;;S-098E""1%--5L1X!--//#MM11 -K 2  0  ##G,  &2"!$TYY[!1$ "1<!0I .:	:!0<N""1%--8
 	F"NE>?		
	+2==+I+IPU+I+V(A"AqCV))*?@
 '"8   =<&  		  Ja))G>EEaHIIJsi   D+M .M AM M -C+M L<-AM 60M &M <M 
MM MM 
N;NNreasoning_summaryc                 Z   0 n[         R                  (       a   US:X  a  U R                  SS5      n SUS'   X`4$  [        [        [        XS95      nUR                  S5      c.  U R                  S5      (       a  U R                  SS5      n SnXvS'   Ub  US:X  a  SUS'   U R                  SS5      n US	;   a  UR                  S5      S:w  au  [        R                  " U 5      (       aZ  [        R                  " U 5      (       d?  Ub<  Uc"  [        R                  " U 5      (       a  U(       a  SUS'   U R                  SS5      n X`4$ ! [         a]  n[        R                  " SR                  U5      5        U R                  S5      (       a  U R                  SS5      n SnXvS'    S nANS nAff = f)
NrT  z
responses/ 	responsesmoder   r>  xaizError getting model info: {})rT  r  )r   "route_all_chat_openai_to_responsesreplacer   rj  rT   r   r  rd  rq   ra  r  r=   is_model_gpt_5_modelis_model_gpt_5_search_modelis_model_gpt_5_4_plus_model)	r   r>  r6  r"  r'  r  
model_infor  rt  s	            r   responses_api_bridge_checkr    s    "$J 116IX6UlB/(
6  &"

 >>&!)e.>.>|.L.LMM,3ED!%v).AU.J!,JvMM,3E( 	22NN6"k111%88 <<UCC() <<UCC )
6lB/?  &;BB1EF
 
 MM,3ED!%v&s   A7E 
F*AF%%F*c                 \    U S:X  a  gU S:X  d  U S:X  d  U S:X  a  SUR                  5       ;   $ g)Nr  Tazure_aibedrock	vertex_aiclaudeF)lowerr>  r   s     r   _should_allow_input_examplesr    s;     k)z))++-5;;=((r   toolc                     U R                  5       nUR                  SS 5        UR                  S5      n[        U[        5      (       a&  UR                  5       nUR                  SS 5        X!S'   U$ )Ninput_examplesfunction)copyr   r   r\  rj  )r  	tool_copyr  s      r   _drop_input_examples_from_toolr    s_    		IMM"D)}}Z(H(D!!==?%t, (*r   c                     U c  g / nU  HE  n[        U[        5      (       a  UR                  [        U5      5        M4  UR                  U5        MG     U$ r   )r\  rj  r  r  )r"  cleaned_toolsr  s      r   _drop_input_examples_from_toolsr    sR     } "MdD!!  !?!EF  &	 
 r   r  r  c                     SU 0n[         R                   H  nUR                  U5      nUc  M  XSU'   M     U(       a@  [        U[        5      (       a+  S H%  nXb;   d  M
  X&   c  M  UR                  XbU   5        M'     U$ )a  Build a complete model cost entry from kwargs and model_info.

Collects all CustomPricingLiteLLMParams fields present in kwargs and
merges metadata from model_info (mode, supports_prompt_caching, max_tokens)
so that register_model() receives the full pricing configuration.
litellm_provider)r  supports_prompt_cachingr  )rE   model_fieldsr   r\  rj  
setdefault)r>  r  r  entry
field_namevaluekeys          r   _build_custom_pricing_entryr  %  s}     &':;E0==


:& %* >
 jT22DC Z_%@  o6 E Lr   c*                    U c  [        S5      e[        US9n[        US9n[        US9n[	        US9n[        U'S9n'[        5       n+U*R                  SS	5      n,U,(       d  U(       a  S
SKJ	n-  S
SK
Jn.  S
SKJn/  [        [        [         U/      U5      n0U.R#                  U0S9(       a  U-" GS0 SU _SU_SU!_SU"_SU_SU_SU_SU_SU_SU_SU_SU
_SU	_SU_SU_SU_SU_SU_S U_S!U_S"U_S#U_S$U_S%U_S&U_S'U_S(U_S)U_S*U_S+U_S,U_S-U _S.U#_S/U$_S0U%_S1U&_S2U_S3U'_S4U_S5U(_S6U)_U*D6$ U*R%                  S7S5      n1U*R%                  S8S5      n2U*R%                  S9S5      n3[        [        [&           U*R%                  S:S5      5      n4U*R%                  S;S<5      n5U*R%                  S=S5      n6U*R%                  S>S	5      n7U*R%                  S?S5      n8U*R%                  S@S5      n9U*R%                  SAS5      n:U*R%                  SBS5      n;U*R%                  SCS5      n<U*R%                  SDS5      n=U*R%                  SES5      n>[        [        [(           U*R%                  SFS5      5      n?U*R%                  SGS5      =(       d    Un@U*R%                  SHS5      nAU*R%                  SIS5      nBU*R%                  SJS5      nCU@c  0 n@Ub  W@R+                  U5        [,        R.                  b0   [,        R.                  R1                  5       nDW@R+                  UD5        U*R%                  SLS5      nFU*R%                  SMS5      nGU*R%                  SNS5      nHU*R%                  SOS5      nIU*R%                  SPS5      nJU*R%                  SQS5      nKU*R%                  SRS5      nLU*R%                  SSS5      nMU*R%                  STS5      nNU*R%                  SUS5      nOU*R%                  SVS5      nPU*R%                  SWS5      nQU*R%                  SXS5      nRU*R%                  SYS5      nSU*R%                  SZS5      nTU*R%                  S[S5      nUU*R%                  S\S5      nVU*R%                  S]S5      nWU*R%                  S^S5      =(       d(    [9        U<[:        5      (       a  U<R%                  S^5      OSnXU*R%                  S_S5      nYU*R%                  S`S	5      nZU*R%                  SaS	5      n[U*R%                  SbS	5      n\U*R%                  ScS5      n]U*R%                  SdS	5      n^[        [        [<           U*R%                  SeS5      5      n_[        [        [:           U*R%                  SfS5      5      n`U*R%                  SgS5      na[?        UWA=(       d    S	WBWCSh9n[A        U*Si9nb0 nc[9        U9[B        5      (       aN  U9RE                  W_WbSj9(       a9  U9RG                  U UWbW_W`U*R%                  SkS5      U*R%                  SlS5      Sm9u  n nndWa(       a  [I        UWaSnSo9n U#b  U#n1WFb  WFnG[        [B        U95      neU>=(       d    [,        RJ                  n>U>b  [M        GS0 U+D6$ U&b9  U& Vfs/ s H  nfUfSp   U :X  d  M  WfSq   PM     ngnf[,        RN                  " GSSrUg0U+D6$ [,        RP                  (       a'  U [,        RP                  ;   a  [,        RP                  U    n [S        5       nh[U        UhSs[,        RV                  " 5       5        U*R%                  StS	5      SnL a  Stn8Ub  Un Stn8[X         Vis0 s H  niUiU*;   d  M  WiU*Ui   _M     njni[[        U U8U1U%Uj(       a  []        GS0 WjD6OSSu9u  n n8nkn1[_        U U8USv9u  nln [a        U8U Sw9(       d	  [c        US9nU?b$  W@R+                  [d        Rf                  " U?U8Sx95        Whb?  [i        WhSy5      (       a.  U8WhRj                  S?'   U*R%                  SzS5      UhRj                  S{'   [l        Rn                  " UU*U8[q        [,        S|S5      [r        S}9nWLb  WMc  WNb&  [,        Rt                  " U8 S~U  3[w        U8U*U<S905        0 nmWP(       d  WQ(       d  WR(       d  WS(       d  WT(       aO  U 0 0nmWP(       a  WPWmU    SV'   WQ(       a  WQWmU    SW'   WR(       a  WRWmU    SX'   WS(       a  WSWmU    SY'   WT(       a  WTWmU    SZ'   [y        UU*R%                  SC0 5      R%                  SAS5      [        [z        [<        [z        [<        [<        4   4   U*R%                  S5      =(       d    0 5      S9nSnnU8bD  U8[|         Vos/ s H  noUoR~                  PM     sno;   a  [        R                  " U [}        U85      WXS9nnWnb  WnR                  US9nWWb#  [9        WW[&        5      (       a  WWS	L a	  [        US9nWkb  Wkn%0 SU!_SU"_SU_SU_SU_SU_SU_SU_SU
_SU	_SU_SU_SU_SU_SU_S U_S!U_0 SU _S?U8_S"U_S#U_S$U_S%U_SMWG_S'U_S(U_S/U$_S&U_SU_S*U_S3U'_S4U_SUb  UOU*R%                  S5      _S,U_EU U*R%                  S5      WXS.Enp[        GS0 UpDWbD6nd[        U UpUbU8U*R%                  S5      SnSnWnS9nq[,        R                  (       a2  WdR%                  SS5      (       a  WdR                  S5      nr[        UUrS9n[        GS0 SbW\_S0U%_S;U5_S=U6_S>U7_S?U8_S7U1_SU*R%                  SS5      _S[,        RP                  _SU:_SBU;_SCU<_SDU=_S[WU_SW^_STWN_SRWL_SUWO_SSWM_SNWH_S`U*R%                  S`5      _SU*R%                  S5      _SIU*R%                  SI5      _S^WX_SU*R%                  S5      _SU*R%                  S5      _S\WV_SWm_SU*R%                  S5      _S_WY_SU*R%                  S5      _SeW__SfW`_SQWK_SU*R%                  SS5      _SU*R%                  SS	5      _S/U$_SU*R%                  S5      _SU*R%                  S5      _SU*R%                  S5      _SU*R%                  S5      _SU*R%                  S5      _SU*R%                  S5      _SU*R%                  S5      _SMWG_SU_SU*R%                  SS	5      _SU*R%                  S5      _SU*R%                  S5      _SU*R%                  SS	5      _SU*R%                  S5      _6nc[        [B        We5      R                  U UWqUcU8S9  U2(       d  U3(       d  U4(       a6  U*R                  S:S5        [        U UUUU2U3WeW\U*R%                  SS5      U8U4US9$ [        Wd5      nsWlR%                  S5      S:w  a  [_        U U8UUUWsS9u  nln WX=(       d    U ntWlR%                  S5      S:X  a  S
SKLJMnu  [        Wd5      u  ndnv[9        U[:        5      (       a  SU;   a  UWdS*'   OIWvbF  WdR%                  S*U5      nw[9        Uw[:        5      (       a  0 WwESWv0EWdS*'   OWwb	  WwWvS.WdS*'   OSWv0WdS*'   WuR                  U UW@WhU%U1W\WeWdWcUW]U8[        5       US9$ U8S:X  a  [        R                  " U 5      (       d*  U8St:X  a2  [,        R                  R                  Wt5      (       a  [        Wd5      u  ndnxU8St:X  Ga  S	nyW]bJ  [9        W][        R                  5      (       d  [9        W][        R                  5      (       a  [        S/U$0W]S9ny[        S5      =(       d    StnzU1=(       d"    [,        R                  =(       d    [        S5      n1U$=(       d9    [,        R                  =(       d"    [        S5      =(       d    [,        R                  n$U%=(       dK    [,        R                  =(       d4    [,        R                  =(       d    [        S5      =(       d    [        S5      n%WdR%                  S0 5      R                  SS5      =(       d    [        S5      n{WcR%                  SS5      n|W@=(       d    [,        R                  n@Ub  UWdS2'   WGb  WGWdSM'   [,        R                  " 5       R                  WtS9(       an  [,        R                  R                  5       n}U}R                  5        H  u  nin~UiWd;  d  M  W~WdWi'   M     [        R                  U UW@U%U1U$WyW{Wh[        WdWcU6WeW\UW]U8S9nOn[,        R                  R                  5       n}U}R                  5        H  u  nin~UiWd;  d  M  W~WdWi'   M     [        R                  U UW@U%U1U$WzWyW{W|Wh[        WdWcU6WeW\UW]S9nWdR%                  SS	5      (       a  WeR                  UU%WW@U$U1S.S9  W$ U8S:X  Ga  [        S5      =(       d    StnzU1=(       d"    [,        R                  =(       d    [        S5      n1U1c  [        S5      eU$=(       d"    [,        R                  =(       d    [        S5      n$U%=(       dK    [,        R                  =(       d4    [,        R                  =(       d    [        S5      =(       d    [        S5      n%WdR%                  S0 5      R                  SS5      =(       d    [        S5      n{WcR%                  SS5      n|W@=(       d    [,        R                  n@Ub  UWdS2'   [,        R                  R                  5       n}U}R                  5        H  u  nin~UiWd;  d  M  W~WdWi'   M     [        R                  U UW@U%U1[        [<        U$5      WzW{W|Wh[        WdWcU6WeW\UW]S9nUdR%                  SS	5      (       d  W\SnL a  WeR                  UU%WW@U$U1S.S9  W$ U8S:X  a.   [        R                  U UW@WhU%U1W\WeWdWcU(UW]U8[        5       UWnS9nU$ U8S:X  Ga;  S
SKkJln  UR                  U 5      nUS:X  ai  S
SKnJon  WR                  U15      n1U1c  [        S5      eWR                  U%5      n%WR                  U UU1U%WhWeWdWcUW\UW@=(       d    [,        R                  S9nU$ SU R                  5       ;   a  WR                  U15      n1U1c  [        S5      eWR                  U%5      n%U1(       aR  U1R                  S~5      n1U1R                  S5      (       d+  SU1;   a  U1R                  SS5      nUS
   S-   n1OU1S-   n1U1S-   n1[        R                  U UU1W\[,        R                  Wh[        WdWcU6[        5       U%WeW@UW]U8S9nUdR%                  SS	5      (       d  W\SnL a  WeR                  UU%WS9  WnU$ WR                  U15      n1UR                  U%5      n%W@=(       d    [,        R                  n@Ub  UWdS2'   SU ;   a	  [        US9n [        R                  U UW@WhU%U1W\WeWdWcU(UW]U8[        5       US9nWdR%                  SS	5      (       a  WeR                  UU%WSGW@0S9  W$ U8S:X  d6  SU ;   d0  SU ;   d*  U8[,        R                  ;   Ga>  U*R%                  S`5      SnL Ga)  S[        lz        U1=(       d=    [,        R                  =(       d&    [        S5      =(       d    [        S5      =(       d    Sn1S[        lZ        U%=(       d9    [,        R                  =(       d"    [,        R                  =(       d    [        S5      n%W@=(       d    [,        R                  n@[,        R                  R                  5       n}U}R                  5        H  u  nin~UiWd;  d  M  W~WdWi'   M     [,        R                  (       a  [,        R                  [        l}        [        U5      S
:  a-  SUS
   ;   a$  [9        US
   S   [        5      (       a	  US
   S   nO&SGR                  U Vs/ s H  nUS   PM
     sn5      nG[        R                  U UW@Wh[        U%U8U1W\W]WeWdWcU6US9nUdR%                  SS	5      S	L a.  W\S	L a)  WZS	L a$  [,        R                  " 5       GR                  WWhS9nWdR%                  SS	5      (       d  W\SnL a  WeR                  UU%WSGW@0S9  WnU$ U8S:X  a.   [        R                  U UW@WhU%U1W\WeWdWcU(UW]U8[        5       UWnS9nU$ U8S:X  a.   [        R                  U UW@WhU%U1W\WeWdWcU(UW]U8[        5       UWnS9nU$ U8S:X  a.   [        R                  U UW@WhU%U1W\WeWdWcU(UW]U8[        5       UWnS9nU$ U8S:X  a.   [        R                  U UW@WhU%U1W\WeWdWcU(UW]U8[        5       UWnS9nU$ U8S:X  Ga  U1=(       d+    [,        R                  =(       d    [        S5      =(       d    Sn1U%=(       d:    [,        R                  =(       d#    [,        GR                  =(       d    [        S5      n%W@=(       d    [,        R                  n@[,        GR                  R                  5       n}U}R                  5        H  u  nin~UiWd;  d  M  W~WdWi'   M     [        R                  U UUW\U1WhWdWcU(U8UW@[        5       U%WeW]S9nU$ U8S:X  a  U1=(       d"    [,        R                  =(       d    [        S5      n1U%=(       d"    [,        R                  =(       d    [        S5      n%W@=(       d    [,        R                  n@[,        GR
                  R                  5       n}U}R                  5        H  u  nin~UiWd;  d  M  W~WdWi'   M     [        R                  U UUW\U1WhWdWcU(U8UW@[        5       U%WeW]S9nU$ U8S:X  a  [,        GR                  GR                  U U1U%W@WdS9u  n1n%n@U1=(       d"    [,        R                  =(       d    [        S5      n1U1c  [3        S5      eW@=(       d    [,        R                  n@[        R                  U UUW\U1WhWdWcU(U8UU@[        5       U%WeW]WnS9nU$ U8S:X  a  U%=(       dL    [,        R                  =(       d5    [,        GR                  =(       d    [        S5      =(       d    [        S5      n%W@=(       d    [,        R                  =(       d    0 n@ [        R                  U UU@WhU%U1W\WeWdWcU(UW]U8[        5       UWnS9nU$ U8S:X  a  W@=(       d    [,        R                  n@[,        GR                  R                  5       n}U}R                  5        H  u  nin~UiWd;  d  M  W~WdWi'   M     G[        R                  U UW@WhW\WeWdWcUU(W]U8[        5       U%U1US9nU$ U8S:X  a  U1=(       d=    [,        R                  =(       d&    [        S5      =(       d    [        S5      =(       d    Sn1U%=(       d9    [,        R                  =(       d"    [,        R                  =(       d    [        S5      n%W@=(       d    [,        R                  n@Ub  UWdS2'   G[        R                  U UW@WhU%U1W\WeWdWcUW]U8[        5       US9nU$ U8S:X  a  U%=(       d:    [,        GR                  =(       d"    [        S5      =(       d    [,        R                  n%U1=(       d+    [,        R                  =(       d    [        S5      =(       d    Sn1[        R                  U UW@WhU%U1W\WeWdWcU(UW]U8[        5       UWnS9nUeR                  UU%US9  U$ U8S:X  a  U%=(       d"    [        S5      =(       d    [,        R                  n%U1=(       d+    [,        R                  =(       d    [        S5      =(       d    Sn1[        R                  U UU1U8Wh[        5       WeWdUWcU(W\UU%W@W]WnS9nUeR                  UU%US9  U$ U8S:X  ai  U1=(       d"    [,        R                  =(       d    [        S5      n1[        R                  U UU1U8Wh[        5       WeWdUWcU(W\UU%W@W]WnS9nUeR                  UU%US9  U$ U [,        GR                  ;   d  U8S:X  d  U8S:X  d  U8S:X  d  U8S:X  d~  U8S:X  dx  U8GS :X  dq  U8GS:X  dj  U8GS:X  dc  U8GS:X  d\  U8S:X  dV  U8GS:X  dO  U8GS:X  dH  U8GS:X  dA  U8GS:X  d:  U8[,        GR                  ;   d%  G[        GR                   " U85      (       d  GSU ;   GaC  U1=(       d=    [,        R                  =(       d&    [        S5      =(       d    [        S5      =(       d    Sn1WJ=(       d,    [,        R                  =(       d    [        GS	5      =(       d    SnJUJ[        l}        U%=(       d9    [,        R                  =(       d"    [,        R                  =(       d    [        S5      n%W@=(       d    [,        R                  n@U8GS
:X  aG  S
GSKJn  S
GSKJn  U" 5       nUR                  5       nU" U5      nU(       a  WR+                  U5        WnUb  UWdS2'   [,        GR*                  (       a  U;b  G[-        U;5      nUb  WWdSB'   [,        GR.                  R                  5       n}U}R                  5        H  u  nin~UiWd;  d  M  W~WdWi'   M     G[1        GS5      n U(       a,  [        R                  U UU1U8Wh[        5       WeWdUWcU(W\UU%W@W]WnS9nO+G[2        R                  U UW@Wh[        U%U1W\WeWdWcU6UWmW]WJU8U(GS9n WdR%                  SS	5      (       a  WeR                  UU%WSGW@0S9  W$ U8GS:X  a  U%=(       d#    [,        R                  =(       d    [        GS5      n%U1=(       d-    [,        R                  =(       d    [        GS5      =(       d    GSn1[        R                  U UU1U8Wh[        5       WeWdUWcU(W\UU%W@W]WnS9nU$ GSU ;   d  U8GS:X  d  U [,        GR4                  ;   a  U%=(       dN    [,        GR6                  =(       d6    [,        R                  =(       d    [        GS5      =(       d    [        GS5      nU1=(       d-    [,        R                  =(       d    [        GS5      =(       d    GSn1Wm=(       d    [,        R                  nmG[9        U UU1Wh[        WdWcU6[        5       WWeUmW\W@GS9nhUdR%                  SS	5      SnL a  WeR                  UWWhS9  WhnU$ GSU ;   d  U8GS:X  d  U [,        GR:                  ;   a   W$ U8GS:X  Ga=  U%=(       dQ    [,        GR<                  =(       d9    [,        R                  =(       d"    G[>        GR@                  R%                  GS5      n%Wm=(       d    [,        R                  nmU1=(       d@    [,        R                  =(       d)    [        GS5      =(       d    [        GS5      =(       d    GSn1G[1        GS5      nU1b%  W(       d  U1R                  GS5      (       d  U1GS-  n1OW(       a  [4        GRB                  " GS 5        [        R                  U UUW\U1WhWdWcU(GSUW@[        5       U%WeGS!9nU$ U8GS":X  Ga}  U%=(       dQ    [,        GR<                  =(       d9    [,        R                  =(       d"    G[>        GR@                  R%                  GS5      n%Wm=(       d    [,        R                  nmU1=(       d@    [,        R                  =(       d)    [        GS5      =(       d    [        GS5      =(       d    GS#n1G[1        GS5      nU1b#  W(       d  U1R                  S5      (       d  U1S-  n1OW(       a  [4        GRB                  " GS$5        G[D        R                  U UU1W\[,        R                  Wh[        WdWcU6[        5       U%WeW@UW]U8S9nUdR%                  SS	5      (       d  W\SnL a  WeR                  UU%WS9  WnU$ U8GS%:X  a  U%=(       d;    [,        GRF                  =(       d#    [        GS&5      =(       d    [,        R                  nU1=(       d-    [,        R                  =(       d    [        GS'5      =(       d    GS(n1G[I        U UU1Wh[        WdWcU6[        5       WWeGS)9nSUd;   a  WdS   SnL a  G[K        WU GS%WeGS*9nWdR%                  SS	5      (       d  W\SnL a  WeR                  UU%WS9  WnU$ U8GS+:X  a  U%=(       dN    [,        GRL                  =(       d6    [        GS,5      =(       d#    [        GS-5      =(       d    [,        R                  nU1=(       d-    [,        R                  =(       d    [        GS.5      =(       d    GS/n1G[N        R                  " U UU1Wh[        WdWcU6[        5       [,        GRP                  WWeGS09nhSUd;   a  WdS   SnL a  G[K        WhU GS+WeGS*9nU$ WhnU$ U8GS1:X  d  U8GS2:X  Ga  U%=(       dN    [,        GRR                  =(       d6    [        GS35      =(       d#    [        GS45      =(       d    [,        R                  nG[T        GRV                  " U 5      n[4        GRB                  " GS5U 35        UGS6:X  aS  U1=(       d-    [,        R                  =(       d    [        GS75      =(       d    GS8n1GS9U ;   a  U GRY                  GS9GS:5      n O6U1=(       d-    [,        R                  =(       d    [        GS75      =(       d    GS;n1W@=(       d    [,        R                  =(       d    0 n@U@c  0 n@Ub  W@R+                  U5        [4        GRB                  " GS<U  GS=U1 35        [4        GRB                  " GS>Wn 35        [        R                  U UUW\U1WhWdWcU(GS1UW@[        5       WUnWeGS?9nU$ U8GS@:X  a  U%=(       d;    [,        GRZ                  =(       d#    [        GSA5      =(       d    [,        R                  nU1=(       d-    [,        R                  =(       d    [        GSB5      =(       d    GSCn1G[\        R                  U UU1Wh[        WdWcU6[        5       WWeGS@WmGSD9nhUhnU$ U8GSE:X  a  U%=(       d;    [,        GR^                  =(       d#    [        GSF5      =(       d    [,        R                  n%U1=(       d-    [,        R                  =(       d    [        GSG5      =(       d    GSHn1G[\        R                  U UU1Wh[        WdWcU6[        5       U%WeUU8WmGSI9nU$ U8GSJ:X  a  U%=(       dz    [,        GR`                  =(       db    G[>        GR@                  R%                  GSK5      =(       d9    G[>        GR@                  R%                  GSL5      =(       d    [,        R                  nW@=(       d    [,        R                  n[        R                  U UUWhWU1W\WeWdWcUW]U8[        5       US9nU$ U8GSM:X  a+  [        R                  U UW@WhU%U1W\WeWdWcUW]U8[        5       US9nU$ U8GSN:X  ae  U%=(       d#    [        GSO5      =(       d    [,        R                  n%U1=(       d    GSPn1[        R                  U UW@WhU%U1W\WeWdWcUW]U8[        5       UWnGSQ9nU$ U8GSR:X  aR  GSRn8G[b        R                  " U UWhU1[        WdWcSU6[        5       WeGSS9nhSUd;   a  WdS   SnL a  G[K        WhU GSRWeGS*9nU$ WhnU$ U8GST:X  a  U1=(       d0    [,        R                  =(       d    G[>        GRd                  " GSU5      n1U%=(       d;    [,        R                  =(       d$    [,        GRf                  =(       d    [        GSV5      n%W@=(       d    [,        R                  n@ [        R                  U UUW\U1WhWdWcGSTUU@[        5       U%WeW]GSW9nWdR%                  SS	5      (       a  WeR                  UU%WSGW@0S9  W$ U8GSX:X  a-  [        R                  U UW@WhU%U1W\WeWdWcUW]U8[        5       UWnGSQ9nU$ U8GSY:X  Ga  U1=(       d-    [,        R                  =(       d    [        GSZ5      =(       d    GS[n1U%=(       dN    [,        R                  =(       d7    [,        GRh                  =(       d    [        GS\5      =(       d    [        GS]5      n%[        GS^5      =(       d    GS_n[        GS`5      =(       d    GSanWUGSb.nW@=(       d    [,        R                  nU(       a  WR+                  W5        Wn@[,        GRj                  R                  5       n}U}R                  5        H<  u  nin~UiS:X  a#  SWd;   a  WdWi   R+                  W~5        M(  W~WdWi'   M/  WiWd;  d  M7  W~WdWi'   M>     XGSc.WdEn[        R                  U UUW\U1WhUdWcU(GSYUW@[        5       U%WeW]S9nUeR                  U[        R                  US9  U$ U8GSd:X  Ga  U1=(       d-    [,        R                  =(       d    [        GSe5      =(       d    GSfn1U%=(       d#    [,        R                  =(       d    [        GSg5      n%[        GSh5      =(       d    GS_n[        GSi5      =(       d    GSanWUGSj.nW@=(       d    [,        R                  nU(       a  WR+                  W5        Wn@[,        GRl                  R                  5       n}U}R                  5        H<  u  nin~UiS:X  a#  SWd;   a  WdWi   R+                  W~5        M(  W~WdWi'   M/  WiWd;  d  M7  W~WdWi'   M>     XGSc.WdEn[        R                  U UUW\U1WhUdWcU(GSdUW@[        5       U%WeW]S9nUeR                  U[        R                  US9  U$ U8GS:X  d  GSkU ;   d  U [,        GRn                  ;   a    W$ U8GSl:X  a  [        GSm5      eU8GSn:X  d  U8GSo:X  Ga  WdR                  GSpS5      =(       d>    WdR                  GSqS5      =(       d$    [,        GRp                  =(       d    [        GSr5      nWdR                  GSsS5      =(       d>    WdR                  GStS5      =(       d$    [,        GRr                  =(       d    [        GSu5      nWdR                  GSvS5      =(       d&    WdR                  GSwS5      =(       d    [        GSx5      nU%=(       d5    G[u        5       =(       d#    [        GSy5      =(       d    [,        R                  nU1=(       d#    [,        R                  =(       d    [        GSz5      n1G[w        Wd=(       d    0 5      nG[x        R                  U UWh[        UWcU6[        5       WWWWWeW\UU8W]U1W@GS{9nU$ U8GS|:X  Ga'  WdR                  GSpS5      =(       d>    WdR                  GSqS5      =(       d$    [,        GRp                  =(       d    [        GSr5      nWdR                  GSsS5      =(       d>    WdR                  GStS5      =(       d$    [,        GRr                  =(       d    [        GSu5      nWdR                  GSvS5      =(       d&    WdR                  GSwS5      =(       d    [        GSx5      nU1=(       d#    [,        R                  =(       d    [        GS}5      n1G[w        Wd=(       d    0 5      nG[{        U WcGS~9nUG[|        GR~                  :X  a4  G[        R                  U UWh[        WWcU6[        5       U1WWWWeW\W@WmUW]GS9nhGOWG[|        GR                  :X  a5  G[x        R                  U UWh[        WWcU6[        5       WWWSWeW\UU8W]U1W@GS{9nhGOQWG[|        GR                  :X  a4  G[        R                  U UWh[        WWcU6[        5       U1WWWWeW\W@WmUW]GS9nhGOWG[|        GR                  :X  a3  G[        R                  U UWh[        WWcU6[        5       U1WWWWeW\W@WmUW]GS9nhOWG[|        GR                  :X  aV  S
GSKJn  U" 5       nWWcGSp'   WUcGSs'   WUcGSv'   [        R                  U UUWhWUc[        5       SU1WeW\UW]GS|UW@=(       d    0 GS9nhORG[        R                  " U UWh[        WWcU6[        5       WWWWeW\GS9nhSWd;   a  WdS   SnL a  W\S	L a  G[K        WhU GS|WeGS*9nU$ WhnU$ U8GS:X  GaP  WdR                  SS5      =(       d>    WdR                  GSS5      =(       d$    [,        GR                  =(       d    [        GS5      nUc  [        GS5      eU1=(       dU    WdR                  S7S5      =(       d<    WdR                  S.S5      =(       d#    [,        R                  =(       d    [        GS5      n1U%=(       d;    [,        R                  =(       d$    [,        GR                  =(       d    [        GS5      n%G[        R                  U UWh[        WdWcU6[        5       WeW\U1WmU%WUGS9nSUd;   a  WdS   SnL a  W\S	L a  W$ WnU$ U8GS:X  a  U1=(       dL    WdR                  S7S5      =(       d3    WdR                  S.S5      =(       d    [,        R                  =(       d    GSn1U%=(       d#    [,        R                  =(       d    [        GS5      n%[,        GR                  " UGS9nG[        R                  U UU[        WdWcU6[        5       WeW\U1WmU%UGS9nSUd;   a  WdS   SnL a  W\S	L a  W$ WnU$ U8GS:X  GaV  U1=(       d+    WdR                  S7S5      =(       d    WdR                  S.S5      nU=(       d    [        GS5      =(       d    GSn1U1R                  S~5      n1U1R                  GS5      (       d  U1GS-  n1Wb  U%(       a-  U%=(       d$    [,        GR                  =(       d    [        GS5      n%G[        R                  U UWh[        U%GSU1W\W]WeWdWcU6UGS9nUdR%                  SS	5      S	L a.  W\S	L a)  WZS	L a$  [,        R                  " 5       GR                  WWhS9nWdR%                  SS	5      (       d  W\SnL a  WeR                  UU%WSGW@0S9  WnU$ U8GS;   a.  [        R                  U UUW\U1WhWdWcU8UW@[        5       U%WeW]GSW9nhUhnU$ U8GS:X  a0  G[        R                  U UWh[        WdWcWmWVU6[        5       WeW\GS9nhUhnU$ U8GS:X  GaC  Wm=(       d    [,        R                  nmGSWd;   a  [4        R6                  " GS5        WdR                  GS5      nUGR                  5       GR                  5       nUGR                  (       a  WGR                  WdGS'   WGR                  (       a  WGR                  WdGS'   WGR                  (       a  WGR                  WdGS'   SzWd;  d  WdSz   c  WGR                  GR                  WdSz'   G[        GR                  " U 5      nUGS:X  ak  [        R                  " U [|        GR                  GS9nnG[        GR                  " U 5      n [        R                  U UUW\U1WhWdWcU(GSUW@[        5       U%WeW]UnS9nU$ WGS:X  aB  U GRY                  GSGS:5      n G[        R                  U UWmWhWdWcU6[        5       WeW@UW\W]U1U%GS9nU$ WGS:X  aB  U GRY                  GSGS:5      n [        R                  U UUW\U1WhWdWcGSUW@[        5       U%WeW]GSW9nU$ [        R                  U UUW\U1WhWdWcGSUW@[        5       U%WeW]GSW9n W$ U8GS:X  a4  G[        R                  U UW@Wh[        U%U1W\WeWdWcU6UWmW][        5       GSGS9nU$ U8GS:X  Ga  U%=(       dL    WdR                  GSS5      =(       d2    [        GS5      =(       d    [        GS5      =(       d    [        GS5      n%U1=(       d    WdR                  GSUdR                  S7UdR                  S.S5      5      5      =(       dE    [        GS5      =(       d2    [        GS5      =(       d    [        GS5      =(       d    [        GS5      n1WdR                  GSUdR                  GSS5      5      nSnUbZ  WR%                  GSU15      n1UR%                  GSUR%                  S0U%5      5      n%UR%                  GSUR%                  GSS5      5      nWb  WWdGS'   [        R                  U UUW\U1WhWdWcU(GSUW@[        5       U%WeW]S9nU$ U8GS:X  ag  Wm=(       d    [,        R                  nmG[        R                  " U UUmWh[        WdWcU6[        5       WeGS9
nhSUd;   a  WdS   SnL a  G[K        WhU GSWeGS*9nU$ WhnU$ U8GS:X  aw  [,        R                  =(       d    U1=(       d    [        GS5      =(       d    GSn1U%b  GSW@;  a
  GSU% 3W@GS'   [        R                  U UUW\U1WhWdWcU(GSUW@[        5       U%WeW]S9nU$ U8GS:X  a  [,        R                  =(       d    U1=(       d    [        GS5      =(       d    GSn1U%=(       dQ    [,        GR                  =(       d9    G[>        GR@                  R%                  GS5      =(       d    [,        R                  n%U%b  GSW@;  a
  GSU% 3W@GS'   [        R                  U UUW\U1WhWdWcU(GSUW@[        5       U%WeW]S9nU$ U8GS:X  aE  [,        R                  =(       d    U1n1[        R                  U UUW\U1WhWdWcU(U8UW@[        5       U%WeGS!9nU$ U8GS:X  a  U%=(       d;    [,        GR                  =(       d#    [,        R                  =(       d    [        GS5      n%[        GS5      nU1=(       d2    [,        R                  =(       d    [        GS5      =(       d    GSW GS3n1Wm=(       d    [,        R                  nm[        R                  U UUW\U1WhWdWcU(GSUW@[        5       U%WeGS!9nU$ U8GS:X  d  U [,        GR                  ;   a  U1=(       d    [,        R                  n1GSn8WdR                  SS	5      nG[        R                  " U UU1Wh[        UdWcU6[        5       WeW]GS9nhUSnL a!  WhGS   S
   GS   S   nG[K        UU GSWeGS*9nU$ WhnU$ U8GS:X  d  U [,        GR                  ;   a?   US	L a  G[        UGS9OSn][        R                  U UW@WhU%U1W\WeWdWcU(UU]U8[        5       US9nU$ U8GS:X  aF  [,        R                  =(       d    U1n1[        R                  U UUW\U1WhWdWcU(GSUW@[        5       U%WeGS!9nU$ U8GS:X  aw  U%=(       d;    [,        GR                  =(       d#    [        GS5      =(       d    [,        R                  n%[        R                  U UW@WhU%U1W\WeWdWcUW]U8[        5       UG[        GSQ9n U$ U8GS:X  aw  U%=(       d;    [,        GR                  =(       d#    [        GS5      =(       d    [,        R                  n%[        R                  U UW@WhU%U1W\WeWdWcUW]U8[        5       UG[        GSQ9n U$ U8GS:X  d  U [,        GR                  ;   a  U%=(       d;    [,        GR                  =(       d#    [        GS5      =(       d    [,        R                  n%U1=(       d-    [,        R                  =(       d    [        GS5      =(       d    GSn1[        R                  U UW@WhU%U1W\WeWdWcUW]U8[        5       UG[        GSQ9n U$ U8GS:X  Ga#  [,        R                  =(       d    U1=(       d    GS:nUb  WGS::X  a  [        GS5      e SGR                  U Vs/ s H  nUS   PM
     sn5      n[,        GR                  GR                  WW@U U/U
UUU*R%                  GS5      GS.GS.U*R%                  S0 5      EGS9nUGR                  5       n UGS   S
   GS   S
   nUWhGR                  S
   GR                  l        G[        G[        GR                  " 5       5      Uhl        U Uhl        UhnU$ U8[,        GR                  ;   a  Sn[,        GR                   H  nUGS   U8:X  d  M  WGS   nM     Wc  G[        U U8GS9eG[        W\UWGS9nW@=(       d    [,        R                  =(       d    0 n@W" GS0 SU _SU_SGU@_GSWh_GS[        _S0U%_S7U1_SbW\_GSWe_GSWd_SqWc_S=U6_SU_SWm_ScW]_GS[        5       _6nUSnL a  G[K        WU U8WeGS9$  W$ U8GS:X  a  S
GSKJn  U" 5       GR                  U1=(       d    [,        R                  U%=(       d    [,        R                  GS9u  n1n%W@=(       d    [,        R                  n@[        R                  U UUW\U1WhWdWcU(U8UU@[        5       U%WeW]S9nU$ U8GS:X  a  S
GSKJn  U" 5       GR                  U1=(       d    [,        R                  U%=(       d    [,        R                  GS9u  n1n%W@=(       d    [,        R                  n@[        R                  U UUW\U1WhWdWcU(U8UU@[        5       U%WeW]S9nU$ G[        U U8GS9e! [2         a$  nE[4        R6                  " SKUE 35         SnEAEGENSnEAEff = fs  snff s  snif s  snof ! [2         a$  nEWeR                  UU%[=        UE5      SGW@0S9  UEeSnEAEff = f! [2         a$  nEWeR                  UU%[=        UE5      SGW@0S9  UEeSnEAEff = fs  snf ! [2         a$  nEWeR                  UU%[=        UE5      SGW@0S9  UEeSnEAEff = f! [2         a$  nEWeR                  UU%[=        UE5      SGW@0S9  UEeSnEAEff = f! [2         a$  nEWeR                  UU%[=        UE5      SGW@0S9  UEeSnEAEff = f! [2         a$  nEWeR                  UU%[=        UE5      SGW@0S9  UEeSnEAEff = f! [2         a$  nEWeR                  UU%[=        UE5      SGW@0S9  UEeSnEAEff = f! [2         a$  nEWeR                  UU%[=        UE5      SGW@0S9  UEeSnEAEff = f! [2         a$  nEWeR                  UU%[=        UE5      SGW@0S9  UEeSnEAEff = f! [2         a$  nEWeR                  UU%[=        UE5      SGW@0S9  UEeSnEAEff = fs  snf ! [2         a  nEG[        U U8UEU+U*GS9eSnEAEff = f(  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#  )rF  )r5  _skip_mcp_handlerFr   )acompletion_with_mcp)LiteLLM_Proxy_MCP_Handler)	ToolParamr   r   r  r  r   r  r  r  r  r  rF  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  rG  r'  r/  r0  r1  r   r2  r   r3  r4  r5  r6  r8  r9  rI  rK  rL  r=  force_timeoutr   	logger_fnverboser>  r?  rb  metadatar  proxy_server_requestr<  provider_specific_headerheadersensure_alternating_rolesuser_continue_messageassistant_continue_message"Failed to get proxy auth headers: r   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@  rB  litellm_system_prompt)r   r  r  r  r  )r@  rA  rC  rD  )r   r   rA  r@  rB  rC  rD  T)r   system_promptmerge_with_first_system
model_namelitellm_paramsdeploymentsr  r  )r   r>  rI  r   r  )r   r>  r6  r  )r  r>  r  aws_region_nameregion_namerequest_timeout)global_timeoutri   /r>  r  r  model_file_id_mapping)r   model_idr  )r   providerr  r7  allowed_openai_params)r1  r"  r  additional_drop_params)r   passed_paramsspecial_paramsr>  r#  remove_sensitive_keysadd_provider_specific_paramsprovider_configfunctions_unsupported_model)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_scopelitellm_request_debugtpmrpmuse_xai_oauthaws_bedrock_project_idr   r  optional_paramsr  r>  rJ  )
r  r  rK  rL  r  r   rJ  r>  r=  r   r  r  )r   r>  r6  r"  r'  r  )responses_api_bridgesummary)effortrE  )r   r   r  r  r   rI  r   r  rC  r  r   r   r>  encodingr  rT  )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   rI  r2  dynamic_paramsr6  r  rv  rC  r  r  r  r   r   r   r>  )r   r   r  r   rI  r2  api_typerQ  r6  r.  r  rv  rC  r  r  r  r   r   r   )r  r2  rI  )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   rI  r2  rR  r6  r.  r  rv  rC  r  r  r  r   r   r   deepseek)r   r   r  r  r   rI  r   r  rC  r  r8  r   r   r>  rG  r  r(  r  )AzureFoundryModelInfoagents)AzureAIAgentsConfigz^Azure AI Agents requests require an api_base. Set `api_base` or the AZURE_AI_API_BASE env var.)r   r   rI  r   r  r  rC  r  r   r   r  r  r  z^Azure Anthropic requests require an api_base. Set `api_base` or the AZURE_AI_API_BASE env var.z/v1/messagesz
/anthropicrp   )r   r   rI  r   r1  r  rv  rC  r  r  rG  r   r  r  r   r   r>  r  z	command-r)r   r   r  r  r   rI  r   r  rC  r  r8  r   r   r>  rG  r  rM  zft:babbage-002zft:davinci-002OPENAI_BASE_URLOPENAI_API_BASEhttps://api.openai.com/v1OPENAI_API_KEYr   )r   r   r  r  rv  r   r>  rI  r   r   r  rC  r  r  r   rP  fireworks_aiherokuragflowr  groqGROQ_API_BASEzhttps://api.groq.com/openai/v1GROQ_API_KEY)r   r  r   r   rI  r  rC  r  r8  r>  r   r  rG  r   r  r   bedrock_mantleBEDROCK_MANTLE_API_BASEBEDROCK_MANTLE_API_KEYa2a)r   rI  r   r  rC  A2A_API_BASEzapi_base is required for A2A provider. Either provide api_base parameter, set A2A_API_BASE environment variable, or register the agent in the proxy with model='a2a/<agent-name>'.)r   r  r   r   rI  r  rC  r  r8  r>  r   r  rG  r   r  r   r(  gigachatGIGACHAT_API_KEYGIGACHAT_CREDENTIALSsap)r   r   r  r  r   r  rC  r  r   r8  r   r>  rG  r   rI  r  aiohttp_openaicometapiCOMETAPI_KEYCOMETAPI_API_BASEhttps://api.cometapi.com/v1minimaxMINIMAX_API_KEYMINIMAX_API_BASEzhttps://api.minimax.io/v1)r   r   rI  r>  r  rG  r  rC  r   r  r8  r   r  r   r  r   r(  hosted_vllmHOSTED_VLLM_API_BASEcustom_openai	deepinfra
perplexity
nvidia_nimcerebrasbaseten	sambanova
volcengineanyscaletogether_ainebiuswandbclarifaizft:gpt-3.5-turboOPENAI_ORGANIZATIONgithub_copilot)Authenticator)get_copilot_default_headers)EXPERIMENTAL_OPENAI_BASE_LLM_HTTP_HANDLER)r   r   r  r  rv  r   rI  r   r  rC  r  r  r   r1  r   r   r>  r8  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   rI  r  rv  rC  r  r  rG  r   r  r1  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   rI  r  rC  r  r8  r>  r   r  rG  r   r  r  z%https://api.anthropic.com/v1/messageszILITELLM_ANTHROPIC_DISABLE_URL_SUFFIX is set, skipping /v1/messages suffix	nlp_cloudNLP_CLOUD_API_KEYNLP_CLOUD_API_BASEzhttps://api.nlpcloud.io/v1/gpu/)r   r   rI  r  rv  rC  r  r  rG  r   r  )r>  r  r   ALEPH_ALPHA_API_KEYALEPHALPHA_API_KEYALEPH_ALPHA_API_BASEz$https://api.aleph-alpha.com/complete)r   r   rI  r  rv  rC  r  r  rG  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   rI  r  rC  r  r8  r>  r   r  rG  r   r(  r  maritalkMARITALK_API_KEYMARITALK_API_BASEzhttps://chat.maritaca.ai/api)r   r   rI  r  rv  rC  r  r  rG  r   r  r>  r1  amazon_novaAMAZON_NOVA_API_KEYAMAZON_NOVA_API_BASEzhttps://api.nova.amazon.com/v1)r   r   rI  r  rv  rC  r  r  rG  r   r  r   r>  r1  huggingfaceHF_TOKENHUGGINGFACE_API_KEYocicompactifaiCOMPACTIFAI_API_KEYzhttps://api.compactif.ai/v1)r   r   r  r  r   rI  r   r  rC  r  r   r   r>  rG  r  r(  r   )r   r   r  rI  rv  rC  r  r   r  rG  r  
databricksDATABRICKS_API_BASEDATABRICKS_API_KEY)r   r  r   r   rI  r  rC  r  r>  r   r  rG  r   r  r   	datarobot
openrouterOPENROUTER_API_BASEhttps://openrouter.ai/api/v1OPENROUTER_API_KEY
OR_API_KEYOR_SITE_URLhttps://litellm.aiOR_APP_NAMEliteLLMzHTTP-RefererzX-Titler   vercel_ai_gatewayVERCEL_AI_GATEWAY_API_BASE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  rv  rC  r  r  rG  r  r  r  gemini_api_keyr  r   r   r>  r   rI  r4  r  VERTEXAI_API_BASE)r   r  )r   r   r  rv  rC  r  r  rG  rI  r  r  r  r  r   r  r1  r   r   )VertexAgentEngineConfig)r   r  r   r  rC  r  rG  r   rI  r  r   r   r   r>  r(  r  )r   r   r  rv  rC  r  r  rG  r  r  r  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`.PREDIBASE_API_BASEPREDIBASE_API_KEY)r   r   r  rv  rC  r  r  rG  r  r   rI  r1  r   r7  r   rN  z/https://codestral.mistral.ai/v1/fim/completionsCODESTRAL_API_KEY)r  )r   r   r  rv  rC  r  r  rG  r  r   rI  r1  r   r   rO  INCEPTION_API_BASEzhttps://api.inceptionlabs.ai/v1z/fimINCEPTION_API_KEY)r   r   r  rv  r   r>  rI  r   r   r  rC  r  r  r   )sagemaker_chatsagemaker_nova	sagemaker)r   r   r  rv  rC  r  r1  r  r  rG  r  r   r  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claude_platformr   r!  conversez	converse/)r   r   r1  r  rC  r  r  rG  r  r4  r   r   r   rI  r   converse_likezconverse_like/watsonx)r   r   r  r  rv  r   rI  r   r  rC  r  r  r   r1  r   rG  r>  watsonx_textapikeyWATSONX_APIKEYWATSONX_API_KEY
WX_API_KEYr  WATSONX_API_BASEWATSONX_URLWX_URLWML_URLwx_credentialswatsonx_credentialstokenwatsonx_tokenvllm)
r   r   r1  r  rv  rC  r  r  rG  r  ollamaOLLAMA_API_BASEhttp://localhost:11434AuthorizationzBearer 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   rI  r  rv  rC  r  r  rG  r  r   r  r  	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_handlerr  )async_fnr  
custom_llmr  rv  r  rC  rG  r  	langgraph)LangGraphConfig)rI  r   langflow)LangFlowConfigrU  r   (   
ValueErrorrk   rl   rn   ro   rm   r   r   .litellm.responses.mcp.chat_completions_handlerr  /litellm.responses.mcp.litellm_proxy_mcp_handlerr  litellm.types.llms.openair  r   r   r   _should_use_litellm_mcp_gatewayr   boolr   updater   
proxy_authget_auth_headersrd  rq   warningr\  rj  r   ry   r]   r]  r^  get_chat_completion_promptrx   rc  rw   batch_completion_modelsr+  rM   r  rS   r.   r[   rD   r  r  r  r0   get_provider_specific_headershasattrr  r-   resolver  ri   register_modelr  rz   r   r   r  rN   get_provider_chat_config'translate_developer_role_to_system_roler}   r!   rf   add_function_to_promptr|   r    update_environment_variablesr  r"   litellm.completion_extrasrD  r#   r   _get_encodingr=   r  AzureOpenAIGPT5ConfigrT  AzureOpenAIAsyncAzureOpenAIr   rc   rI  r2  rC   AZURE_DEFAULT_API_VERSIONr   	azure_keyr  AzureOpenAIO1Configis_o_series_model
get_configr  azure_o1_chat_completionsrv  AzureOpenAIConfigazure_chat_completionsr  azure_text_completionsbase_llm_http_handler"litellm.llms.azure_ai.common_utilsrV  get_azure_ai_routelitellm.llms.azure_ai.agentsrX  get_api_baserZ   r  rstripendswithsplit azure_anthropic_chat_completionsr1  r   +openai_text_completion_compatible_providersrR  
openai_keyrl  r   r`  listjoinopenai_text_completionsrm  groq_keyGroqChatConfigBedrockMantleChatConfig	A2AConfig"resolve_agent_config_from_registrygigachat_keyGenAIHubOrchestrationConfigsap_gen_ai_hub_chat_completionsbase_llm_aiohttp_handlercometapi_keyopen_ai_chat_completion_modelsopenai_compatible_providersr>   exists)litellm.llms.github_copilot.authenticatorr  (litellm.llms.github_copilot.common_utilsr  enable_preview_featuresrb   OpenAIConfigrB   openai_chat_completionsreplicate_modelsreplicate_keyreplicate_chat_completionclarifai_modelsanthropic_keyosenvironra  anthropic_chat_completionsnlp_cloud_keynlp_cloud_chat_completionrJ   aleph_alpha_keyr   r  
cohere_keyr:   get_cohere_router  maritalk_keyopenai_like_chat_completionamazon_nova_api_keyhuggingface_keyr   getenvdatabricks_keyopenrouter_keyOpenrouterConfigVercelAIGatewayConfigtogether_ai_modelsr  r  r   ru   vertex_chat_completionr@   r?   PARTNER_MODELS%vertex_partner_models_chat_completionGEMINIGEMMAvertex_gemma_chat_completionMODEL_GARDEN#vertex_model_garden_chat_completionAGENT_ENGINE2litellm.llms.vertex_ai.agent_engine.transformationr  r   r  predibase_keypredibase_chat_completionsrP   codestral_text_completionsinception_keysagemaker_llm_get_credentialsget_frozen_credentials
access_key
secret_keyr  metar  r9   get_bedrock_routeBEDROCKget_claude_platform_model bedrock_converse_chat_completionwatsonx_chat_completionvllm_handler
ollama_keycloudflare_api_keypetals_modelspetals_handlersnowflake_modelsr<   	bytez_keybytez_transformationlemonade_keylemonade_transformationovhcloud_modelsovhcloud_keyovhcloud_transformationmodule_level_clientpostr  r  r  r  r   r  r  r   _custom_providerscustom_provider_mapr(   r   *litellm.llms.langgraph.chat.transformationr  $_get_openai_compatible_provider_info)litellm.llms.langflow.chat.transformationr  r   )r   r   r   r  r  r  r  r  rF  r  r  r  r  r  r  r  r  r  r'  r/  r   r!  r"  r#  r%  r&  r$  r6  r7  rG  r4  r0  r1  r  r  r   r2  r   r3  r5  r8  r9  r  rw  skip_mcp_handlerr  r  r  tools_for_mcprI  rK  rL  r=  r  r  r  r>  r?  rb  r  r  r  r<  r  r  r  r  r  proxy_headersrt  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@  rB  r  rA  r  rC  r  mr  r  r  _supplemental_provider_paramsdynamic_api_keyresponses_api_model_infor1  r(  r!  optional_param_argsprocessed_non_default_paramsr)  _reasoning_summary_for_bridge_azure_detection_modelrD  rs_valeffro  rQ  rR  r6  r.  configr  r  rV  azure_ai_routerX  partsr  r  	_responser  r  copilot_authcopilot_api_keycopilot_headersopenai_metadatause_base_llm_http_handlerr[  disable_url_suffixrb  rd  re  cohere_routerg  rj  
hf_headersopenrouter_site_urlopenrouter_app_nameopenrouter_headers_headersr  vercel_site_urlvercel_app_namevercel_headersr  r  r  r  
new_paramsmodel_router  vertex_agent_engine_configr7  _model_responsetext_completion_model_responsepassed_api_baser  credsbedrock_router  r  
account_idresp_stringr  respresponse_jsonstring_responser  item
handler_fnr  r  s                                                                                                                                                                                              r   r   r   ?  sV   L }566/BH)6E6;OK*5D.AH 8Dzz"5u=W	
 	8 Xhy&9:EB$DD E 

 ( ++!+ $+ ,	+
  + (+ + + +  .+ + &+ '<+ &+ &+  !+" "2#+$ #4%+& &'+( )+* !0++, -+. /+0 (1+2 %83+4 "5+6 *7+8 ,9+: "2;+< $=+> #4?+@ *A+B "C+D (E+F  G+H &I+J ,K+L "M+N $6O+P  .Q+R /LU+ +X 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  }%%	M#..??AMNN=) **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$/ (2:t(D(D
|$$  06zz2D0, jj!2E:Ozz"4e<**]E2KZZ$'FZZ%(FXc]FJJ{D$ABIHTNFJJ7I4,PQ"JJ'>E&!9!BU3#=	H ;&IN %'899>>4F 	? 	
  ::1-ND9!::&6= ; 
		
 0/$(
m2
H"%K%)*;=P%Q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")"6)
"6Q!v+LAvayL"6 	& )
 AQ 3 1 %E'DE
A
="OX +E 31+
' % , 35
 4%@E#/NN+II-E(; %'.BR*S*SCVN))*?@;A::!4<N))-8
 $++"7,=tD#9
 !,1F1R".""*+1UG46Q,?%#-7   !"'#DX"5)*@A5:"5)'2!BT"5)*>?9B"5)+69B"5)+66ZZb155dDA"&S$sCx.()

239r#
 15*/B+7G
+7xHNN<G
 0
 4LL%&9:%O &&NN! O H
 $/2D9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 37C 5ZZ FGK+
N  !2O+
P )%+ZZ0G%H$U+
X . 
!
%7
 (F-- 3#)::.F#G"&)-+	(
$ ))o.A.A)4/
 /
 +:*=*=-+' ,!-HH
 , 6
#6
6
 (6
  	6

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

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

=1]6
^ $_6
` a6
b #)**-De"Lc6
d 

5!e6
f 

5!g6
h !**_e<i6
j $*::.F#Gk6
n 	(EE8) 3 	F 	
 O|JJ~t,"+ /'!::lD9$7) * )G(W%#''/;>.H$7#5!1"?/+$e ",!4u#''/;>F E_U $OV *D11iCS6S6F 23#%))*<>NOc4((:TS:T)V:TO$67_"%#);O$67
 <Ef:MO$67'22!-!'# /-$7& 3  $  8+ 55e<<7*--BB&  "V"OQ ') #N!66#5#56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<.**,>>, ?  !44??A"LLNDAq0-.*	 + 5??%##% +#1#1#1"/$3#1' ' +#!(;% @ , !22==?"LLNDAq0-.*	 + 2<<%##% +%#1#1,C#1"/$3#1' ' +#!' = , ""8U33!!"#&.#*'2$,%	 " 	NV {U !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3{d7J!!"#&.#*'2$,%	 " 	nS [S !J.0;;%##1#% + '$3#1#1#!(;*_!$3# < RS YR !J.P2EEeLN )L0==hG#$K  0;;GD.99%%##1 '$3#1# +!#6w : vQ WQ U[[]*0==hG#$K  0;;GD 's3H#,,^<<'83$,NN<$CE',Qx,'>H'/,'>H#+n#<;FF%% +'.'A'A#1"/$3#1'*_# '##!(;# G & #&&x77;$;N%%& '*2 & 
 $xO sO 1==hG/;;GD!4W__ ,7DOO4 %'?RH4??#!) ''5 '!)$/$+(7'5'5 '%,?!.%!  @  H8 #&&x77%%& '*2)2G(<	 & XN KN  #;;5(5("BBC

,-5&FO  /##//0/ /0/ /  "&F  0??0%%0 ./	  0G 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3{d7J!!"#&/%.$8	 "  !H\K [K !N20;;%##1#% + '$3#1#1#!(;*_!$3# < TK ]J !H,0;;%##1#% + '$3#1#1#!(;*_!$3# < XJ aI !I-0;;%##1#% + '$3#1#1#!(;*_!$3# < ZI eH !E)0;;%##1#% + '$3#1#1#!(;*_!$3# < ^H gG !F* 4##4o.4 4	   .??.##. n-	  0G ++668F1_,)*OA&	 ' -77!'!- /--$7&#! 8 HrF OF !$44UG,,U
;T0U  XXJ?W4XG0G44??AF1O+)*OA& ' -77!'!- /--$7&#! 8 HzE WE !E) !!DD! / E 	  U7#3#3U~n7UHX  0G,77!'!- /--$7&# /# 8 H`D {C !J.  6??6''6 016 45  66BG0;;%##1#% + '$3#1#1#!(;*_!$3# < ^C eB !E)0G88CCEF1_,)*OA&	 ' 7AA!-'# /--$7&!! B HPB mA !$44  /##//0/ /0/ /   0??0%%0 ./	  0G(3@0/::!-!'# /-$7& ; HBA a@ !J. #''#!.1# ??	   1##1!"561 1	  -77!-!'# /--$7& /# 8 H* 8  V? Q? !I-U0A!BUgooG  /##/!"45/ /	  -77!!$7-&# /--' /# 8 H& 8  V> Q> !M1VG,,V?U0V  -77!!$7-&# /--' /# 8 H& 8  `= Y= 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 #&66S  -".":":"<"=o"N #**=9 /(3@0 ///H4H"8"B".2AOJ/ ))446F1_,)*OA&	 ' )8;)%2,4??#!)!),?'5!.$+(7 ''5'5$/% ' '%(7#  @  H(  7AA#!) ''5&3 '!)$/$+(7'5"+ '+=%%1,?'5%  B  H< ""8U33!!"#&.%.$8	 " D9 w8 !I-QQJ?P4QG /##/01/ /	  -77!!$7-&# /--' /# 8 Hd8 }7 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 "  &H^6 [6 %"j0///R6 Q6 !$44 7((7??7 ::>>"56	  "4!Qw7Q7Q ;##;23; 23; ;  "11W!X$* )).99N*#$$_ -77!'!- /--$4&# 8 HV5 u4 !K/ 7((7??7 ::>>"56	  "4!Qw7Q7Q  ;##;23; 23; ;  "11W!X$* )).99N*#$$_ 2<<!!'#*#=#=-+ /-#&#$7# = H& ""8U33{d7J!!"#&. " 
  HB3 A3 !K/ #((#12# ??	   5##5235 5	  1!!-+ /-#&%#H ?*x/HD/P.(3 '	 ""8U33{d7J!!"#&. "   Hd1 c1 !M1 #**#34# 23# ??   :##:45: :	  )33!!-+ /-#&-4-?-?'#N ?*x/HD/P."(5 '	  %HR0 Q0 !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 HB/ _. !J. #''#01# ??	   2##2122 2	  9CC!!-+ /-#&$#$.#5 D N  &H`- _- !M1 #..#!"78# ??	   4##4!"894 4	  3==!!-+ /-#&#$7#5 > HD- e, !M1 #**#::>>*-# ::>>"78# ??  !3GOOJ,77!"-'!'# /-$7& 8 HR, q+ !E),77!-!'# /-$7& 8 Hn+ M+ !M1S>*?@SGOO   @#@H -77!-!'# /-$7& /! 8 H|* Y* !K/"-&11!-!+ /-#&#N ?*x/HD/P."(3 '	  %Hh) g) !L0 4##49923   4??4))4 23	  0G0;;!% +%#1$3#1(4##*_# '! < 6 ""8U33!!"#&.%.$8	 " F( y' !K/,77!-!'# /-$7& /! 8 Hv' S' !L0 2##2!"782 2	   0??0))0 ""670 ",/  #-]";"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& (  R% M% !$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& (  T# M#  =0"e+333 ~" }" !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|! Q! !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 "(  2 ? ?? .E-F* 4E/04F017I34!6!A!A!%#1$.#1*_ % ' +#!(3$>#Mr! "B "& "6!@!@%#1"/$.#1'*_$6#4'9 ' +"" /'1T9#u,2&,7$+	 H $O%Hv u !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(&&&HL K !$?? 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~ } !$?? 9"&&z489"&&z48    5!"6754   s+H$$V,,F"
 &' ;,,;%&9:  0::!-+$?!'# /-# ; I$  ##He4=5(#u,#>>@ff$-^ g 	 ""8U33{d7J!!"#&/%.$8	 "  !HD C !$HH 3==!'!- /-$7&# > 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 11"7"P"P)11# )BB5I0;;!% +%#1$3#1#1(1##*_# '!$3# < &  *,k26;FF%'9#1$3#1'*_ '")# +!%# G ~ ] /1&6;0;;!% +%#1$3#1(1##*_# '! < X u 1;;!% +%#1$3#1(1##*_# '! < t S !I-.99!-+!'# /-##5&$-# : HP k !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 HN k !F*!3!Qw7Q7Q)44!#5-+ /-#&#N O+0IT0Q /"(. '	   &Hr q !H,   ,,/0, ,	  "g'E-4WI+>(,77!'!- /--$,&#! 8 H\ w !M1   ,,/0, ,	   #%%#::>>"23# ??	  "g'E-4WI+>(,77!'!- /--$1&#! 8 HT o !H,''38H,77!'!- /--$7&# 8 Hj I !L0 4--4??4 23	  $$;<J Y##Y34Y DJ<xX	  "4!Qw7Q7Q,77!'!- /--$0&# 8 Hh E !H,9N9N0N37#3#3H"*$((59F+66!!-+ /-#&#N ~,Y7:9EiP.(0 '	  %HL
 K
 !K/5G<T<T3T4:eOK0  1;;%##1#% + '$3#1#1#!(;*_!! < @
 I	 !M1''38H,77!'!- /--$1&# 8 HD	 a !G+ #$$#!/2# ??	  -77!-!'# /-$7& 4! 8 H& j i !J. #''#!"45# ??	  -77!-!'# /-$7& 7! 8 H& r o !J.%7;R;R2R #''#!"45# ??	   F##F!"56F F	  -77!-!'# /-$7& 7! 8 H& j g !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 %Hp k  7#<#<< 37N33
#'::%)*:%;N 4 %,5H 
 0$VJ 66BG " !    .	
 ,   " ( $ !0  . $   $6   '!H$ ~*&.(; '	  \ M !K/R
  !FF!5W%5%527?? G  0G,77!'!- /--$7&#! 8 Hp K !J.P
  EE!5W%5%527?? F  0G,77!'!- /--$7&#! 8 H.  )1D ig  	M""%Gs#KLL	Mz")
|G
j  !!"#&)!f%.$8	 "  | ! %%& '*-a&)2G(<	 &  GF #O|  !!"#&)!f%.$8	 "  <  !!"#&)!f%.$8	 "  >  !!"#&)!f%.$8	 "  <  !!"#&)!f%.$8	 "  @  !!"#&)!f%.$8	 "  \	  !!"#&)!f%.$8	 "  ~  !!"#&)!f%.$8	 "  D  !!"#&)!f%.$8	 "  d Kx  
 3 "
 	

s  /Db 4ADk  6Dk  =Db=	Db=Dk  2BDk  >
Dc
DcG=Dk  Dc)ODk  >C3Dk  2IDk  AA*Dk  B6A Dk  DE2Dk  JA2Dk  L Dk  L+Dc L2Dk  L4BDk  OD
Dk  SADk  T*Dc= U	,Dk  U6D+Dk  Z%BDk  \(Dd.\7B#Dk  _Dk  _"+Dd3 `Dk  `Dk  `+De$ aDk  aDk  a
+Df a5Dk  a7Dk  a>+Dg b)Dk  b+CDk  e?4Dk  f4B.Dk  i&4Dk  jB+Dk  mA=Dk  o+Dg7 o0Dk  o2ADk  q5Dk  rCDk  uB:Dk  xB"Dk  z=A.Dk  |,IDk  E8Dk  F2Dh( GDk  G*Dh( G,-Dk  HBDk  J0DDk  O%Dk  O-EDk  T2FDk  Z7C/Dk  ^'C.Dk  bDk  bGDk  i&B2Dk  lB0Dk  o
CDk  r1Dk  s
A+Dk  t6ADk  vDk  vBDk  x-+Di y,Dk  z3Dk  z9EDk  @ADk  A5D1Dk  F*ADk  H&Dk  H-GDk  O3L*Dk  \Dk  \"EDk  a6Dk  a:C Dk  eDk  eEDk  j=4Dk  k26Dk  l)F
Dk  r4ADk  s=ADk  u-Dk  u4:Dk  v/FDk  }A)Dk  ~7Dk  ~;A=Dk  @9CDk  DADk  ECDk  H5BDk  KDk  KDk  K2<Dj
 L.Dk  L0ADk  M=A=Dk  O;A=Dk  Q9CDk  UADk  VDj;V#C	Dk  Y-3Dk  Z$B"Dk  ]Dk  ]
BDk  _%BDk  b Dk  b
Db:bDb5b5Db:b=Dk  c
Dc:cDc5c5Dc:c:Dk  c=
Dd+dDd&d&Dd+d+Dk  d3
De!d=DeeDe!e!Dk  e$
Dfe.DffDffDk  f
DgfDf>f>DggDk  g
Dg4gDg/g/Dg4g4Dk  g7
Dh%hDh h Dh%h%Dk  h(
Dih2DiiDiiDk  i
Dji#DjjDjjDk  j

Dj8jDj3j3Dj8j8Dk  k 
Dkk
DkkDkc                      SSK nUR                  SS5      nSUS'   SUS'   UR                  SS5      nUR                  S	[        5      nUS
:X  a/  UR	                  UR                  SSS9UR                  U5      SS9nOUR	                  UR                  U5      SS9nU" U/U Q70 UD6$ ! [         a  n[        SU 35      eSnAff = f)z0
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_retryrp   
   
multipliermaxTr   rF  reraiserF  r  )tenacityrd  r   r   Retryingwait_exponentialstop_after_attemptrw  r  r  rt  r   r  r  retryers           r   completion_with_retriesr    s   
 **]A.KF=F=MSZZ*NN 

#6
C44##**aR*@,,[9 $ 
 ##,,[94 $ 
 $6t6v66/  
MaSQ
 	

s   B* *
C4CCc                    #     SSK nUR                  SS5      nSUS'   SUS'   UR                  SS5      nUR                  S	[        5      nUS
:X  a/  UR	                  UR                  SSS9UR                  U5      SS9nOUR	                  UR                  U5      SS9nU" U/U Q70 UD6I Sh  vN $ ! [         a  n[        SU 35      eSnAff = f N$7f)zo
[DEPRECATED]. Use 'acompletion' or router.acompletion instead!
Executes a litellm.completion() with 3 retries
r   Nr  r   r  r   r  r  r  r  rp   r  r  Tr  r  )r  rd  r   r   AsyncRetryingr  r  r  s           r   acompletion_with_retriesr  8  s	    

 **]A.KF=F=ZZ 02BCN

#6
C44((**aR*@,,[9 ) 
 ((,,[94 ) 
 *<T<V<<<)  
MaSQ
 	

( =s4   CB4 B'C/C0C4
C>CCCc                      SSK nSSKJn  UR	                  SS5      nSUS'   SUS'   UR	                  SS	5      nUR	                  S
U5      nUS:X  a/  UR                  UR                  SSS9UR                  U5      SS9nOUR                  UR                  U5      SS9nU" U/U Q70 UD6$ ! [         a  n[        SU 35      eSnAff = f)z-
Executes a litellm.responses() with retries
r   Nr  )r  r   r  r   r  r  r  r  rp   r  r  Tr  r  )r  rd  litellm.responses.mainr  r   r  r  r  )	rw  r  r  rt  r  r   r  r  r  s	            r   responses_with_retriesr  V  s   
 1**]A.KF=F=MSZZ*NN 

#6	B44##**aR*@,,[9 $ 
 ##,,[94 $ 
 $6t6v663  
MaSQ
 	

s   B, ,
C	6CC	c                    #     SSK nSSKJn  UR	                  SS5      nSUS'   SUS'   UR	                  SS	5      nUR	                  S
U5      nUS:X  a/  UR                  UR                  SSS9UR                  U5      SS9nOUR                  UR                  U5      SS9nU" U/U Q70 UD6I Sh  vN $ ! [         a  n[        SU 35      eSnAff = f N$7f)z.
Executes a litellm.aresponses() with retries
r   Nr  )
aresponsesr   r  r   r  r  r  r  rp   r  r  Tr  r  )r  rd  r  r  r   r  r  r  )	rw  r  r  rt  r  r   r  r  r  s	            r   aresponses_with_retriesr  x  s    
 2**]A.KF=F=ZZ 02BCN

#6
C44((**aR*@,,[9 ) 
 ((,,[94 ) 
 *<T<V<<<-  
MaSQ
 	

, =s4   CB6 B)C1C2C6
C CCCc            	      .  #    [         R                  " 5       n[        U 5      S:  a  U S   OUS   nSUS'   UR                  SS5      n [	        [
        /U Q70 UD6n[        R                  " 5       n[	        UR                  U5      n[        UUUR                  SS5      S9u  p  nUR                  SU5      I Sh  vN n	Sn
[        U	[        5      (       a  [        S0 U	D6n
O=[        U	[        5      (       a  U	n
O%[         R                  " U	5      (       a
  U	I Sh  vN n
U
b4  [        U
[        5      (       a  [        U
S	5      (       a  XJR                   S'   U
c  [#        S
5      eU
$  N NM! [$         a  nU=(       d    Sn['        UUUU US9eSnAff = f7f)a]  
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>  NrI  rH  r  zCUnable to get Embedding Response. Please pass a valid llm_provider.rT  rU  r   )rZ  r[  r`  r   r   	embeddingrf  rg  rh  r[   ri  r\  rj  rK   rk  r%  r  r  rd  r   rw  r  rS  r   r>  rp  rq  rr  ro  rs  r  rt  s               r   r  r    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9$H  //**H 8%677"233=P##$9:U  ) L +  
1=X 3 "
 	

sQ   AF	A2E+ ;E'<AE+ E)A
E+ &F'E+ )E+ +
F5FFFr   
dimensionsencoding_formatrI  rR  cachingr  Tc                    g r   r   r   r  r  r  r   rI  r2  r   rR  r  r  r>  r*  r  r  r  s                   r   r  r        , r   )r  c                    g r   r   r  s                   r   r  r    r  r   c                 H0   UR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  S5      nUR                  SS5      nUR                  SS5      nUR                  S	S5      nUR                  S
S5      nUR                  SS5      =(       d    UnUc  0 nUb  UR                  U5        [        R                  b0   [        R                  R                  5       nUR                  U5        UR                  SS5      nUR                  SS5      nUR                  SS5      n/ SQnS	S
/[        -   nUU-   n UR                  5        V!V"s0 s H  u  n!n"U!U ;  d  M  U!U"_M     n#n!n"[        U UUUS9u  pn$nU$b  U$nUR                  SS5      n%[        SU U
UUUU%S.U#D6n&Ub  Uc  Ub5  [        R                  " U SU  3[        UUUR                  S5      S905        [        S0 UD6n'Un(U(R!                  U U
U&U'US9  Ub
  [#        U US9$  Sn)USL d  US:X  Ga  U=(       d"    [        R$                  =(       d    ['        S5      nU=(       d9    [        R(                  =(       d"    ['        S5      =(       d    [        R*                  nU&R                  SS5      =(       d    ['        S5      n*U=(       d9    [        R,                  =(       d"    [        R.                  =(       d    ['        S5      nUc  [1        S5      e[2        R5                  U UUUUU*UU(U[7        5       U&UUUU=(       d    UU'S 9n)GOUS!:X  aA  U=(       d    [        R,                  n[8        R5                  U UUUUU(U[7        5       U&UUU'S"9n)GOUS#:X  d+  US$:X  d%  US%:X  d  US&:X  d  U [        R:                  ;   Ga  UGc  U=(       d=    [        R$                  =(       d&    ['        S'5      =(       d    ['        S(5      =(       d    S)n[        R<                  =(       d    ['        S*5      =(       d    S[>        l        U=(       d9    [        R,                  =(       d"    [        R@                  =(       d    ['        S+5      nUb  U0 :w  a  UU&S
'   Ub  UU&S,'   O['        S-5      n+U+b5  U+RC                  5       RE                  5       S.:X  a  U&R                  S,S5        O]U&R                  S,5      =(       d    U+=(       d    S/n,U,RC                  5       RE                  5       S.:X  a  U&R                  S,S5        OU,U&S,'   Sn[F        R5                  U UUUU(U[7        5       U&UUUUS09n)GOUS1:X  a  U=(       d"    [        R$                  =(       d    [I        S25      nU=(       d9    [        R,                  =(       d"    [        RJ                  =(       d    [I        S35      n[L        R5                  U UUUU(U[7        5       U&UUS49
n)GOVUS5:X  a  U=(       d"    [        R$                  =(       d    ['        S65      nUc"  [        R,                  =(       d    ['        S75      n[8        R5                  U UUUUU(U[7        5       U&UUU'U=(       d    0 S89n)GOUS9:X  d  US::X  d  US;:X  a  U=(       d"    [        R$                  =(       d    ['        S<5      nUcB  U=(       d9    [        R,                  =(       d"    [        RN                  =(       d    ['        S=5      nUb  U0 :w  a  UU&S
'   [P        R5                  U UUUU(U[7        5       U&UUS49
n)GOUS>:X  a.  Uc  0 n[8        R5                  U UUUUU(U[7        5       U&UUU'US89n)GOUS?:X  d  US@:X  a  U=(       dK    [        RR                  =(       d4    ['        SA5      =(       d"    ['        SB5      =(       d    [        R,                  n-Uc  0 n[8        R5                  U UUUU-U(U[7        5       U&UUU'US89n)GOVUSC:X  Ga  U=(       d+    [        R$                  =(       d    ['        SD5      =(       d    SEnU=(       dK    [        R,                  =(       d4    [        RT                  =(       d    ['        SF5      =(       d    ['        SG5      n[I        SH5      =(       d    SIn.[I        SJ5      =(       d    SKn/U.U/SL.n0U=(       d    [        RV                  n1U1(       a  U0R                  U15        U0n[8        R5                  U UUUUU(U[7        5       U&UUU'US89n)GO>USM:X  a  U=(       d+    [        R$                  =(       d    ['        SN5      =(       d    SOnU=(       d4    [        R,                  =(       d    ['        SP5      =(       d    ['        SQ5      n[8        R5                  U UUUUU(U[7        5       U&UUU'US89n)GOUSR:X  ar  U=(       d9    [        RX                  =(       d"    [I        SS5      =(       d    [        R,                  n[Z        R5                  U U[]        5       UUU([7        5       U&UUU'UST9n)GO&USU:X  aQ  [_        U[`        5      (       a  U/n2OUn2[b        Re                  U U2[]        5       U(U&[7        5       UUU0 U[f        UUSV9n)GOUSW:X  a6  Uc  [1        SX5      e[8        R5                  U UUUUU(U[7        5       U&UU0 S"9n)GOUSY:X  a  U=(       d!    [i        5       =(       d    [        R,                  n3U=(       d"    [        R$                  =(       d    ['        SZ5      n[j        Rm                  U U[]        5       U(U&[7        5       SSSU[f        SYU3UUUS[9n)GO US\:X  GaD  U&R                  S]S5      =(       dM    U&R                  S^S5      =(       d4    [        Rn                  =(       d    ['        S_5      =(       d    ['        S`5      n4U&R                  SaS5      =(       dM    U&R                  SbS5      =(       d4    [        Rp                  =(       d    ['        Sc5      =(       d    ['        Sd5      n5U&R                  SeS5      =(       d6    U&R                  SfS5      =(       d    ['        Sg5      =(       d    ['        Sh5      n6U=(       d4    [        R$                  =(       d    ['        Si5      =(       d    ['        Sj5      n [s        U S\Sk9n7U7R                  SlSm5      n8U8(       a8  [j        Rm                  U U[]        5       U(U&[7        5       U4U5U6U[f        S\SUUUS[9n)G
OESnU&;   d  SoU&;   d  U [t        Rv                  ;   a7  [t        Ry                  U U[]        5       U(U&U'[7        5       U4U5U6U[f        S\UUSp9n)G	O[z        R5                  U U[]        5       U(U&[7        5       U4U5U6S\UU[f        UUUU'Sq9n)G	OUSr:X  a-  [|        R4                  " U U[]        5       UU(U&[7        5       USs9n)G	OUSt:X  a  [        R$                  =(       d    U=(       d    ['        Su5      =(       d    Svn[_        U[`        5      (       a  U/n[        Sw U 5       5      (       d  [        R                  " SxU 3U StSy9eUSL a  [        R                  O[        R                  n9U9" UU U[]        5       U(U&[7        5       Sz9n)GOUS{:X  a/  [        R5                  U U[]        5       U(U&[7        5       [f        S|9n)GOUS}:X  aQ  U=(       d"    [        R,                  =(       d    ['        S~5      n[F        R5                  U UUUU(U[7        5       U&UUS49
n)GO1US:X  aQ  U=(       d"    [        R,                  =(       d    ['        S5      n[F        R5                  U UUUU(U[7        5       U&UUS49
n)GOUS:X  a  U=(       d"    [        R,                  =(       d    ['        S5      nU=(       d+    [        R$                  =(       d    ['        S5      =(       d    Sn[F        R5                  U UUUU(U[7        5       U&UUS49
n)GOOUS:X  a  U=(       d"    [        R,                  =(       d    ['        S5      nU=(       d+    [        R$                  =(       d    ['        S5      =(       d    Sn[F        R5                  U UUUU(U[7        5       U&UUS49
n)GOUS:X  a  U=(       d"    [        R,                  =(       d    ['        S5      nU=(       d+    [        R$                  =(       d    ['        S5      =(       d    Sn[8        R5                  U UUUUU(U[7        5       U&UU0 S"9n)GO7US:X  a(  [8        R5                  U UUUUU(U[7        5       U&UU0 S"9n)GO	US:X  a(  [8        R5                  U UUUUU(U[7        5       U&UU0 S"9n)GOUS:X  aU  [        R                  " U&XuS9n:U:S   nU:S   nSU:;   a  U:S   U&S'   [8        R5                  U UUUUU(U[7        5       U&0 UUS9n)GOUS:X  a  U=(       d+    [        R,                  =(       d    ['        S5      =(       d    SnU=(       d+    [        R$                  =(       d    ['        S5      =(       d    Sn[F        R5                  U UUUU(U[7        5       U&UUS49
n)GOUS:X  a(  [8        R5                  U UUUUU(U[7        5       U&0 UUS9n)GOUS:X  a  U=(       d"    [        R$                  =(       d    ['        S5      nU=(       d9    [        R,                  =(       d"    [        R@                  =(       d    ['        S5      n[        R5                  U UUUU(U[7        5       U&UUS49
n)GO%US:X  aC  [_        U[`        5      (       a  U/n2OUn2[8        R5                  U U2UUUU(U[7        5       U&0 UUS9n)GOUS:X  a  U=(       d4    [        R,                  =(       d    ['        S5      =(       d    ['        S5      n;U;c  [1        S5      eUb  [_        U[        5      (       a  UnO0 n[8        R5                  U UUUU(UU&0 [7        5       U;UUUS9n)GOEUS:X  a  U=(       d"    [        R,                  =(       d    ['        S5      n<U<c  [1        S5      eUb  [_        U[        5      (       a  UnO0 n[8        R5                  U UUUU(UU&0 [7        5       U<UUUS9n)GOUS:X  a  U=(       d"    [        R,                  =(       d    ['        S5      nU=(       d+    [        R$                  =(       d    ['        S5      =(       d    Sn[8        R5                  U UUUUU(U[7        5       U&UU0 S"9n)GO3US:X  a  U=(       d9    [        R                  =(       d"    ['        S5      =(       d    [        R,                  nU=(       d+    [        R$                  =(       d    ['        S5      =(       d    Sn[8        R5                  U UUUUU(U[7        5       U&UU0 S"9n)GOU[        R                  ;   aq  Sn=[        R                   H  n>U>S   U:X  d  M  U>S   n=M     U=c	  [        XSk9eU(       d  U=R4                  OU=R                  n?U?" U UU(UUUU&[7        5       [f        U'S9
n)GO
US:X  a;  U=(       d    ['        S5      n[8        R5                  U UUUUU(U[7        5       U&UU0 S"9n)OUS:X  a  U=(       dK    [        R,                  =(       d4    [        R                  =(       d    ['        S5      =(       d    ['        S5      n[8        R5                  U UUUUU(U[7        5       U&UUSUR                  SS5      0S"9n)O6US:X  a'  [8        R5                  U UUUUU(U[7        5       U&UU0 S"9n)O	[        XSk9eU)b5  [        U)S5      (       a$  [_        U)[6        5      (       a  UU)R                  S'   U)c	  [        XSk9eU)$ ! [         a$  n[        R                  " SU 35         SnAGNSnAff = fs  sn"n!f ! [         a    Smn8 GNf = f! [         a+  nUR                  UU[a        U5      S9  [        U UUUS9eSnAff = f)a#  
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.
r  Nr   r8  r   r?  rK  r.  r  r4  r  r  r  r  r  )r  r  r  rI  r2  r   rG  r   r   r   r   r   r  r   r>  rI  r   r"  )r   r  r  r  r>  r"  r  r  r  rB  )r   rK  TrK  rL  r6  rP  rN  zPNo API Base provided for Azure OpenAI LLM provider. Set 'AZURE_API_BASE' in .env)r   r  rI  r   r2  r6  r.  r  r   r  rC  r   r  r   r  r  r  )r   r  r>  rI  r   r  r   r  rC  r   r  r  rT  r  rz  litellm_proxyrY  rZ  r[  r  r\  r  )LITELLM_DEFAULT_EMBEDDING_ENCODING_FORMATr(  r   )r   r  rI  r   r  r   r  rC  r   r  r   r8  r  r  r  )
r   r  rI  r   r  r   r  rC  r   r  ru  rv  HOSTED_VLLM_API_KEY)r   r  r>  rI  r   r  r   r  rC  r   r  r  r  openai_like	llamafile	lm_studioOPENAI_LIKE_API_BASEOPENAI_LIKE_API_KEYr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  VERCEL_OIDC_TOKENr  r  )r   r  rG  r   rI  r  r  rC  r   r  r  r  r  )r   r  rG  r  rC  r  r   r   r  r  rI  rv  r4  r   r  z7api_base is required for triton. Please pass `api_base`r  r  )r   r  rG  r  rC  r  r  r  r  r  rv  r>  r   rI  r   r4  r  r  r  r  VERTEX_PROJECTr  r  r  VERTEX_LOCATIONr  r  r  VERTEX_CREDENTIALSr  VERTEX_API_BASEr  uses_embed_contentFimagevideo)r   r  rG  r  rC  r  r  r  r  r  r  rv  r>  r   rI  )r   r  rG  r  rC  r  r  r  r  r>  r   r  rv  r   rI  r   r  r   )r   r  rG  rI  r  rC  r  r   r  r  r  c              3   B   #    U  H  n[        U[        5      v   M     g 7fr   )r\  r   ).0r  s     r   	<genexpr>embedding.<locals>.<genexpr>  s     ?z$,,s   z+Invalid input for ollama embeddings. input=r  r   r~  )rI  r   promptsrG  r  rC  r  r  )r   r  rG  r  rC  r  rv  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  )rC  r   rI  r   rI  r  )r   r  r>  rI  r   r  r   r  rC  r  r   r  
xinferenceXINFERENCE_API_KEYzstub-xinference-keyXINFERENCE_API_BASEzhttp://127.0.0.1:9997/v1rl  r  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  rI  rC  r  r  r   r   r  r  	dashscopeDASHSCOPE_API_KEYzdMissing API key for DashScope. Set DASHSCOPE_API_KEY environment variable or pass api_key parameter.r  r  r	  r
  rn  ro  rp  rq  r!  r  )
r   r  r  rI  r   r   rC  r  rv  r  r  SNOWFLAKE_JWTri  rk  rj  r  ry  r  r>  r  )r   rV  r>  rX  r   )Sr   r   r  r   r  r   rd  rq   r!  r   r  r[   r_   r'  r  r    r+  r3   rI  rC   r2  r1  r   r2  r  r8  r  rK   r:  open_ai_embedding_modelsr   rT  rD  stripr  rY  rc   rl  databricks_embeddingopenai_like_keyopenai_like_embeddingre  rm  r  rj  huggingface_embedr-  r\  r   bedrock_embedding
embeddingsrv  r   google_batch_embeddingsbatch_embeddingsr  r  r\   vertex_multimodal_embedding%SUPPORTED_MULTIMODAL_EMBEDDING_MODELSmultimodal_embeddingvertex_embeddingr   allBadRequestErrorr  ollama_aembeddingsollama_embeddingsr  r   get_watsonx_credentialsazure_ai_embeddingrj  rQ  r  r  r(   r  rM  r%  r  r  r   )@r   r  r  r  r   rI  r2  r   rR  r  r  r>  r*  r  r  r  r   r8  r   r?  rK  r.  r  r4  r  r  rt  r  r  r  openai_paramsr  default_paramsr  r  rA  r  r"  rC  litellm_params_dictr  r  r6  env_fmt_default_fmtre  r  r  r  r  transformed_inputr  r  r  r  r  r  ollama_embeddings_fncredentialsvolcengine_keydashscope_keyr  r  r  s@                                                                   r   r  r    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 }%%	M#..??AMNN=) "::&<dC"JJ'>E"JJ'>EM  	 	N
 #^3N'A1N+B1   =M/	=9E "!172 5 '/3 O 	(-B-N		*&'q02M(;!%zz,73	
 -6v6!4G(('*/ )   EGG@
  	 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$ !$440G,66$7!#02 /%2 7 H  8+"m3"l2"o5999'/  /##/!"34/ ""34/ /  $$ !"78   4??4%%4 ""23	  "w"}3:0*5D 12()TU&7==?+@+@+Bf+L#''(94@ (++,=>T'TW ! $))+113v='++,=tD=I(9:K /88!#02 /%'- 9 H !L0X7#3#3XzBW7XH  4??4))4 23	  ,55!#02 /% 6 H !M1VG,,V?U0V 
 !//R^<Q-R,66$7!#02 /%22 7 H   =0"k1"k1 VG,,V?U0V 
  ==..= &&;<	  "w"}3:0 -66!#02 /% 7 H !E),66$7!#02 /%2 7 H !H,0C}0T #%%#!"23# ",/# ??  ,66$7!"#02 /%2 7 H !L0 2##2!"782 2	   0??0))0 ""670 ",/  #-]";"S?S",]";"Hy !4."
 1'//H"))(3(G,66$7!#02 /%2 7 H !$77 5##5!">?5 5	   7??7!"=>7 ""56	  -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	 ++[
 &0^^4H%%P" "2CC*_ '$3#4#6#4$6'9)"/(3 %!")! D & ?*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# 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 /K "),G":.H+%+6w+?(,66$7!#02 /!% 7 H !L0 )??)!"67) )	   .##.!"78. .	  /88!#02 /% 9 H !E),66$7!#02 /!% 7 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-L',66$7#! /!02&% 7 H !K/Q7??Qn=P.Q  $ z  (Zt-L-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 %,  " ((#..  "#! /02+2H !K/@!@G,66$7!#02 /%! 7 H !J. 6??6''6 ""896 ""45  -66$7!#02 /% ,fjjt.LM 7 H !L0,66$7!#02 /%! 7 H )   "2338%677=PH##$9:(  G"  	M""%Gs#KLL	M6|  +%*"+V  
%%!!f 	& 	
   3	
 	

s   (/A^" 4A_A_4jA_, <A_ d%A_, XF A_, ^"
A_^,A__A__A_)_%A_, _(A_)_)A_, _,
A`!_6&A``A`!c            	        #    [         R                  " 5       n[        U 5      S:  a  U S   OUS   nSUS'   Sn [        [        /U Q70 UD6n[
        R                  " 5       n[        UR                  U5      nUR                  SU5      I Sh  vN n[        U[        5      (       d  [        U[        5      (       a$  [        U[        5      (       a  [        S0 UD6n	O+Un	O([         R                  " U5      (       a  UI Sh  vN n	OUn	UR                  SS5      SL d*  [        U	[        5      (       d  [        U	[        5      (       a%  [        [!        U	UUU S9UUUR                  S	5      S
9$ [        U	[        5      (       a  U	$ [         R                  " U	5      (       a
  U	I Sh  vN n	[        5       n
["        R$                  R&                  R)                  U
U	US9n
U
$  GNP N N>! [*         a  nU=(       d    Sn[-        UUUU US9eSnAff = f7f)zH
Implemented to handle async streaming for the text completion endpoint
r   r   Tr   Nr  F)r  r   r>  rw  r  )r  r   r>  r  )text_completion_responser  r>  rT  rU  r   )rZ  r[  r`  r   r  rf  rg  rh  ri  r\  rj  rP   rk  r   rQ   rJ   ry  r   r  LiteLLMResponseObjectHandlerconvert_chat_to_text_completionrd  r   )rw  r  rS  r   r>  rp  rq  rr  rs  r  rA  rt  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8."2%(;	# $7%zz*:;
 
 ($:;;$$X..!)>'='?$'.}}'Q'Q'q'q)A!$7 (r ($
 ,+U L +2 *  
1=X 3 "
 	

sy   6HAG# GA2G# ?G A*G# *H+G# H G# "G!#8G# HG# G# !G# #
H
-HH

Hr  best_ofechorF  suffixc           
        ^^^^)^*^+ SS K n ST;   a0  TS   nTc  [        U[        5      (       a  UmTR                  S5        [	        5       m*0 m)Ub  UT)S'   Ub  UT)S'   Ub  UT)S'   Ub  UT)S'   Ub  UT)S'   Ub  UT)S'   Ub  UT)S	'   U	b  U	T)S
'   U
b  U
T)S'   Ub  UT)S'   Ub  UT)S'   Ub  UT)S'   Ub  UT)S'   Ub  UT)S'   Ub  UT)S'   Ub  UT)S'   Ub  UT)S'   Ub  UT)S'   Ub  UT)S'   [        TUUS9u  nnnnUS:X  Ga!  USL a  ST;  a  STS'   [        U [        5      (       a  SS Kn[        R                  " S5      m+[        U 5      S:  a  [        U S   [        5      (       a  U  Vs/ s H  nS PM     nnUUUU)U*U+4S jnUR                  R                  5        n [        U 5       V!V"s/ s H  u  n!n"U R                  UU!U"5      PM     n#n!n"[        UR                  R                  U#5      5       H  u  n!n$U$R!                  5       UU!'   M     UT*l        S S S 5        T*$ / n%[        U [        5      (       aG  [        U 5      S:  a8  [        U S   [        5      (       a   U  H  n&SU&S.n'U%R%                  U'5        M     O[        U [        5      (       a  SU S./n%OUS:X  d  US:X  d  US :X  d  US!:X  d  US":X  a[  [        U [        5      (       aF  [        U 5      S:  a7  [        U S   [        5      (       d  [        U S   [&        5      (       a  SU S./n%O[)        S#U  S$35      eTR                  S%S 5        Ub1  US:X  a+  U[*        R,                  ;  a  S&U-   mT)R                  SS 5        Tc  [/        S'5      eSTS('   [1        TTU%S).TDT)D6n(TR3                  S*S+5      SL a  U($ USL d*  TR3                  SS+5      SL d  [        U([4        5      (       a  [7        U(TUUS,9n(U($ [        U([6        5      (       a  U($ [        U([        5      (       a  U($ [*        R8                  R:                  R=                  U(T*S-9m*T*$ s  snf s  sn"n!f ! , (       d  f       T*$ = f).Nr   enginerD  rE  r  r  r%  r  r  r  rF  r  r  rF  r  r  r  rI  r2  r   r>  rH  r  Ttop_n_tokensr  ztext-davinci-003c                    > T
R                  U5      n0 TETEn[        TTUSS.UD6nUR                  SS 5      T	S'   ST	S'   UR                  SS 5      T	S'   UR                  SS 5      T	S'   US   S	   $ )
Nr  )r   r  r   rb  r  objectr  r   r  r   )decoder  r   )r  individual_promptdecoded_prompt
all_paramsr  rw  r  r   rC  rA  	tokenizers        r   process_prompt'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  rT  r  rT  rN  rM  zVUnmapped 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  rA  )r  r\  r   r   rP   r[   rE  concurrent.futurestiktokenencoding_for_modelr`  r   r   	enumeratesubmitas_completedresultr  r  r   rd  r   rR  r  r   r   rJ   rQ   r  rB  rC  ),r  r   rD  rE  r  r  r%  r  r  r  rF  r  r  rF  r  r  r  rI  r2  r   r3  r>  rw  r  r  _engine_modelr  
concurrentxr  rQ  executorr  rM  completed_futuresfuturer   pr  r  rC  rA  rP  s,    `                    ``                 @@@r   r  r    s.   j 4 6"=Z5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!9c8R8RA%!4GOOG$  
FC	 	 #78  8+"g-"l2"&AA"&>>vt$$K!Oq	4((Jvay#,F,F $78dekdl  mh  i
 	
 JJxx'???-6E 5t<}VWW $F 
  	
 H zz-'4/$::h&$.h 344.&) 3	
 	H9	:	: (233 	22RR%= 	S 	
  $#] 3() =< 0/s%   'P5Q ) P:	AQ :Q  
Q
adapter_idc                   #     Sn[         R                   H  nUS   U :X  d  M  US   nM     Uc)  [        SR                  U [         R                  5      5      eUR	                  US9n[        S0 UD6I Sh  vN nSn[        U[        5      (       a  UR                  US9n[        U[        5      (       a  UR                  US9nU$  NP! [         a  nUeSnAff = f7f)	z<
Implemented to handle async calls for adapter_completion()
Nrb  adapterHNo matching adapter given. Received 'adapter_id'={}, litellm.adapters={}r  r  r  r   )r   adaptersr  r  !translate_completion_input_paramsr   r\  rM   "translate_completion_output_paramsrJ   ,translate_completion_output_params_streamingrd  )rc  r  translation_objr  
new_kwargsr  translated_responsert  s           r   aadapter_completionrp    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4LL&. M    #" ?^   sA   CC	 AC	 6C7AC	 CC	 	
CCCCc            	         #    SSK Jn  [        [        [        [        [
        [        [        [        4   [        [           4   4   UR                  " S0 U DSS0D65      nUI S h  vN $  N7f)Nr   )"GenerateContentToCompletionHandler	_is_asyncTr   )%litellm.google_genai.adapters.handlerrr  r   r   r
   r   r   r   r   bytesgenerate_content_handler)r  rr  coros      r   aadapter_generate_contentrx  $  se      Y#sE$sCx.-2F"FGGH*CC 	
	
 $	
D ::s   A#A,%A*&A,c                    S n[         R                   H  nUS   U :X  d  M  US   nM     Uc)  [        SR                  U [         R                  5      5      eUR	                  US9n[        S0 UD6nS n[        U[        5      (       a  UR                  US9nU$ [        U[        5      (       d  [        R                  " U5      (       a  UR                  US9nU$ )Nrb  re  rf  r  rg  rh  r   )r   ri  r  r  rj  r   r\  rM   rk  rJ   inspectisgeneratorrl  )rc  r  rm  r  rn  r  ro  s          r   adapter_completionr|  2  s     /3O  :#"9oO ! V]]G,,
 	
 !BB&BQJ:D:Rz:RH  (M**-PP Q 
  
H1	2	2g6I6I(6S6SHH"* I  	 r   r  c                    U=(       d9    [         R                  =(       d"    [         R                  =(       d    [        S5      nUR	                  SS 5      nUR	                  SS 5      nUc,  Ub  [
        R                  " X$S9nO[
        R                  " US9nUb  UR                  R                  XS9nOUR                  R                  U S9nUR                  5       n[         R                  R                  R                  US9$ )	Nr\  rI  r   )r   r   )r   r  r   r  rQ  )r   r   rD  rC   r   rT  OpenAImoderationsr  
model_dumpr  rB  convert_to_moderation_response)r  r   r   r  rI  openai_clientr  response_dicts           r   
moderationr  X  s    
 	 	,??	,	, *+	  zz*d+HJJx.M"MM'MM"MM':M ,,33%3M ,,33%3@"--/M==55TT% U  r   c                   #    SSK Jn  U=(       d9    [        R                  =(       d"    [        R                  =(       d    [        S5      n[        S0 UD6nUR                  SS 5      nS n [        R                  " U=(       d    SUUR                  UR                  S9u  nnn	nUR                  SS 5      n
U
b  [        X5      (       d)  [        R                  SUUR                  =(       d    US	9nOU
nU=(       d$    [        R                  R                  R                   nUb%  UR#                  UUR                  S
S 5      0 0 UEUS9  Ub"  UR$                  R'                  XS9I S h  vN nO!UR$                  R'                  U S9I S h  vN nUR)                  5       n[        R*                  R,                  R/                  US9$ ! [        R                   a     GN9f = f Nx NX7f)Nr   )AsyncOpenAIr\  r?  r  r  r   T)is_asyncr   rI  r  rB  r~  r  r  r   )rT  r  r   r   rD  rC   rD   r   r[   rI  r1  r\  rY  _get_openai_clientr   OPENAIr  r+  r  r  r  r  rB  r  )r  r   r   r>  r  r  rC  r?  _dynamic_api_base_dynamic_api_keyr  _openai_clientr  r  s                 r   amoderationr  x  s     # 	 	,??	,	, *+	  +4V4O7=zzt8  $$+2 3$--#++	
	
 JJx.MJ}$J$J '>&P&P$--B1B 'Q '
 ' .R1E1E1L1L1R1R&88FD) !4 	9 	
 '33:::TT'33:::GG"--/M==55TT% U  E "" < UGsI   A(G%+9G $CG%(G!)!G%
G#;G%GG%GG%#G%c            	        #    [         R                  " 5       n[        U 5      S:  a  U S   OUS   nSUS'   UR                  SS5      nSn [	        [
        /U Q70 UD6n[        R                  " 5       n[	        UR                  U5      n[        X1R                  SS5      S9u  p  n	UR                  SU5      I Sh  vN n
[        U
[        5      (       a  [        S0 U
D6nOX[        U
[        5      (       a  U
nO@[         R                  " U
5      (       a  U
I Sh  vN nOUR                  SU5      I Sh  vN n[        U[        5      (       d  [        S	[!        U5       35      eUbE  [        U["        5      (       d0  Ub-  [%        US
S5      nUc  ['        U5      nUb  UUR(                  S'   U$  N N N~! [*         a  nU=(       d    Sn[-        UUUU US9eSnAff = f7f)U
Calls openai + azure whisper endpoints.

Allows router to load balance between them
r   r   TatranscriptionfileNrI  r   rI  zVInvalid response from transcription provider, expected TranscriptionResponse, but got durationaudio_transcription_durationrT  rU  r   )rZ  r[  r`  r   r   transcriptionrf  rg  rh  r[   ri  r\  rj  rR   rk  r  typer   r  r+   r  rd  r   )rw  r  rS  r   r  r>  rp  rq  rr  ro  rs  r  existing_durationcalculated_durationrt  s                  r   r  r    s     !!#D4y1}DG&/E#F::fd#D6
}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3  '*d C (&@&F#&2+ ++,JK A L + K0  
1=X 3 "
 	

sc   AGA0F5 ;F/<AF5 F1F5 4F35A9F5 .G/F5 1F5 3F5 5
G?GGGr  language)r  r}  srtverbose_jsonvtttimestamp_granularities)wordsegmentr   c                 H	   UR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  S5      nUR                  S	S5      nUR                  S
S5      nUR                  S/ 5        [        U5      nUR                  SS5      nU(       a  [        U5      UR                  S'   Uc  [
        R                  n[        R                  R                  5       n[        U UU
U	S9u  pnn
Ub  UOU	n	[        S*U UUUUUUS.UD6n[        S*0 UD6nUR                  U U0 UUUUS0 S.UEUS9  Sn[        R                  " U [!        U5      S9nUS:X  a  Uc  U
=(       d"    [        R"                  =(       d    [%        S5      n
U=(       d"    [        R&                  =(       d    [%        S5      nUR                  SS5      =(       d    [%        S5      nU	=(       d9    [        R(                  =(       d"    [        R*                  =(       d    [%        S5      n	UUS	'   [,        R/                  U UUUUUUUU
U	UUUUS9nGOUS:X  d  U[        R0                  ;   a  U
=(       d=    [        R"                  =(       d&    [3        S5      =(       d    [3        S5      =(       d    Sn
[        R4                  =(       d    [3        S5      =(       d    S[
        l        U	=(       d9    [        R(                  =(       d"    [        R6                  =(       d    [3        S5      n	[8        R/                  U UUUUUUUUU
U	UUUS9nOUS :X  a5  [:        R/                  U UUUUUUUU
U	[=        U[>        5      (       a  UOSS!9nOUS":X  aW  S#S$K J!n   U " 5       R/                  U UUUUUUb,  [=        U[D        5      (       d  [=        U[F        5      (       a  UOSUUUU
U	UUS%9nOTUbQ  [H        R/                  U UUUUUUb,  [=        U[D        5      (       d  [=        U[F        5      (       a  UOSUUUU
U	U0 UUS&9nUbB  [=        U[J        5      (       d-  [M        US'S5      n!U!c  [O        U5      n"U"b  U"URP                  S('   Uc  [S        S)5      eU$ )+r  r*  Nr  r  r  r  Fr?  r4  r8  tagsr   r  )r   r  r  r   r  r  r>  r*  r  r  r  r  stream_responserB  r  r  rK  rL  r6  rP  rN  )r   
audio_filerC  r  r  r   r   r  rI  r   r2  r6  r   r  rT  rY  rZ  r[  r  r\  )r   r  rC  r  r  r   r   r  r   rI  r   r(  r  r8  nvidia_riva)r   r  rC  r  r  r  r   r  rI  r   r(  sonioxr   )SonioxAudioTranscriptionHandler)r   r  rC  r  r  r  r   r   r   r  rI  r   r  r(  )r   r  rC  r  r  r  r   r   r   r  rI  r   r>  r  r(  r8  r  r  z8Unmapped provider passed in. Unable to get the response.r   )*r   r   r^   r   model_call_detailsrT  DEFAULT_MAX_RETRIESr   r  rR   r[   ra   r    r+  rN   'get_provider_audio_transcription_configr   rI  rC   r2  r   r2  azure_audio_transcriptionsaudio_transcriptionsrS  rc   r   rD  openai_audio_transcriptions nvidia_riva_audio_transcriptionsr\  r   /litellm.llms.soniox.audio_transcription.handlerr  r<   r;   r:  r   r  r+   r  r  )#r   r  r  r  r   r  r  r  r   r   rI  r2  r   r>  r  r*  r  r  r  r  r?  r4  r8  rA  r   r  r  rC  r8  r  r(  r6  r  r  r  s#                                      r   r  r  
  sN   6 jj!2D9O!::&<dCL$/Jzz*d+HZZ 0%8N-3ZZ8M-NJJ5MZZ 0$7N
JJvr=fE 	

8T"  ;>v;..x800]]88:N<L/	=9E "1!<o'G7 	' 7/	 	O -6v644.$8$  $!
 
 0 5 $ 	  ,SS12O
 g%/*ASw//S>BR3S U7..U.AT2U 	  $4d; 
~@

  //  / o.	 	 ,9(-BB+))+#)#. C 
  
	(wBBB  +++,+ +,+ + 	    /0 	 bW__b0B0BbjQaFb.CC+))+#+.) D 
  
	- 4HH+.))+ o/QRR   I 
" 
	(	
 34II+.)) %v{33!&*:;;	  #+!+- J 
0 
	$(==+.)) %v{33!&*:;;	  #+ 3+)1 > 
: Jx$C$C#Hj$?$"<T"B".' ''(FG STTOr   c            	      f  #    [         R                  " 5       n[        U 5      S:  a  U S   OUS   nSUS'   UR                  SS5      n [	        [
        /U Q70 UD6n[        R                  " 5       n[	        UR                  U5      n[        X1R                  SS5      S9u  p  nUR                  SU5      I Sh  vN n	[         R                  " U	5      (       a  U	I Sh  vN n
U
$ UR                  SU5      I Sh  vN n
U
$  NG N$ N
! [         a  nU=(       d    S	n[        UUUU US
9eSnAff = f7f)z
Calls openai tts endpoints.
r   r   Taspeechr>  NrI  r  rT  rU  )rZ  r[  r`  r   r   speechrf  rg  rh  r[   ri  rk  rd  r   r  s               r   r  r    s=    
 !!#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D1	A0D 9D:$D DD $D1%D :D;D  D1D D D 
D.D))D..D1voicer   projectr  speedinstructionsr  r  c                    UR                  SS 5      nUR                  SS 5      nUR                  SS 5      nUR                  SS 5      nUR                  SS 5      nUR                  SS 5      n[        U UUS9u  n nnnUR                  S/ 5        0 nUb  UUS	'   Ub  UUS
'   Ub  UUS'   U
c  [        R                  n
Uc'  [        R
                  =(       d    [        R                  n[        SE0 UD6n[        R                  " U [        R                  " U5      S9nUb  UR                  U UUSUS9u  nn[        [        UR                  S5      5      nUR                  U UUUUUU	S 0 S.UEUS9  S nUS:X  d  U[        R                   ;   GaX  Ub  [#        U[$        5      (       d  [        R&                  " SU US9eU=(       d=    [        R(                  =(       d&    [+        S5      =(       d    [+        S5      =(       d    SnU=(       d9    [        R,                  =(       d"    [        R.                  =(       d    [+        S5      nU=(       d+    [        R0                  =(       d    [+        S5      =(       d    S nU=(       d+    [        R2                  =(       d    [+        S5      =(       d    S nU=(       d    [        R4                  n[6        R9                  U UUUUUUUUU
UUUS9nGO/US:X  Ga  U R;                  S5      (       aY  SSKJn  Uc  [        R&                  " S U US9e[        UU5      n U R@                  " SEU UUUUUU
U[B        U=(       d    SUUS!.UD6nGOUb  [#        U[$        5      (       d  [        R&                  " S"U US9eU=(       d"    [        R(                  =(       d    [+        S#5      nU=(       d"    [        RD                  =(       d    [+        S$5      nU=(       dK    [        R,                  =(       d4    [        RF                  =(       d    [+        S%5      =(       d    [+        S&5      nUR                  S'0 5      R                  S(S 5      =(       d    [+        S)5      n!UR                  S*S 5      n"U(       a  UUS'   [H        R9                  U UUUUUUU!U"UUU
UUUS+9nGOlUS,:X  a  SS-K%J&n#  Uc  U#" 5       n[        U#U5      n$[#        U[$        5      (       a  UOS n%U%b  U%RO                  5       (       d  [        R&                  " S.U US9eU%RO                  5       n%UR                  U#RP                  S 5      n&[#        U&[R        5      (       a  U&UU#RP                  '   U%UU#RT                  '   Ub  UUS/'   Ub  UUS0'   [B        RW                  U UU%U$UUUUU
UUU=(       d    SS19nGOkUS2:X  d  US3:X  a  SS4K,J-n'  []        SE0 UD6n(S5U ;   a%  S6S7K/J0n)  U)Rc                  U UUUUU=(       d    0 UUS89$ Uc  U'" 5       n[        U'U5      n*URe                  U(Rf                  U(Rh                  U(Rj                  S9.5        U*R@                  " SEU UUUUUU
U[B        U=(       d    SU(R(                  S S!.UD6nGOUS5:X  a%  S6S7K/J0n)  U)Rc                  U UUUUU=(       d    0 UUS89$ US::X  aY  SS;K6J7n+  Uc  [        R&                  " S<U US9e[        U+U5      n,U,R@                  " SEU UUUUUU
U[B        U=(       d    SUUS!.UD6nGOUS=:X  a  SS>K8J9n-  Uc  U-" 5       n[        U-U5      n.Ub  UUS/'   Ub  UUS0'   S n/[#        U[$        5      (       a  Un/OV[#        U[R        5      (       aA  UR                  S?5      =(       d)    UR                  S@5      =(       d    UR                  SA5      n/[B        RW                  U UU/U.UUUUU
UUU=(       d    SS19nONUSB:X  aH  SSCK:J;n0  Uc  U0" 5       n[        U0U5      n1U1R@                  " SEU UUUUUU
U[B        U=(       d    SUUS!.UD6nUc)  [y        SDR{                  U[        R|                  5      5      eU$ )FNr  r*  r  r4  r  r8  rH  r  r   r  r  r  F)r   rC  r  r3  r  r?  r  rB  rT  z;'voice' is required to be passed as a string for OpenAI TTSr  rY  rZ  r[  r\  r  OPENAI_PROJECT)r   r  r  rC  r   rI  r   r  r   r   r   r  r8  r  zspeech/r   )AzureAVATextToSpeechConfigz,Azure Speech Service configuration not found)r   r  r  rC  r8  r  r   r4  r:  r  rI  r   z:'voice' is required to be passed as a string for Azure TTSrK  rL  rM  rN  rO  r6  rP  r.  )r   r  r  rC  r   rI  r2  r6  r.  r   r   r   r   r  r  
elevenlabs)ElevenLabsTextToSpeechConfigzA'voice' must resolve to an ElevenLabs voice id for ElevenLabs TTSrI  r   )r   r  r  text_to_speech_provider_configtext_to_speech_optional_paramsr>  r  r  r   r4  r   rs  r  r  )VertexAITextToSpeechConfigr  rp   )#speech_to_completion_bridge_handler)r   r  r  rC  r  r  r  r>  )r  r  r  runwayml)RunwayMLTextToSpeechConfigz/RunwayML Text-to-Speech configuration not foundrr  )MinimaxTextToSpeechConfigvoice_idrb  name	aws_polly)AWSPollyTextToSpeechConfigz@Unable to map the custom llm provider={} to a known provider={}.r   )?r   r[   r   r   r  r   rT  r  r    rN   "get_provider_text_to_speech_configr   map_openai_paramsr   r]  r+  rS  r\  r   r1  rI  rc   r   rD  r   r  r  rY  audio_speechr  0litellm.llms.azure.text_to_speech.transformationr  dispatch_text_to_speechr:  r2  r2  r8  5litellm.llms.elevenlabs.text_to_speech.transformationr  r#  ELEVENLABS_QUERY_PARAMS_KEYrj  ELEVENLABS_VOICE_ID_KEYtext_to_speech_handler4litellm.llms.vertex_ai.text_to_speech.transformationr  rD   4endpoints.speech.speech_to_completion_bridge.handlerr  r  r  r  r  r  3litellm.llms.runwayml.text_to_speech.transformationr  2litellm.llms.minimax.text_to_speech.transformationr  4litellm.llms.aws_polly.text_to_speech.transformationr  rd  r  provider_list)2r   r  r  r   rI  r2  r   r  r   r  r   r   r  r  r   r  r>  r  r  r  r*  r  r4  r  r8  r  rC  r8  r  r  r  r  azure_configr6  r.  r  elevenlabs_configr  query_paramsr  generic_optional_paramsr  vertex_configr  runwayml_configr  minimax_config	voice_strr  aws_polly_configs2                                                     r   r  r  =  s	   , ::fd#D%+ZZ0A4%HO!::&<dCJJ5ML$/JZZ 0$7N<L)<x=9E JJvrO"-<)*#( *6'))))GV-G-G,6v6 	@@))*=>	
 # &1!?!Q!Q+ "R "
 &*6::&;<&K ,,'.$8$  $!
 
 0 - & 		  	x''"E"EE=E3!7!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" 
	,	
 *1-I-K* (*H
 'uc2258>>#3#3))[0 
 >>#zz(DDd
 lD))   ,HH
  	8PPQ .6
+-4	*(??+<+: 3.#'& @ 
 
	+/BFV/V	
 #7"@"@ u 7== /22'$7 > 	 	 *1-G-I* 79WX 	"""9"H"H#:#J#J&=&P&P	
 !88 
+ 3#!"7$u,55
 
 
	(	
 399+.Mr# 3 : 	
 		
 

	*	

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

 *1-F-H*79WX.6
+-4	* $(	eS!!It$$		*-U4UEIIfDUI(??+9+: 3.#'& @ 
 
	+	

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

 Or   model_paramsr  c                 B  #    SSK Jn  SSKJn  U" 5       nU" S/ SS[	        [
        R                  " 5       5      [        R                  R                  5       [	        [
        R                  " 5       5      SS9nXpS	'   UR                  U S
9n  U R                  SS5      nUc  [        S5      eU[        R                  ;   a%  Uc"  [        R                  U   R                  S5      nU R                  SS5      n	U R                  SS5      n
U R                  SS5      n[        UU	U
US9u  p  nU[        R                  ;   a%  Uc"  [        R                  U   R                  S5      nSS0U S'   U=(       d    SnSU;   a  UR                  UUU US9I Sh  vN $ UR!                  UUU UUS9nX;   aB  X   " 5       I Sh  vN n[#        US0 5      R                  S0 5      =(       d    0 n[%        U5      $ [        SU S35      e Nm NF! [         a  n['        [(        R*                  " 5       5      n[-        U[        5      (       a  USS nUc  S[	        U5       SU 3US .s SnA$ [	        U5      S!-   U-   nUR.                  R                  S"5      nUUUS#.s SnA$ SnAff = f7f)$z
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   )get_litellm_logging_class)HealthCheckHelpersr  Fr   T)r   r   r  	call_typer*  
start_timefunction_idlog_raw_request_responser?  )r  r   Nzmodel not setr  r>  rI  r   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  zerror:zz. Missing `mode`. Set the `mode` for the model - https://docs.litellm.ai/docs/proxy/health#embedding-models  
stacktrace: )error	exceptionz
stack trace: raw_request_typed_dict)r  r  r  ))litellm.litellm_core_utils.cached_importsr  /litellm.litellm_core_utils.health_check_helpersr  r   r   uuid4datetimenow;_update_model_params_with_health_check_tracking_informationr   rd  r   
model_costr[   ahealth_check_wildcard_modelsget_mode_handlersr  r1   r   	traceback
format_excr\  r  )r  r  r  r  r  r  r$   r?  r   custom_llm_provider_from_paramsapi_base_from_paramsapi_key_from_paramsr>  ro  mode_handlersr  _response_headersrt  stack_traceerror_to_returnr  s                        r   ahealth_checkr    s      TR ()G "DJJL)$$((*

%!%	 +>&'VV% 	W 	
 I
+//>=O,,G&&&4<%%e,008D*6*:*:;PRV*W'+//
DA*..y$?+; ?)'	,
(Aq G&&&4<%%e,008D !
W ~v%<+II$7)$7	 J    +<< 3% = 
  +133I 	#3R8<<YKQr  11BCCvfg /  4  
$Y%9%9%;<k3''%et,K<!#a&  *e  fq  er  s 
 a&#44{B!4!G!G!K!K$"

 %&<
 	
#
sz   BJDH G>H J$H 9H :4H .J/H  H 
JAJJJ 1JJJJJc                      [         R                  " U 5        [        R                  (       a  [	        U 5        g g ! [
         a     g f = fr   )rq   ra  r   set_verboseprintrd  )print_statements    r   rv  rv    s=    _-/"  s   6: 
AAc                      [         R                  b&  [        [         R                  5      n[        S0 U DUD6$ [	        S5      e)Nz`No config path set, please set a config path using `litellm.config_path = 'path/to/config.json'`r   )r   config_pathrg   r   r  )r  config_argss     r   config_completionr	    sA    &&w':':;2F2k22n
 	
r   chunksc           
         U S   S   nU S   S   nU S   S   nU S   S   nU S   R                  SS 5      nU S   S   S   S	   nU S   S   S   S
   nUUUUUS SUUS./S S S S.S.n	/ n
U  H_  nUS   nU HQ  nUc  M  [        US5      (       d  M  UR                  S5      c  M/  UR                  S5      nU
R                  U5        MS     Ma     SR                  U
5      nXS   S   S'   [	        U5      S:  a  O  [        XQS9U	S   S'   [        UUSS9U	S   S'   U	S   S   U	S   S   -   U	S   S'   [        S0 U	D6$ ! [         a    [        S5        SU	S   S'    NRf = f)Nr   rb  rK  r  r   system_fingerprintr  finish_reasonr%  )r}  r  r%  r  r  )rb  rK  r  r   r  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  rF  r`  rj   rd  rv  rP   )r
  r   rb  rK  r  r   r  r  r%  r  content_listchunkr  choicer  combined_contents                   r   $stream_chunk_builder_text_completionr    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|, &6Y6"
q /-:.
/* .;".HW)* 	/*Xg->?R-SS Wn% "-H-- 	/ 	IJ-./*	/s   :D< <EEr  r$   c                     U c  [         R                  " SSSSS9eU (       d  g [        X5      nUR                  n [	        U 5      S:X  a  g [        S U  5       S 5      nUb8  [        US   S   [         R                  R                  5      (       a	  [        XS9$ U S   S	   nUR                  U 5      n/ n	S
n
U  GH  n[	        US   5      S:X  a  M  US   S   n[        U[        5      (       a  UR                  S0 5      O[        US0 5      n[        U[        5      (       a  UnO?[        US5      (       a,  [        [         ["        [$        4   UR'                  5       5      nO0 nUR                  S5      c~  UR                  S5      cl  UR                  S5      cZ  UR                  S5      cH  UR                  S5      c6  UR                  S5      c$  UR                  S5      c  UR                  S5      b  Sn
  OIUR                  S5      n[        U["        5      (       d  GMh  U(       d  GMr  U	R)                  U5        GM     U
(       Ga(  U	(       a  SR+                  U	5      US   S   S   S'   [-        U5      nUR/                  U UUUSS9n[1        USU5        [3        U 5       H  n[        U[        5      (       a  UR                  S5      nO[        USS 5      n[        U[        5      (       d  MN  SU;   d  MV  UR4                  R7                  S0 5      R9                  US   5          O   [         R:                  (       a  Ub  [1        USUR=                  US95        UR?                  XU5        U$ U  Vs/ s H;  n[	        US   5      S:  d  M  SUS   S   S   ;   d  M(  US   S   S   S   c  M9  UPM=     nn[	        U5      S:  aP  URA                  U5      n[        [B        URD                  S   5      nS URF                  l$        UURF                  l%        U  Vs/ s H;  n[	        US   5      S:  d  M  SUS   S   S   ;   d  M(  US   S   S   S   c  M9  UPM=     nn[	        U5      S:  aN  [        [B        URD                  S   5      nS URF                  l$        URM                  U5      URF                  l'        U  Vs/ s H;  n[	        US   5      S:  d  M  SUS   S   S   ;   d  M(  US   S   S   S   c  M9  UPM=     nn[	        U5      S:  a  URQ                  U5      US   S   S   S'   U  Vs/ s H;  n[	        US   5      S:  d  M  SUS   S   S   ;   d  M(  US   S   S   S   c  M9  UPM=     nn[	        U5      S:  a  URS                  U5      US   S   S   S'   U  Vs/ s H;  n[	        US   5      S:  d  M  SUS   S   S   ;   d  M(  US   S   S   S   c  M9  UPM=     nn[	        U5      S:  a  URU                  U5      US   S   S   S'   U  Vs/ s H;  n[	        US   5      S:  d  M  SUS   S   S   ;   d  M(  US   S   S   S   c  M9  UPM=     nn[	        U5      S:  a6  / nU H   nURW                  US   S   S   S   5        M"     UUS   S   S   S'   U  Vs/ s H;  n[	        US   5      S:  d  M  SUS   S   S   ;   d  M(  US   S   S   S   c  M9  UPM=     nn[	        U5      S:  a=  [        [B        URD                  S   5      nURY                  U5      URF                  l-        U  Vs/ s H;  n[	        US   5      S:  d  M  SUS   S   S   ;   d  M(  US   S   S   S   c  M9  UPM=     nn[	        U5      S:  a6  / nU H   nURW                  US   S   S   S   5        M"     UUS   S   S   S'   U  Vs/ s H;  n[	        US   5      S:  d  M  SUS   S   S   ;   d  M(  US   S   S   S   c  M9  UPM=     n n[	        U 5      S:  a  0 n!U  H  nUS   S   S   S   n"[        U"[        5      (       d  M(  U"R]                  5        HL  u  n#n$U#U!;  a  U$U!U#'   M  [        U$[^        5      (       a  [        U!U#   [^        5      (       a  U$U!U#'   MG  U$U!U#'   MN     M     U!(       a.  [        [B        URD                  S   5      nU!URF                  l0        [-        U5      nURc                  U5      n%UR/                  U UUUU%S9n[1        USU5        [3        U 5       H  n[        U[        5      (       a  UR                  S5      nO[        USS 5      n[        U[        5      (       d  MN  SU;   d  MV  UR4                  R7                  S0 5      R9                  US   5          O   [         R:                  (       a  Ub  [1        USUR=                  US95        UR?                  XU5        U$ s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf ! [d         aJ  n&[f        Rh                  " SRk                  [#        U&5      5      5        [         R                  " SSSSS9eS n&A&ff = f)Nr|  z=Error building chunks for logging/streaming usage calculationr  )r{  r  r~  r   r   c              3   <   #    U  H  oS    (       d  M  Uv   M     g7f)r  Nr   )r	  cs     r   r
  'stream_chunk_builder.<locals>.<genexpr>  s     (KFq	lFs   	r  )r
  r   r   Tdeltar  r  r  reasoning_contentthinking_blocksannotationsr  imagesprovider_specific_fieldsFr  r  )r
  r   completion_outputr   reasoning_tokensr  r  cost)rZ  zAlitellm.main.py::stream_chunk_builder() - Exception occurred - {})6r   r  r   r
  r`  nextr\  r  rO   r  build_base_responserj  r   r  r%  r   r   r   r
   r  r  rF  r5   calculate_usager  reversedr  r  r  include_cost_in_streaming_usage_response_cost_calculator+apply_provider_assembled_streaming_metadataget_combined_tool_contentrI   r  r  r  r  "get_combined_function_call_contentr  get_combined_contentget_combined_thinking_contentget_combined_reasoning_contentextendget_combined_audio_contentr  r  rE  r  count_reasoning_tokensrd  rq   r  r  )'r
  r   r  end_timer  	processorfirst_chunk_with_choicesr   r  simple_content_partsis_simple_text_streamr  r  	delta_objr  r  r  r  hiddentool_call_chunkstool_calls_listr  function_call_chunkscontent_chunksr  reasoning_chunksannotation_chunksall_annotationsacaudio_chunksimage_chunks
all_imagesprovider_specific_chunkscombined_provider_fieldsfieldsr  r  r   rt  s'                                          r   stream_chunk_builderrF    s   j
>""W	  "64	!! v;!#'(KF(KT#R #/J$Y/2GMM4M4M5
 5
 8  q	'"008 +- $E5#$)9%a(F fd++ 

7B'VWb1 
 )T**!L11T#s(^Y-A-A-CD 		,'399_-99901=99./;99]+799W%199X&29978D(-%ii	*G'3''GG$++G4A D !#?Aww(@#A&y1)< !@ I--"3!!" . E Hgu- "&)eT**"YY'78F$U,<dCFfd++0Jf0T++662BfV$>?@ * 66;;R999J
 AA+ O  
5#$q(  i 0 3G <<  i #G,\:	  	 
  1$'AABRSO7H$4$4Q$78G&*GOO#)8GOO&   
5#$q(   5#3A#6w#??  i #G,_=	  	  
 #$q(7H$4$4Q$78G&*GOO#<<=QR OO)  
5#$q(  U9-a099  i #G,Y7	  	 
 ~"..~> Y"9-i8  
5#$q(  "U9%5a%8%AA  i #G,->?	  	 
 !#77H Y"9-.?@  
5#$q(  $uY'7':7'CC  i #G,-@A	  	 
  1$889IJ Y"9-.AB  
5#$q(  y!1!!4W!==  i #G,];	  	 
  !A% %'O'&&r)}Q'7'@'OP (?NHY"9-m<  
5#$q(  5+A.w77  i #G,W5	  	 
 |q 7H$4$4Q$78G$-$H$H$VGOO!  
5#$q(  E),Q/88  i #G,X6	  	 
 |q J%!!%	"21"5g">x"HI &:DHY"9-h7  $
5#$q(  +eI.>q.A'.JJ  i #G,-GH	  	! $
 '(1,79$1y)!,W56PQfd++&,lln
U&>><A4S9't444S94: : =B4S9<A4S9 '5 2 (w(8(8(;<;S8;HE$;;HE))/- * 
 	'5) f%E%&&#34 (8$?&$'',F&,P''22.& :;< & 22{7Nv{DDHDU 	==k	
 i
 




"

"$
B  
  OVVA	

 S	
 	

sx  !h$ &h$ Ah$ Fh$  h$ *Ch$ 0h$ 8A7h$ 0h$ 4g7g7g70g76A%h$ g<5g<g<g<A#h$  hh+h<h2h$ 4hhh0h62h$ (hhh$h*2h$ h6hhhAh$ )hhh%h+Ah$ =hh(h9h?Ah$ 
h$h5hh9h$ 	D*h$ 7h$ ?A7h$ 7-h$ $
i8.Ai33i8systemr%   c           
      L  #    SSK Jn  SSKJnJn  SSKJn	  U" U UUS9u  n
nnnUc  UnUc  UnSU UUS.0n U" U5      nU	R                  " XS	9nUb\  UR                  5       nUbI  UR                  U5      (       a3  UR                  U
USUU UUS
9I Sh  vN nUb  UR                  (       d  U$ U=(       d    / nU(       a  U(       a	  SUS./U-   n[        R                   " U UUS9nU" UU U
SS9$  N[! [         a&  n[        R                  " SU  SU 35         SnANnSnAff = f7f)a  
Count tokens for a given model and messages using provider-specific APIs.

Routes to the appropriate provider's token counting API (OpenAI, Anthropic, etc.)
for exact token counts. Falls back to local tiktoken-based counting for unsupported providers.

Args:
    model: The model identifier (e.g., "openai/gpt-4o", "anthropic/claude-3-5-sonnet-20241022")
    messages: The messages to count tokens for (standard chat format)
    tools: Optional tools/functions to include in token count
    system: Optional system message/instructions
    api_key: Optional API key (falls back to environment variable)
    api_base: Optional custom API base URL

Returns:
    TokenCountResponse with total_tokens and metadata
r   )r[   )r   r%   )rN   )r   rI  r   Nr  )r   r   rI  r  )model_to_user   contents
deploymentrequest_modelr"  rG  z)Provider token counting failed for model=z, falling back to local: rG  rS  )r   r   r"  local_tokenizer)r  rL  
model_usedtokenizer_type)1litellm.litellm_core_utils.get_llm_provider_logicr[   litellm.types.utilsr   r%   litellm.utilsrN   get_provider_model_infoget_token_countershould_use_token_counting_apicount_tokensr  rd  rq   ra  r   rj   )r   r   r"  rG  r   rI  r[   r   r%   rN   resolved_modelr>  r  dynamic_api_baserK  llm_provider_enumprovider_model_infotoken_counter_instancerZ  rt  fallback_messageslocal_counts                         r   acount_tokensr^    s    2 SD3 		 !# 	 
"J
()<=3KK
 *%8%J%J%L"&2*HH'   6BB!/%!)"'!  C    %fll!M !B#&.6BCFWW''"K  !(	 5  
7w>WXYWZ[	
 	

sB   4D$AC1 C/C1 -AD$/C1 1
D!;DD$D!!D$_encoding_cachec                  ^    [         c!  SSKn U R                  [           R                  q [         $ )z*Get encoding, loading it lazily if needed.Nr   )r_  sysmodulesr   rG  )ra  s    r   r-  r-    s)      ++h/88r   r  c                     U S:X  a4  SSK Jn  U" 5       nSSKnX#R                  [           R
                  S'   UqU$ [        S[        < SU < 35      e)z#Lazy import handler for main modulerG  r   )_get_default_encodingNzmodule z has no attribute )litellm._lazy_importsrd  ra  rb  r   __dict__r_  AttributeError)r  rd  	_encodingra  s       r   __getattr__ri    sV    z 	@)+	5>H&&z2#
78,.@I
JJr   r   )FNr  NFNNN)NNNN)NNNNNNNNNNNNNNNNNNNNN)NN)NNN)NNNNNNr   NNNNN)NNNNNNNNNNNNNNNN)r   NN)NNNNN(  rZ  rf  r  rz  r  r_  randomra  r  r  r]  r   rT  r   r   r   r  r   	functoolsr   typingr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   litellm._loggingr   litellm._uuidr   aiohttpr   dotenvr  rT  rU  pydanticr   typing_extensionsr   r   r   rR  r   r    r!   r"   r#   *litellm.litellm_core_utils.litellm_loggingr$   rQ  r%   litellm.constantsr&   r'   litellm.exceptionsr(   "litellm.integrations.custom_loggerr)   #litellm.litellm_core_utils.asyncifyr*   ,litellm.litellm_core_utils.audio_utils.utilsr+   r,   -litellm.litellm_core_utils.completion_timeoutr-   -litellm.litellm_core_utils.get_litellm_paramsr.   %litellm.litellm_core_utils.dd_tracingr/   8litellm.litellm_core_utils.get_provider_specific_headersr0   -litellm.litellm_core_utils.health_check_utilsr1   r2   r]  )litellm.litellm_core_utils.mock_functionsr3   r4   8litellm.litellm_core_utils.prompt_templates.common_utilsr5   litellm.llms.base_llmr6   r7   )litellm.llms.base_llm.base_model_iteratorr8   !litellm.llms.bedrock.common_utilsr9    litellm.llms.cohere.common_utilsr:   &litellm.llms.custom_httpx.http_handlerr;   r<   -litellm.llms.openai.chat.gpt_5_transformationr=   $litellm.llms.openai_like.json_loaderr>   #litellm.llms.vertex_ai.common_utilsr?   r@   litellm.realtime_api.mainrA   litellm.secret_managers.mainrB   rC   litellm.types.routerrD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   _loggingrq   caching.cachingrr   rs   rt   litellm_core_utils.core_helpersru   !litellm_core_utils.fallback_utilsrv   rw   0litellm_core_utils.prompt_templates.common_utilsrx   ry   rz   +litellm_core_utils.prompt_templates.factoryr{   r|   r}   r~   r   r   0litellm_core_utils.streaming_chunk_builder_utilsr   llms.anthropic.chatr   llms.azure.audio_transcriptionsr   llms.azure.azurer   r    llms.azure.chat.o_series_handlerr   llms.azure.completion.handlerr   llms.azure_ai.anthropic.handlerr   llms.azure_ai.embedr   llms.bedrock.chatr   r   llms.bedrock.embed.embeddingr   llms.bedrock.image_edit.handlerr   +llms.bedrock.image_generation.image_handlerr   llms.bytez.chat.transformationr   !llms.clarifai.chat.transformationr   !llms.codestral.completion.handlerr   llms.cohere.embedr   cohere_embed!llms.custom_httpx.aiohttp_handlerr   "llms.custom_httpx.llm_http_handlerr   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   rc  llms.oci.chat.transformationr   llms.ollama.completionr  llms.oobabooga.chatr   llms.openai.completion.handlerr   $llms.openai.image_variations.handlerr   llms.openai.openair   ,llms.nvidia_riva.audio_transcription.handlerr   3llms.nvidia_riva.audio_transcription.transformationr   "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.sap.chat.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   ,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   rY  rG  r  r  openai_image_variationsgroq_chat_completionsrO  sap_gen_ai_hub_embr5  ra  rB  r8  r6  r9  r  r'  r|  r}  r  r(  bedrock_image_generationbedrock_image_editrq  r/  r,  vertex_image_generationr*  rs  rv  rx  r  r  r&  rh  r$  r:  rP  sagemaker_chat_completionr  heroku_transformationoci_transformationr  r  r   rd  rj  MOCK_RESPONSE_TYPEr   r   r   r   wrapr   r   r  rE  r   ry  r  r  r  rY  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rp  ru  rx  r|  r  r  r  r  r  r  r  rv  r	  r  rF  r^  r_  __annotations__r-  ri  r   r   r   <module>r     s;        	  
    H H      & , %      &    B6 6 ; B L N 8 T H ? < P J E = H 5 ( ( ( ( ( ( ( ( ( ( (T % F F ; 
  M 8 D N I > I 1 = : = O ; = F 6 D B > E 8 : 6 = D A P 7 5 * @ N 4  I H @ @ J J A A = @ @ P = = ; ; 8 8 0 0 O O    P O O O H H N N 9 9 9 6 6 8 8	 	 	 	 	
 
 
 
 
 
 /0 .0 68 #?#A  68 *, "7"9 *, %' 46 #?#A  ,. 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;?;?0448eO
O
 O
 ~	O

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

 %T7
 E?T7
 }T7
 TNT7
 TNT7
 $C=T7
 T7
 456T7
 =>T7
 ,-T7
  uo!T7
"  #T7
$ %T7
& 3-'T7
* NO+T7
0  7891T7
2 eD$y/$9:;3T7
4 3-5T7
6 D>7T7
8 %T	*+9T7
: tn;T7
< 3-=T7
> "$?T7
@ !!78AT7
B +34.CT7
F D>GT7
H  }IT7
J 3-KT7
N ~OT7
P C=QT7
T smUT7
V #WT7
X c]YT7
Z [T7
^ -._T7
b _-cT7
f $,D>gT7
j =--.kT7
  T7
nn7@=<7D=@ <
): <
 <
D 
  $%)"!%!"! 	
 c] sm # c] sm  3-$ %( sC**+) 
2 
  $%)"!%!"!$ "'% 	
 c] sm # c] sm  3-$ %( ) 
4   $%)"!%!"!P
 	P

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

*t
 SMt
 D>	t
r
 .2G.G.$TNG.G.X  $'+q
q
tnq

 )$q
 eM#99:;q
r	 04,0 !"fftDcN+,f Dc3h()f SM	f
 c]f smf fT "&# %Kc Kc Kr   