Ë
    uPêjgw ã            Z       ó
(  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZmZmZmZmZ d dlmZ d dlmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d d	l&m'Z' d d
l(m)Z) erd dl*m+Z+ d dl,Z,d dl-Z-d dl.Z.d dl/Z/d dl0m1Z1 d dl2m3Z3 d dl4Z4d dl4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z; erd dl<m=Z= d dl>m?Z? d dl@mAZAmBZB d dlCmDZD d dlEmFZF d dlGmHZH d dlImJZJmKZK d dlLmMZM d dlNmOZO d dlPmQZQ d dlRmSZSmTZT d dlUmVZV d dlWmXZXmYZY d dl<m=ZZ d dl[m\Z\m]Z] d dl^m_Z_ d dl`maZa d d lbmcZcmdZd d d!lemfZf d d"lgmhZh d d#limjZj d d$lkmlZlmmZm d d%lnmoZo d d&lpmqZq d d'lrmsZsmtZt d d(lumvZv d d)lwmxZxmyZy d d*lzm{Z{m|Z| d d+l}m~Z~ d d,l>mZm€Z€m�Z�m‚Z‚ d d-l6mƒZƒm„Z„m…Z…m†Z†m‡Z‡mˆZˆm‰Z‰mŠZŠm‹Z‹mŒZŒm�Z�mŽZŽm�Z�m�Z�m‘Z‘m’Z’m“Z“m”Z”m•Z•m–Z–m—Z—m˜Z˜m™Z™mšZšm›Z›mœZœm�Z�mžZžmŸZŸm Z m¡Z¡m¢Z¢m£Z£m¤Z¤m¥Z¥m¦Z¦m§Z§m¨Z¨m©Z© d.d/lªm«Z« d.d0l¬m­Z­m®Z®m¯Z¯ d.d1l°m±Z± d.d2l²m³Z³m´Z´ d.d3lµm¶Z¶m·Z·m¸Z¸ d.d4l¹mºZºm»Z»m¼Z¼m½Z½m¾Z¾m¿Z¿ d.d5lÀmÁZÁ d.d6lÂmÃZÃ d.d7lÄmÅZÅ d.d8lÆmÇZÇmÈZÈ d.d9lÉmÊZÊ d.d:lËmÌZÌ d.d;lÍmÎZÎ d.d<lÏmÐZÐ d.d=lÑmÒZÒ d.d>lÓmÔZÔ d.d?lÕmÖZÖ d.d@l×mØZØ d.dAlÙmÚZÚ d.dBlÛmÜZÜ d.dClÝmÞZÞ d.dDlßmàZá d.dElâmãZã d.dFlämåZå d.dGlæmçZçmèZè d.dHlémêZê d.dIlëmìZìmíZí d.dJlîmïZï d.dKlðmñZñ d.dLlòmóZó d.dMlômõZõ d.dNlöm÷Z÷ d.dOlømùZù d.dPlúmûZü d.dQlýmþZþ d.dRlÿ�m �Z  d.dS�l�m�Z d.dD�lmà�Z d.dT�l�m�Z d.dU�l�m�Z d.dV�l	�m
�Z
 d.dW�l�m�Z d.dX�l�m�Z d.dY�l�m�Z d.dZ�l�m�Z d.d[�l�m�Z d.dD�lmà�Z d.d\�l�m�Z d.dP�lmû�Z d.d]�l�m�Z d.d^�l�m�Z d.d_�l�m �Z  d.d`�l!�m"�Z" d.da�l#�m$�Z$ d.db�l%�m&�Z& d.dc�l'�m(�Z( d.dd�l)�m*�Z* d.de�l+�m,�Z, d.df�l-�m.�Z. d.dg�l/�m0�Z0 d.dh�l1�m2�Z2 d.dD�l3mà�Z4 d.di�l5�m6�Z6 d.dj�l7�m8�Z8 d.dk�l9�m:�Z: d.dl�l;�m<�Z<�m=�Z=�m>�Z>�m?�Z?�m@�Z@�mA�ZA�mB�ZB�mC�ZC d.dm�lD�mE�ZE�mF�ZF�mG�ZG�mH�ZH�mI�ZI�mJ�ZJ�mK�ZK�mL�ZL�mM�ZM  �e«       �ZN �e«       �ZOe�ePdn<    �e«       �ZQe�ePdo<    eþ«       �ZRe�ePdp<    �e
«       �ZS eó«       �ZTe�ePdq<    �e «       �ZUe�ePdr<    �e «       �ZVe�ePds<    eÐ«       �ZWe�ePdt<    eÃ«       �ZXe�ePdu<    eÎ«       �ZYe�ePdv<    eÇ«       �ZZ eÊ«       �Z[e�ePdw<    eÌ«       �Z\e�ePdx<    eÅ«       �Z]e�ePdy<    e÷«       �Z^e�ePdz<    �e«       �Z_e�ePd{<    eÞ«       �Z`e�ePd|<    eÒ«       �Zae�ePd}<    eÔ«       �Zbe�ePd~<    eØ«       �Zc eÖ«       �Zd �e$«       �Zee�ePd<    �e.«       �Zfe�ePd€<    �e*«       �Zge�ePd�<    �e(«       �Zhe�ePd‚<    �e&«       �Zie�ePdƒ<    �e,«       �Zje�ePd„<    �e0«       �Zke�ePd…<    �e2«       �Zle�ePd†<    eï«       �Zme�ePd‡<    �e«       �Zne�ePdˆ<    �e6«       �Zoe�ePd‰<    �e«       �Zpe�ePdŠ<    �e«       �Zqe�ePd‹<    eê«       �Zre�ePdŒ<    eå«       �Zs eã«       �Zt �e«       �Zue�ePd�<    eÚ«       �Zve�ePdŽ<    eõ«       �Zwe�ePd�<    �e«       �Zxe�ePd�<    �e«       �Zye�ePd‘<    eù«       �Zze�ePd’<   �e{�e|z  �e}z  e‡z  e€z  �Z~ G d“„ d”«      �Z G d•„ d–«      �Z€ G d—„ d˜«      �Z� G d™„ dš«      �Z‚ eQ�j                  «       e5g ddddddddddddddddddddddddddddddddddddddddddf+d›�e{dœ�e„d��e„dz  dž�e{dz  dŸ�e…dz  d �e…dz  d¡�e…dz  d¢�e†dz  d£�e‡dz  d¤�e}dz  d¥�e†dz  d¦�e†dz  d§�e„�e>   dz  d¨�e?dz  d©�e=dz  dª�e…dz  d«�e…dz  d¬�e}dz  d­�e{dz  d®�e}�eˆe1   z  dz  d¯�e†dz  d°�e„dz  d±�e{�e}z  dz  d²�e‡dz  d³�e‡dz  d´�e†dz  dµe d¶   dz  d·e d¸   dz  d¹�e{dz  dº�e{dz  d»�e‡dz  d¼�e{dz  d½�e{dz  d¾�e{dz  d¿�e{dz  dÀ�e„dz  dÁ�e}dz  dÂ�e:dz  dÃ�eCdz  dÄ�e‡dz  dÅe!dÆ   dÇ�e‡dz  dÈe‡e„z  fVdÉ„«       «       �Z‰dÊe�eŠ�eŠe‡e„z  f   dÈe‡e„z  fdË„�Z‹dÌe�e{�eŠf   dÈe‡fdÍ„�ZŒdÌe�e{�eŠf   dÈeŒfdÎ„�Z�dÏ„ �ZŽ	 �dƒdÐ�e{�e|z  d›�e{dÑ�e{dz  fdÒ„�Z�dÓ�e‡dz  dŸ�e…�e{z  e-�j                   z  dz  d›�e{fdÔ„�Z‘dÓ�e‡dz  dŸ�e…�e{z  e-�j                   z  dz  d›�e{fdÕ„�Z’dŸ�e…�e{z  e-�j                   z  fdÖ„�Z“dŸ�e…�e{z  e-�j                   z  fd×„�Z”	 	 	 	 	 	 	 	 �d„d›�e{dœ�e„d£�e‡dz  d¢�e†dz  dÐ�e~dz  dÙ�e„dz  dÓ�e‡dz  dŸ�e…�e{z  e-�j                   z  dz  fdÚ„�Z•dÛ�Z–e�ePdÜ<   dÝ�e{dz  dÈ�e{fdÞ„�Z—	 	 	 	 	 �d…d›�e{dÑ�e{dÃ�eCdz  d°ee�e{�eŠf      dz  dµ�e{e�e{�eŠf   z  dz  dß�eŠdz  dÝ�e{dz  dÈ�e˜�e}�e{f   fdà„�Z™dÑ�e{dz  d›�e{dÈ�e‡fdá„�Zšdâ�e}dÈ�e}fdã„�Z›d°�e„�e}   dz  dÈ�e„�e}   dz  fdä„�Zœ G då„ dæe"«      �Z�dç�e�dÈe�e{�e{f   fdè„�Zždée�e{�eŠf   dÈe�e˜�e{�eŠf      fdê„�ZŸdëe�e{�eŠf   dÈe�e{�eŠf   fdì„�Z 	 �dƒdÑ�e{dí�e}dî�e}dz  dÈ�e}fdï„�Z¡dí�e}dÈ�e{dz  fdð„�Z¢d›�e{dÑ�e{dí�e}dî�e}dz  dÈdf
dñ„�Z£dòe{dÈe�e{�eŠf   dz  fdó„�Z¤dòe{dÈemelz  dz  fdô„�Z¥dòe{dÈe.�jL                  e.�jN                  z  emz  elz  dz  fdõ„�Z¨dòe{dÈe.�jR                  e.�jT                  z  dz  fdö„�Z«dòe{dÈe|fd÷„�Z¬dòe{dÈe|fdø„�Z­dòe{dÈe|fdù„�Z®dòe{dÈe|fdú„�Z¯dòe{dÈe|fdû„�Z°dòe{dÈe|fdü„�Z±dòe{dÈe|fdý„�Z²dòe{dÈe|fdþ„�Z³dòe{dÈe|fdÿ„�Z´dòe{dÈe|f�d „�Zµdòe{dÈe|f�d„�Z¶dòe{dÈe|f�d„�Z·dòe{dÈe|f�d„�Z¸dòe{dÈe|f�d„�Z¹dòe{dÈe|f�d„�Zºdòe{dÈe|f�d„�Z»dòe{dÈe|f�d„�Z¼dòe{dÈe|f�d„�Z½dòe{dÈe|f�d	„�Z¾dòe{dÈe|f�d
„�Z¿dòe{dÈe|f�d„�ZÀdòe{dÈe|f�d„�ZÁdòe{dÈe|f�d„�ZÂdòe{dÈe|f�d„�ZÃdòe{dÈe|f�d„�ZÄdòe{dÈe|f�d„�ZÅdòe{dÈe|f�d„�ZÆdòe{dÈe|f�d„�ZÇdòe{dÈe|f�d„�ZÈdòe{dÈe|f�d„�ZÉdòe{dÈe|f�d„�ZÊdòe{dÈe|f�d„�ZËdòe{dÈe|f�d„�ZÌdòe{dÈe|f�d„�ZÍdòe{dÈe|f�d„�ZÎdòe{dÈe|f�d„�ZÏdòe{dÈe|f�d„�ZÐdòe{dÈe|f�d„�ZÑdòe{dÈe|f�d„�ZÒdòe{dÈe|f�d„�ZÓdòe{dÈe|f�d„�ZÔdòe{dÈe|f�d „�ZÕdòe{dÈe|f�d!„�ZÖdòe{dÈe|f�d"„�Z×dòe{dÈe|f�d#„�ZØdòe{dÈe|f�d$„�ZÙdòe{dÈe|f�d%„�ZÚdòe{dÈe|f�d&„�ZÛdòe{dÈe|f�d'„�ZÜdòe{dÈe|f�d(„�ZÝdòe{dÈe|f�d)„�ZÞdòe{dÈe|f�d*„�Zßdòe{dÈe|f�d+„�Zàdòe{dÈe|f�d,„�Zádòe{dÈe|f�d-„�Zâdòe{dÈe|f�d.„�Zãdòe{dÈe|f�d/„�Zädòe{dÈe|f�d0„�Zådòe{dÈe|f�d1„�Zæ�d2e-�jÎ                  dz  dÈ�e{f�d3„�Zèdòe{dÈe|f�d4„�Zédòe{dÈe|f�d5„�Zêdòe{dÈe|f�d6„�Zëdòe{dÈe|f�d7„�Zì eQ�j                  «       e5g ddddddddddddddddddddddddddddddddddddddddddf+d›�e{dœ�e„dŸ�e…�e{z  e-�j                   z  dz  d �e…dz  d¡�e…dz  d¢�e†dz  d£�e‡dz  d¤�e}dz  d¦�e†dz  d¥�e†dz  d§�e„�e>   dz  d¨�e?dz  d©�e=dz  dª�e…dz  d«�e…dz  d¬�e}dz  d­�e{dz  dµe d¶   dz  d·e d¸   dz  d®�e}�eˆe1   z  dz  d¯�e†dz  d°�e„dz  d±�e{�e}z  dz  d³�e‡dz  d´�e†dz  d²�e‡dz  dÃ�eCdz  dÄ�e‡dz  dÁ�e}dz  d¹�e{dz  dº�e{dz  d»�e‡dz  d¼�e{dz  d��e„dz  dž�e{dz  d½�e{dz  d¾�e{dz  d¿�e{dz  dÀ�e„dz  dÂ�e:dz  dÅe!dÆ   dÇ�e‡dz  dÈe‡e„z  fV�d8„«       «       Zû�d9„ �Zí�d:„ �Zî�d;„ �Zï�d<„ �Zðe5dÈe…f�d=„«       �Zñe3g dd�d>dddddØddddf�d?�e†dz  �d@�e{dz  dŸ�e…dÝ�e{dz  d¾�e{dz  d¿�e{dz  �dA�e{dz  �dB�e‡d­�e{dz  �dCe �dD   dÈe�eŠ�eŠe…f   f�dE„«       �Zòe3g dd�d>dddddØddddfdØ�dFœ�d?�e†dz  �d@�e{dz  dŸ�e…dÝ�e{dz  d¾�e{dz  d¿�e{dz  �dA�e{dz  �dB�e‡d­�e{dz  �dCe dØ   dÈe…f�dG„«       �Zòe5g dd�d>dddddØddddf�d?�e†dz  �d@�e{dz  dŸ�e…dÝ�e{dz  d¾�e{dz  d¿�e{dz  �dA�e{dz  �dB�e‡d­�e{dz  dÈe…e�eŠ�eŠe…f   z  f�dH„«       �ZòdÊe�eŠ�eŠeŠe‡z  e„z  e‹z  f   dÈeŠe‡z  e„z  e‹z  f�dI„�ZódÊe�eŠ�eŠe‡f   dÈe‡f�dJ„�Zôe5dÈeŠe‹z  f�dK„«       �Zõe5	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d†�dL�e{�e„�e{�e„�e{�e„�e†   z     z     z  d›�e{dz  �dM�e†dz  �dN�e‡dz  d«�e…dz  d¬�e}�e†�e†f   dz  d³�e†dz  d¥�e†dz  d¢�e†dz  dª�e…dz  �dO�e{�e„�e{   z  dz  d£�e‡dz  d¤�e}dz  �dP�e{dz  d �e…dz  d¡�e…dz  d­�e{dz  dÝ�e{dz  d¾�e{dz  d¿�e{dz  dÀ�e„dz  dÑ�e{dz  f,�dQ„«       �Zö�dR�e{dÈe1�eEz  dz  f�dS„�Z÷dÈ�e}�e{�eŠf   e�eø   z  f�dT„�Zù�dR�e{dÈe1�eEz  dz  f�dU„�Zú�d‡�dV�e{d›�e{dz  d¿�e{dz  dÈ�eBf�dW„�Zûe5	 	 	 �dˆ�dV�e{d›�e{dz  d¿�e{dz  dÑ�e{dz  dÈ�eBf
�dX„«       �Züe5dÈeŒf�dY„«       �Zýe5	 	 	 	 	 	 	 	 	 	 	 	 �d‰d›�e{�dZ�eH�d[�e{dz  �dL�e{dz  d®e �d\   dz  �d]�e„e �d^      dz  d �e†dz  d­�e{dz  d¿�e{dz  dÝ�e{dz  d¾�e{dz  �d_�e†dz  dÈeŒe�eŠ�eŠeŒf   z  f�d`„«       �Zþe5dÈ�eAf�da„«       �Zÿe5	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dŠd›�e{�dV�e{�db�e{�e}z  dz  d¿�e{dz  dÝ�e{dz  d¾�e{dz  �dc�e{dz  �dd�e{dz  �d_�e†dz  �de�e}dz  dŸ�e…e-�j                   z  dz  d®�e{dz  �df�e†dz  �dg�e{dz  �dh�e}dz  dÑ�e{dz  �di�e‡dz  dÈ�eAe�eŠ�eŠ�eAf   z  f$�dj„«       �Z 	 	 	 �d‹�dk�e}�dl�e{dz  �dL�e{dz  �dV�e„dz  f�dm„�Z�dn„ �Z�do„ �Z�dƒ�dp�e„dœ�e„dz  dÈeŠf�dq„�Z�dre‡�dse!�dt   dÈ�e…dz  f�du„�Z�dŒ�dv„�Z�dre‡dÈ�e…dz  f�dw„�Z�dre‡�dse!�dt   dÈdf�dx„�Z	 	 	 	 �d��dp�e„dœ�e„dz  �dse!�dt   dÈe‡eŠz  dz  f�dy„�Z		 	 	 	 	 �d…d›�e{dœ�e„�e}�e{�eŠf      dz  d°�e„�e}�e{ef      dz  �dz�e{dz  d¿�e{dz  dÝ�e{dz  dÈ�d{f�d|„�Z
d�ae/�j                  dz  �eP�d}<   dÈe/�j                  f�d~„�ZdÈe/�j                  f�d„�ZdÈe/�j                  f�d€„�Z�d��e{dÈe/�j                  f�d‚„�Zy(Ž  é    N)ÚAsyncIteratorÚ	CoroutineÚIterableÚMappingÚSequence)Úfutures)ÚFIRST_COMPLETEDÚThreadPoolExecutorÚwait)Údeepcopy)Úpartial)ÚMappingProxyType)	ÚTYPE_CHECKINGÚAnyÚFinalÚLiteralÚOptionalÚProtocolÚUnionÚcastÚget_args)Ú_redact_string)Úuuid)ÚClientSession)Ú	BaseModel)Úoverload©Úclient)Úexception_typeÚget_litellm_paramsÚget_optional_paramsÚpeek_reasoning_summary_aliasesÚ4strip_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)Ú&maybe_run_chat_completion_agentic_loop)ÚCompletionTimeout)Útracer)ÚFORWARDED_KWARGS_KEYSÚOPTIONAL_KWARGS_KEYS)ÚProviderSpecificHeaderUtils)Ú_create_health_check_responseÚ_filter_model_params)Úmock_embeddingÚmock_image_generation)Úget_content_from_model_response)Úget_configured_request_timeout)Ú
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)Ú_CompletionDispatchContextÚ_CompletionDispatchResult)Ú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)ÚBedrockEmbedding)ÚBedrockImageEdit)ÚBedrockImageGeneration)ÚBytezChatConfig)ÚClarifaiConfig)ÚCodestralTextCompletion)Úhandler)ÚBaseLLMAIOHTTPHandler)ÚBaseLLMHTTPHandler)Ú	CustomLLMÚcustom_chat_llm_router)ÚDatabricksEmbeddingHandler)Úaleph_alphaÚpalm)ÚGDCGeminiConfig)Úget_api_key_from_env)ÚGroqChatCompletion)ÚHerokuChatConfig)ÚHuggingFaceEmbedding)ÚLemonadeChatConfig)Ú
completion)ÚNvidiaRivaAudioTranscription)Ú"NvidiaRivaAudioTranscriptionConfig)ÚOCIChatConfig)Ú	oobabooga)ÚOpenAITextCompletion)ÚOpenAIImageVariationsHandler)ÚOpenAIChatCompletion)Ú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_paramsÚopenai_text_completionsÚopenai_audio_transcriptionsÚ nvidia_riva_audio_transcriptionsÚgroq_chat_completionsÚsap_gen_ai_hub_chat_completionsÚsap_gen_ai_hub_embÚazure_ai_embeddingÚanthropic_chat_completionsÚ azure_anthropic_chat_completionsÚazure_o1_chat_completionsÚazure_text_completionsÚazure_audio_transcriptionsÚhuggingface_embedÚpredibase_chat_completionsÚcodestral_text_completionsÚ bedrock_converse_chat_completionÚbedrock_embeddingÚvertex_chat_completionÚvertex_embeddingÚvertex_multimodal_embeddingÚvertex_image_generationÚgoogle_batch_embeddingsÚ%vertex_partner_models_chat_completionÚvertex_gemma_chat_completionÚ#vertex_model_garden_chat_completionÚgdc_transformationÚsagemaker_llmÚwatsonx_chat_completionÚopenai_like_embeddingÚopenai_like_chat_completionÚdatabricks_embeddingÚsagemaker_chat_completionÚbytez_transformationÚheroku_transformationÚoci_transformationÚovhcloud_transformationÚlemonade_transformationc                   ót   — e Zd Zddddej                  ddœdedz  dedz  dedz  dedz  deeef   dz  f
d	„Z	y)
ÚLiteLLMNéX  )Úapi_keyÚorganizationÚbase_urlÚtimeoutÚmax_retriesÚdefault_headersrú   rû   rü   rý   rþ   c                óZ   — t        «       | _        t        | j                  d ¬«      | _        y )N©Ú
router_obj)ÚlocalsÚparamsÚChatÚchat)Úselfrù   rú   rû   rü   rý   rþ   s          úQ/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/main.pyÚ__init__zLiteLLM.__init__K  s   € ô “hˆŒÜ˜Ÿ™°Ô6ˆ�	ó    )
Ú__name__Ú
__module__Ú__qualname__ÚlitellmÚnum_retriesÚstrÚfloatÚintr   r  © r	  r  r÷   r÷   J  sq   „ ð Ø#'Ø#Ø #Ø")×"5Ñ"5Ø48ò7ð ˜D‘jð	7ð
 ˜‘*ð7ð ˜‘ð7ð ˜4‘Zð7ð !  c Ñ*¨TÑ1ô7r	  r÷   c                   ó   — e Zd Zdedz  fd„Zy)r  r  Nc                 óö   — || _         | j                   j                  dd«      du r8| j                   j                  d«       t        | j                   |¬«      | _        y t        | j                   |¬«      | _        y )NÚacompletionFTr   )r  ÚgetÚpopÚAsyncCompletionsÚcompletionsÚCompletions©r  r  r  s      r  r  zChat.__init__Z  sZ   € ØˆŒØ�;‰;�?‰?˜=¨%Ó0°DÑ8Ø�K‰K�O‰O˜MÔ*Ü?OÐPT×P[ÑP[ÐhrÔ?sˆDÕä*¨4¯;©;À:ÔNˆDÕr	  )r
  r  r  r   r  r  r	  r  r  r  Y  s   „ ðO¨3°©:ô Or	  r  c                   ó&   — e Zd Zdedz  fd„Zdd„Zy)r  r  Nc                 ó    — || _         || _        y ©N©r  r  r  s      r  r  zCompletions.__init__d  ó   € ØˆŒØ$ˆ�r	  c                 ó0  — |j                  «       D ]  \  }}|| j                  |<   Œ |xs | j                  j                  d«      }| j                  �+ | j                  j                  d||dœ| j                  ¤Ž}|S t	        d||dœ| j                  ¤Ž}|S ©NÚmodel©r#  Úmessagesr  )Úitemsr  r  r  r¤   ©r  r%  r#  ÚkwargsÚkÚvÚresponses          r  ÚcreatezCompletions.createh  s–   € Ø—L‘L“Nò 	‰DˆAˆqØˆD�K‰K˜ŠNð	àÒ1˜Ÿ™Ÿ™¨Ó1ˆØ�?‰?Ð&Ø1�t—‘×1Ñ1Ð`¸ÈÑ`ÐTX×T_ÑT_Ñ`ˆHð ˆô "ÐP¨¸ÑPÀDÇKÁKÑPˆHØˆr	  r  ©r
  r  r  r   r  r,  r  r	  r  r  r  c  ó   „ ð%¨3°©:ó %ôr	  r  c                   ó&   — e Zd Zdedz  fd„Zdd„Zy)r  r  Nc                 ó    — || _         || _        y r  r  r  s      r  r  zAsyncCompletions.__init__t  r   r	  c              ‹   ó`  K  — |j                  «       D ]  \  }}|| j                  |<   Œ |xs | j                  j                  d«      }| j                  �3 | j                  j                  d||dœ| j                  ¤Žƒ d {  –—† }|S t	        d||dœ| j                  ¤Žƒ d {  –—† }|S 7 Œ(7 Œ­wr"  )r&  r  r  r  r  r'  s          r  r,  zAsyncCompletions.createx  sª   è ø€ Ø—L‘L“Nò 	‰DˆAˆqØˆD�K‰K˜ŠNð	àÒ1˜Ÿ™Ÿ™¨Ó1ˆØ�?‰?Ð&Ø8˜TŸ_™_×8Ñ8Ðg¸uÈxÑgÐ[_×[fÑ[fÑg×gˆHð ˆô )ÐW¨u¸xÑWÈ4Ï;É;ÑW×WˆHØˆð høàWús$   ‚A?B.ÂB*Â!B.Â#B,Â$B.Â,B.r  r-  r  r	  r  r  r  s  r.  r	  r  r#  r%  Ú	functionsÚfunction_callrü   ÚtemperatureÚtop_pÚnÚstreamÚstream_optionsÚ
max_tokensÚmax_completion_tokensÚ
modalitiesÚ
predictionÚaudioÚpresence_penaltyÚfrequency_penaltyÚ
logit_biasÚuserÚresponse_formatÚseedÚtoolsÚtool_choiceÚparallel_tool_callsÚlogprobsÚtop_logprobsÚreasoning_effort)ÚnoneÚminimalÚlowÚmediumÚhighÚxhighÚmaxÚdefaultÚ	verbosity)rL  rM  rN  Úsafety_identifierÚservice_tierÚstoreÚprompt_cache_keyrû   Úapi_versionrù   Ú
model_listÚextra_headersÚthinkingÚweb_search_optionsÚ$include_server_side_tool_invocationsÚshared_sessionr   Úenable_json_schema_validationÚreturnc,              ‹   óZ
  K  — |,j                  dd«      }-|,j                  dd«      }.|.du rt        |.|| «      ƒ d{  –—†  t        j                  «       }/|,j                  dd«      }0|,j                  dd«      }1ddlm}2 dd	lm}3 |2j                  |,t        t        |3   |«      | t        t        dz  |0«      |t        t        dz  |,j                  d
«      «      |,j                  d«      xs |"¬«       t        |1t        «      rœ|1j                  |,j                  dd«      |,|¬«      rx|1j!                  | ||,|,j                  dd«      |,j                  dd«      ||,j                  dd«      |,j                  dd«      |,¬«	      ƒ d{  –—† \  } }}4|�t#        |«      dk(  rd}|*� t%        j&                  dt)        |*«      «       nt%        j&                  d«       i d| “d|“d|“d|“d|“d|“d|“d|“d|“d|	“d|
“d |“d!|“d"|“d#|“d$|“d%|“i d&|“d'|“d(|“d)|“d*|“d+|“d,|“d-|“d.|“d/|“d0|“d1|"“d2|#“d3|$“d4|%“d5|“d6|“¥||| |!|&d|'|(|)|*|+d7œ¥}5|0€&t+        | |0|,j                  d«      xs |"¬8«      \  }4}0}4}4|-xs t,        j.                  }-|-�*t1        dIi |5¤d9d|-i|,¥i¤Žƒ d{  –—† }6|6€t3        d:«      ‚|6S |,j                  d;«      }7|,j                  d<«      }8|,j                  d=«      }9|,j                  d«      }.|7r+t5        |8|9|.¬>«      rt        j6                  |7«      ƒ d{  –—†  	 |,j9                  d?d«       t;        t<        fi |5¤|,¤Ž}:t?        j@                  «       };t;        |;jB                  |:«      }<|/jE                  d|<«      ƒ d{  –—† }=t        |=tF        «      st        |=tH        «      rt        |=tF        «      rtK        |=«      }6|=}6n+t        jL                  |=«      rtO        |=«      ƒ d{  –—† }6n|=}6|0d@k(  s
|0dAk(  s|0dBk(  rGt        |6tP        «      r7t-        jR                  «       jU                  |6t-        jH                  «       ¬C«      }6t        |6t,        jH                  «      r_tW        |6| ||5jY                  «       D �>�?ci c]  \  }>}?|?�|>dDvr|>|?“Œ c}?}>|,|,j                  d«      |0t        |«      ¬E«      ƒ d{  –—† }@|@�@}6t        |6tZ        «      r|6j]                  |/¬F«       |6S 7 �Œ¯7 �Œk7 �ŒP7 �ŒÓ7 �Œm7 �Œ
c c}?}>w 7 ŒD# t2        $ r}A|0xs dG}0t_        | |0A|5|,¬H«      ‚d}A~Aww xY w­w)Ja³  
    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_objr   ©ÚAnthropicCacheControlHook©ÚAllMessageValuesÚenable_prompt_cachingÚapi_base©Únon_default_paramsr%  r#  rc  rD  ri  rj  Ú	prompt_id)rm  rl  rD  Úprompt_variablesÚprompt_labelÚprompt_version)	r#  r%  rl  rm  rn  rD  ro  rp  Úrequest_kwargsuD   ðŸ”„ SHARED SESSION: acompletion called with shared_session (ID: %s)uA   ðŸ”„ NO SHARED SESSION: acompletion called without shared_sessionr#  r%  r2  r3  rü   r4  r5  r6  r7  r8  Ústopr9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  Údeployment_idrû   rW  rù   rX  rI  rR  )rS  rT  rU  rV  rY  r  rZ  r[  r\  r]  r^  ©r#  rc  rj  r(  z]No response from fallbacks. Got none. Turn on `litellm.set_verbose=True` to see more details.Ú
mock_delayÚmock_responseÚmock_tool_calls)rv  rw  rb  r  útext-completion-openaiútext-completion-codestralútext-completion-inception©Úresponse_objectÚmodel_response_object)r#  r%  r7  r  rs  )r+  r#  r%  Úoptional_paramsr(  Úlogging_objrc  r7  )ÚloopÚopenai©r#  rc  Úoriginal_exceptionÚcompletion_kwargsÚextra_kwargsr  )0r  Ú_handle_mock_timeout_asyncÚasyncioÚget_event_loopÚ1litellm.integrations.anthropic_cache_control_hookrf  Úlitellm.types.llms.openairh  Ú#maybe_seed_default_injection_pointsr   Úlistr  ÚboolÚ
isinstanceÚLiteLLMLoggingObjÚ"should_run_prompt_management_hooksÚ async_get_chat_completion_promptÚlenrv   ÚdebugÚidr`   r  Úmodel_fallbacksr{   Ú	Exceptionrm   Úsleepr  r   r¤   ÚcontextvarsÚcopy_contextÚrunÚrun_in_executorÚdictrR   Ú _model_response_from_cached_dictÚiscoroutineÚ!_resolve_dispatched_chat_responserU   ÚOpenAITextCompletionConfigÚ%convert_to_chat_model_response_objectr-   r&  rO   Úset_logging_event_loopr   )Br#  r%  r2  r3  rü   r4  r5  r6  r7  r8  rr  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  rs  rI  rR  rS  rT  rU  rV  rû   rW  rù   rX  rY  rZ  r[  r\  r]  r^  r(  ra  rb  r€  rc  rd  rf  rh  Ú_r„  r+  ru  rv  rw  ÚfuncÚctxÚfunc_with_contextÚinit_responser)  r*  ÚloopedÚesB                                                                     r  r  r  ƒ  s·  è ø€ ðD —
‘
˜;¨Ó-€IØ—:‘:˜n¨dÓ3€Là�tÑÜ(¨°wÀÓF×FÐFä×(Ñ(Ó*€DØ Ÿ*™*Ð%:¸DÓAÐð
 "(§¡Ð,AÀ4Ó!HÐõõ ;à×AÑAØ!Ü”dÐ+Ñ,¨hÓ7ØÜ ¤ t¡Ð-@ÓAØÜ"¤4¨$¡;°·
±
Ð;RÓ0SÓTØ—‘˜JÓ'Ò3¨8ð Bô ô Ð%Ô'8Ô9Ø×>Ñ>Ø—j‘j ¨dÓ3Ø%Øð 	?ô 	
ð &×FÑFØØØ%Ø—j‘j ¨dÓ3Ø#ŸZ™ZÐ(:¸DÓAØØŸ™ N°DÓ9Ø!Ÿ:™:Ð&6¸Ó=Ø!ð Gó 

÷ 

ñ		
ØØØð& Ð¤ U£¨q¢ØˆEð Ð!Ü×ÑÐcÔegÐhvÓewÕxä×ÑÐ`Ôað. Ø�ð. à�Hð. ð 	�Yð. ð 	˜ð	. ð
 	�7ð. ð 	�{ð. ð 	�ð. ð 	ˆQð. ð 	�&ð. ð 	˜.ð. ð 	�ð. ð 	�jð. ð 	 Ð!6ð. ð 	�jð. ð 	�jð. ð  	�ð!. ð" 	Ð,ñ#. ð$ 	Ð.ð%. ð& 	�jð'. ð( 	�ð). ð* 	˜?ð+. ð, 	�ð-. ð. 	�ð/. ð0 	�{ð1. ð2 	Ð2ð3. ð4 	�Hð5. ð6 	˜ð7. ð8 	˜ð9. ð: 	�Hð;. ð< 	�{ð=. ð> 	�7ð?. ð@ 	�jðA. ðB 	Ð,ðC. ðD 	�YñE. ðF /Ø$ØØ,Ø&ØØØ0Ø0TØ(Ø)Fò[. Ðð^ Ð"Ü'7ØØ 3Ø—Z‘Z 
Ó+Ò7¨xô(
Ñ$ˆÐ  1ð Ò4œW×4Ñ4€IØÐÜ8ÑxÐ;LÑxÐVaÐclÐUwÐpvÐUwÒx×xˆØÐÜØoóð ð ˆð Ÿ
™
 <Ó0€JØ!Ÿ:™: oÓ6€MØ#ŸZ™ZÐ(9Ó:€OØ—:‘:˜nÓ-€LÙÔ0Ø#Ø'Ø!õô
 �m‰m˜JÓ'×'Ð'ðJ
à�
‰
�= $Ô'ÜœjÑHÐ,=ÐHÀÑHˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9Ðà%)×%9Ñ%9¸$Ð@QÓ%R×RˆÜ�m¤TÔ*¬j¸ÌÔ.VÜ˜-¬Ô.Ü;¸MÓJ�Ø$‰HÜ× Ñ  Ô/Ü>¸}ÓM×M‰Hà$ˆHð  Ð#;Ò;Ø"Ð&AÒAØ"Ð&AÒAÜ˜Ô#9Ô:Ü×9Ñ9Ó;×aÑaØ (Ü&-×&;Ñ&;Ó&=ð bó ˆHô �h¤× 5Ñ 5Ô6Ü"HØ!ØØ!ð !2× 7Ñ 7Ó 9÷!á˜˜1Ø�}Øðñð �q‘Dó!ð Ø"ŸJ™JÐ'<Ó=Ø$7Ü˜F“|ô)#÷ ˆFð, Ð!Ø!�Ü�hÔ 3Ô4Ø×+Ñ+Øð ,ô ð ˆða 	GùðH

ùðn yùð$ 	(ùð  Sùð Nûó4!ð	ùô: ò 
Ø1Ò=°XÐÜØØ 3Ø Ø/Øô
ð 	
ûð
üs±   ‚9T+»S*¼ET+ÆS-ÆDT+Ê S0Ê!A?T+Ì S3Ì!T+Ì&A#T Î	S6Î
A%T Ï/S9Ï0BT ÒS<Ò(T Ò=TÒ>+T Ó)T+Ó-T+Ó0T+Ó3T+Ó6T Ó9T Ó<T Ô	T(ÔT#Ô#T(Ô(T+Úpendingc              ƒ   ó"   K  — | ƒ d {  –—† S 7 Œ­wr  r  ©rª  s    r  rŸ  rŸ  Å  s   è ø€ ð �=Ðˆ=úó   ‚ˆ‰Úcached_response_dictc                 ó   — t        di | ¤ŽS ©Nr  )rR   ©r®  s    r  r�  r�  Ë  s   € ÜÑ0Ð/Ñ0Ð0r	  c                 ó   — t        di | ¤ŽS r°  )rW   r±  s    r  Ú(_transcription_response_from_cached_dictr³  Ï  s   € Ü Ñ8Ð#7Ñ8Ð8r	  c                óú   K  — 	 t        d| › �«       t        j                  | «      r
| ƒ d {  –—† } | 2 3 d {  –—† }t        d|› �«       |­–— Œ7 Œ#7 Œ6 y # t        $ r}|xs d}t	        |||¬«      ‚d }~ww xY w­w)Nz'received response in _async_streaming: zline in async streaming: r�  )r#  rc  rƒ  )Úprint_verboser‡  rž  r–  r   )r+  r#  rc  ÚargsÚliner©  s         r  Ú_async_streamingr¸  Ó  s”   è ø€ ð
ÜÐ?À¸zÐJÔKÜ×Ñ˜xÔ(Ø%—~ˆHØ"÷ 	ð 	�$ÜÐ5°d°VÐ<Ô=ØŒJð &øð	ø™(øô ò 
Ø1Ò=°XÐÜØØ 3Ø ô
ð 	
ûð
üsR   ‚A;„(A ¬A­A ³A·A¸A»A ÁAÁA ÁA;Á	A8ÁA3Á3A8Á8A;rv  rc  c           
      ó   — t        | t        «      ryt        | t        j                  «      r| ‚t	        j
                  t        | dd«      t        | dt        | «      «      t        | d|xs d«      |t        j                  dd¬«      ¬	«      ‚t        | t        «      r,| d
k(  r't	        j                  dt        | d|xs d«      |¬«      ‚t        | t        «      r,| dk(  r't	        j                  dt        | d|xs d«      |¬«      ‚t        | t        «      r,| dk(  r't	        j                  dt        | d|xs d«      |¬«      ‚t        | t        «      rA| j                  d«      r/t	        j
                  d| d|t        j                  dd¬«      ¬	«      ‚y y )NÚstatus_codeéô  ÚtextÚllm_providerr�  Ú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Ž  r–  r�  ÚAPIErrorr  ÚMockExceptionÚgetattrr  ÚhttpxÚRequestÚRateLimitErrorÚContextWindowExceededErrorÚInternalServerErrorÚ
startswith©rv  r#  rc  s      r  Ú!_handle_mock_potential_exceptionsrÏ  ä  sˆ  € ô
 �-¤Ô+Ü�m¤V§_¡_Ô5ØÐÜ×#Ñ#Ü ¨}¸cÓBÜ˜M¨6´3°}Ó3EÓFÜ  °Ð@SÒ@_ÐW_Ó`ØÜ—M‘M¨Ð5QÔRô
ð 	
ô 
�M¤3Ô	'¨MÐ=UÒ,UÜ×$Ñ$Ø5Ü  °Ð@SÒ@_ÐW_Ó`Øô
ð 	
ô
 
�M¤3Ô	'¨MÐ=aÒ,aÜ×0Ñ0ØBÜ  °Ð@SÒ@_ÐW_Ó`Øô
ð 	
ô
 
�M¤3Ô	'¨MÐ=ZÒ,ZÜ×)Ñ)Ø:Ü  °Ð@SÒ@_ÐW_Ó`Øô
ð 	
ô
 
�M¤3Ô	'¨M×,DÑ,DÐEgÔ,hÜ×#Ñ#ØØ!Ø ØÜ—M‘M¨Ð5QÔRô
ð 	
ð -iÐ	'r	  rb  c                 óX   — | du r&|�#t        |«       t        j                  dd|¬«      ‚y y ©NTzThis is a mock timeout errorr�  rÃ  )Ú_sleep_for_timeoutr  ÚTimeout©rb  rü   r#  s      r  Ú_handle_mock_timeoutrÕ    s;   € ð
 �tÑ Ð 3Ü˜7Ô#Ü�o‰oØ2Ø!Øô
ð 	
ð !4Ðr	  c              ƒ   ót   K  — | du r.|�+t        |«      ƒ d {  –—†  t        j                  dd|¬«      ‚y y 7 Œ­wrÑ  )Ú_sleep_for_timeout_asyncr  rÓ  rÔ  s      r  r†  r†    sH   è ø€ ð
 �tÑ Ð 3Ü& wÓ/×/Ð/Ü�o‰oØ2Ø!Øô
ð 	
ð !4ÐØ/ús   ‚8—6˜8c                 ó<  — t        | t        «      rt        j                  | «       y t        | t        «      rt        j                  t        | «      «       y t        | t
        j                  «      r-| j                  � t        j                  | j                  «       y y y r  )rŽ  r  Útimer—  r  rÈ  rÓ  Úconnect©rü   s    r  rÒ  rÒ  +  sb   € Ü�'œ5Ô!Ü�
‰
�7ÕÜ	�GœSÔ	!Ü�
‰
”5˜“>Õ"Ü	�GœUŸ]™]Ô	+°·±Ð0KÜ�
‰
�7—?‘?Õ#ð 1LÐ	+r	  c              ƒ   ó€  K  — t        | t        «      rt        j                  | «      ƒ d {  –—†  y t        | t        «      r't        j                  t        | «      «      ƒ d {  –—†  y t        | t
        j                  «      r5| j                  �(t        j                  | j                  «      ƒ d {  –—†  y y y 7 ŒŒ7 ŒW7 Œ­wr  )rŽ  r  r‡  r—  r  rÈ  rÓ  rÚ  rÛ  s    r  r×  r×  4  s…   è ø€ Ü�'œ5Ô!Ü�m‰m˜GÓ$×$Ñ$Ü	�GœSÔ	!Ü�m‰mœE '›NÓ+×+Ñ+Ü	�GœUŸ]™]Ô	+°·±Ð0KÜ�m‰m˜GŸO™OÓ,×,Ñ,ð 1LÐ	+ð 	%øà+øà,ús4   ‚)B>«B8¬6B>Á"B:Á#AB>Â0B<Â1B>Â:B>Â<B>Frw  c
           
      óæ  — 	 |
j                  d«      xs d}|€d}t        ||	| ¬«       |�|j                  |d¬«       t        |t        «      st        |t
        «      rt        || |¬«       t        t        t        z  t        z  t        z  |«      }t        |t        «      r*|j                  d	«      rt        j                  d
d| d¬«      }|
j                  dd«      }|�|st        j                  |«       t        |t        «      rt        di |¤ŽS t        |t        «      r|s|S t!        |«      }t        «       }|du rVt        «       }|
j                  dd«      du rt#        t%        ||| |¬«      | d|¬«      S t#        t'        ||| |¬«      | d|¬«      S t        |t        j                  «      r|‚t        t        |«      }|€||j(                  d   j*                  _        njg }t/        |«      D ]S  }t        j0                  j3                  |t        j0                  j5                  |d¬«      ¬«      }|j7                  |«       ŒU ||_        t9        t        j                  «       «      |_        | |_        |r5|D �cg c]  }t?        di |¤Ž‘Œ c}|j(                  d   j*                  _         tC        |dtE        tF        tH        tF        tH        z   ¬«      «       	 t        j0                  jK                  | ¬«      \  }}}}||jL                  d<   |�|jO                  |dd¬«       |S c c}w # t
        $ r Y Œ(w xY w# t
        $ r/}t        |tP        jR                  «      r|‚t        d|› �«      ‚d}~ww xY w) aS  
    Generate a mock completion response for testing or debugging purposes.

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

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

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

    Raises:
        Exception: If an error occurs during the generation of the mock completion response.
    Note:
        - This function is intended for testing or debugging purposes to generate mock completion responses.
        - If 'stream' is True, it returns a response that mimics the behavior of a streaming completion.
    r  FNúThis is a mock requestrÔ  zmock-key)Úinputrù   rÎ  zException: mock_streaming_errorz&This is a mock error raised mid-streamÚ	anthropici  )rÁ  r½  r#  rº  ru  T)rv  r#  r6  r�  ©Úcompletion_streamr#  rc  r  r   Ú	assistant)ÚcontentÚrole)ÚindexrÁ  Úusage©Úprompt_tokensÚcompletion_tokensÚtotal_tokens©r#  rc  zmy-secret-keyzmy-original-response©rß  rù   Úoriginal_responsez"Mock completion response failed - r  )*r  rÕ  Úpre_callrŽ  r  r–  rÏ  r   rœ  rR   rK   rÍ  r  rÆ  rÙ  r—  r;   rO   r[   rj   ÚchoicesrÁ  rä  ÚrangeÚutilsrN   rQ   Úappendr  Úcreatedr#  rÉ   Ú
tool_callsÚsetattrrX   r'   r&   r`   Ú_hidden_paramsÚ	post_callr�  rÅ  )r#  r%  r7  r6  rv  rw  rb  Úloggingrc  rü   r(  Úis_acompletionÚ
time_delayÚmodel_responseÚ_all_choicesÚiÚ_choiceÚ	tool_callr£  r©  s                       r  Úmock_completionr  =  s  € ðHwBØ &§
¡
¨=Ó 9Ò B¸UˆØÐ Ø4ˆMä¨,ÀÈuÕUð ÐØ×ÑØØ"ð ô ô
 �m¤SÔ)¬Z¸ÄyÔ-QÜ-Ø+ØØ$7õô Ü”$‰JœÑ&Ô)<Ñ<¸mó
ˆô �m¤SÔ)¨m×.FÑ.FÐGhÔ.iÜ#×1Ñ1Ø@Ø(ØØô	ˆMð #ŸJ™J |°TÓ:ˆ
ØÐ!©.Ü�J‰J�zÔ"ä�m¤TÔ*Ü Ñ1 =Ñ1Ð1ä�m¤]Ô3ÙØ$Ð$ä?ÀÓNˆMä>K»oˆà�T‰>Ü0Ó2ˆNà�z‰z˜-¨Ó/°4Ñ7Ü*Ü&IØ&°mÈ5ÐTUô'ð  Ø(0Ø 'ôð ô 'Ü"?Ø"°-ÀuÐPQô#ð Ø$,Ø#ôð ô �m¤W×%:Ñ%:Ô;ØÐäœS -Ó0ˆàˆ9Ø8EˆN×"Ñ" 1Ñ%×-Ñ-Õ5à"$ˆLÜ˜1“Xò -�Ü!Ÿ-™-×/Ñ/ØÜ#ŸM™M×1Ñ1¸-ÈkÐ1ÓZð 0ó �ð ×#Ñ# GÕ,ð-ð &2ˆNÔ"Ü!$¤T§Y¡Y£[Ó!1ˆÔØ$ˆÔáàL[ö<Ø?HÔ-Ñ:°	Ó:ò<ˆN×"Ñ" 1Ñ%×-Ñ-Ô8ô 	ØØÜÜFÜ"NÜEÔHtÑtôô	
ð	Ü+2¯=©=×+IÑ+IÐPUÐ+IÓ+VÑ(ˆAÐ" A qØCVˆN×)Ñ)Ð*?Ñ@ð
 ÐØ×ÑØØ'Ø"8ð ô ð Ðùò9<øô" ò 	áð	ûô ò BÜ�aœŸ™Ô)ØˆGÜÐ<¸Q¸CÐ@ÓAÐAûðBúsi   ‚DL8 ÄL8 Ä%AL8 Å8L8 ÆC&L8 É:L$ÊAL8 Ë4L) ÌL8 Ì$L8 Ì)	L5Ì2L8 Ì4L5Ì5L8 Ì8	M0Í*M+Í+M0úhttps://api.openai.com/v1Ú_OPENAI_DEFAULT_API_BASErj  c                 ón   — | xs2 t         j                  xs  t        d«      xs t        d«      xs t        S )a�  Effective OpenAI base a chat request will hit: arg > global > env > default. The bridge gate
    and the ``_complete_custom_openai`` chat handler MUST resolve this identically, or a custom base
    set via ``litellm.api_base`` or ``OPENAI_BASE_URL``/``OPENAI_API_BASE`` is invisible to the gate,
    which then misreads it as the default OpenAI endpoint and bridges a request the backend can't serve.ÚOPENAI_BASE_URLÚOPENAI_API_BASE)r  rj  rF   r  )rj  s    r  Ú_resolve_openai_api_baser  Þ  sB   € ð 	ò 	$Ü×Ñò	$äÐ+Ó,ò	$ô Ð+Ó,ò	$ô $ðr	  Úreasoning_summaryc                 óø  — i }t         j                  r |dk(  r| j                  dd«      } d|d<   || fS 	 t        t        t        | |¬«      «      }|j                  d«      €*| j                  d«      r| j                  dd«      } d}||d<   |�|dk(  rd|d<   | j                  dd«      } t        d	„ |xs d
D «       «      }
t        |t        «      r*|j                  d«      dk7  xs |j                  d«      d u}n|dk7  }t        |«      }|dk(  xs |j                  «       dt        fv }|dv rv|j                  d«      dk7  rbt!        j"                  | «      rMt!        j$                  | «      s8|�|€t!        j&                  | «      r|
r|r|€|rd|d<   | j                  dd«      } || fS # t        $ rK}	t        j                  d|	«       | j                  d«      r| j                  dd«      } d}||d<   Y d }	~	�ŒLd }	~	ww xY w)Nr�  z
responses/Ú Ú	responsesÚmode©r#  rc  ÚxaizError getting model info: %sc              3   ó„   K  — | ]8  }t        |t        «      r|j                  d «      dk(  nt        |d d«      dk(  –— Œ: y­w)ÚtypeÚfunctionN)rŽ  rœ  r  rÇ  )Ú.0Útools     r  ú	<genexpr>z-responses_api_bridge_check.<locals>.<genexpr>(  sE   è ø€ ò #àô ,6°d¼DÔ+Aˆ�‰�&Ó	˜ZÒ	'ÄwÈtÐU[Ð]aÓGbÐfpÑGpÓ	pñ#ùs   ‚>A r  ÚeffortrJ  ÚsummaryrÄ  )r�  rÄ  )r  Ú"route_all_chat_openai_to_responsesÚreplacer   rœ  rY   r  rÍ  r–  rv   r“  ÚanyrŽ  r  Ústripr  r@   Úis_model_gpt_5_modelÚis_model_gpt_5_search_modelÚis_model_gpt_5_4_plus_model)r#  rc  r[  rD  rI  r  rj  Ú
model_infor  r©  Úhas_function_toolÚreasoning_activeÚresolved_api_baseÚ on_constraint_enforcing_endpoints                 r  Úresponses_api_bridge_checkr#  ì  s<  € ð %'€Jô ×1Ò1Ð6IÈXÒ6UØ—‘˜l¨BÓ/ˆØ(ˆ
�6ÑØ˜5Ð Ð ð&ÜÜÜ"¨ÐDWÔXó
ˆ
ð �>‰>˜&Ó!Ð)¨e×.>Ñ.>¸|Ô.LØ—M‘M ,°Ó3ˆEØˆDØ!%ˆJ�vÑàÐ)Ð.AÀUÒ.JØ!,ˆJ�vÑØ—M‘M ,°Ó3ˆEô<  #ñ #à’[˜bô#ó  Ðô Ð"¤DÔ)Ø+×/Ñ/°Ó9¸VÑCÒrÐGW×G[ÑG[Ð\eÓGfÐnrÐGrÑà+¨vÑ5Ðô
  8¸ÓAÐØ.AÀWÑ.Lò /ÐPa×PgÑPgÓPiØ
Ü ðnð QÐ$ð
 	Ð2Ñ2Ø�N‰N˜6Ó" kÒ1Ü×1Ñ1°%Ô8Ü ×<Ñ<¸UÔCàÐ)Ð.?Ð.Kä ×<Ñ<¸UÔCÙ%Ù$Ø%Ð1Ñ5Uð )ˆ
�6ÑØ—‘˜l¨BÓ/ˆà�uÐÐøô ò &Ü×ÑÐ;¸QÔ?à×Ñ˜LÔ)Ø—M‘M ,°Ó3ˆEØˆDØ!%ˆJ�vÑÿùð&ús   ´A4F% Æ%	G9Æ.A G4Ç4G9c                 óR   — | dk(  ry| dk(  s
| dk(  s| dk(  rd|j                  «       v S y)Nrà  TÚazure_aiÚbedrockÚ	vertex_aiÚclaudeF)Úlower©rc  r#  s     r  Ú_should_allow_input_examplesr+  N  s:   € Ø˜kÒ)ØØ˜jÒ(Ð,?À9Ò,LÐPcÐgrÒPrØ˜5Ÿ;™;›=Ð(Ð(Ør	  r  c                 óÚ   — | j                  «       }|j                  dd «       |j                  d«      }t        |t        «      r'|j                  «       }|j                  dd «       ||d<   |S )NÚinput_examplesr  )Úcopyr  r  rŽ  rœ  )r  Ú	tool_copyr  s      r  Ú_drop_input_examples_from_toolr0  V  s^   € Ø—y‘y“{€IØ‡M�MÐ" DÔ)Ø�}‰}˜ZÓ(€HÜ�(œDÔ!Ø—=‘=“?ˆØ�‰Ð% tÔ,Ø (ˆ	�*ÑØÐr	  c                 ó–   — | €y g }| D ]>  }t        |t        «      r|j                  t        |«      «       Œ.|j                  |«       Œ@ |S r  )rŽ  rœ  ró  r0  )rD  Úcleaned_toolsr  s      r  Ú_drop_input_examples_from_toolsr3  a  sT   € ð €}ØØ')€MØò 'ˆÜ�dœDÔ!Ø× Ñ Ô!?ÀÓ!EÕFà× Ñ  Õ&ð	'ð
 Ðr	  c                   ó"   — e Zd Zdeeef   fd„Zy)Ú_ProxyAuthHeadersProviderr_  c                  ó   — y r  r  )r  s    r  Úget_auth_headersz*_ProxyAuthHeadersProvider.get_auth_headersp  s   � r	  N)r
  r  r  r   r  r7  r  r	  r  r5  r5  o  s   „ Ø8 '¨#¨s¨(Ñ"3Ô8r	  r5  Ú
proxy_authc                 ó"   — | j                  «       S r  )r7  )r8  s    r  Ú_proxy_auth_headersr:  s  s   € Ø×&Ñ&Ó(Ð(r	  Úconfigc                 ó"   — | j                  «       S r  )r&  )r;  s    r  Ú_provider_config_itemsr=  w  s   € Ø�<‰<‹>Ðr	  Úvaluesc                 ó   — | S r  r  )r>  s    r  Ú_locals_snapshotr@  {  s   € Ø€Mr	  r(  r  c                 óÜ   — d| i}t         j                  D ]  }|j                  |«      }|€Œ|||<   Œ |r7t        |t        «      r'dD ]"  }||v sŒ||   €Œ|j                  |||   «       Œ$ |S )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_cachingr9  )rJ   Úmodel_fieldsr  rŽ  rœ  Ú
setdefault)rc  r(  r  ÚentryÚ
field_nameÚvalueÚkeys          r  Ú_build_custom_pricing_entryrJ    s‹   € ð -Ð.AÐB€Eä0×=Ñ=ò &ˆ
Ø—
‘
˜:Ó&ˆØÑØ %ˆE�*Òð&ñ
 ”j ¬TÔ2ØDò 	7ˆCØ�jÒ  Z°¡_Ñ%@Ø× Ñ   j°¡oÕ6ð	7ð €Lr	  c                 óê   — dD ]n  }| j                  |«      xs i }t        |t        «      sŒ)|j                  d«      xs i }t        |t        «      sŒO|j                  d«      }|€Œct        |«      c S  y )N)Úlitellm_metadataÚmetadatar  r”  )r  rŽ  rœ  r  )r(  Úmetadata_keyrM  Údeployment_model_infors  s        r  Ú_get_router_deployment_idrP  ™  sy   € Ø8ò 	&ˆØ—:‘:˜lÓ+Ò1¨rˆÜ˜(¤DÔ)ØØ (§¡¨\Ó :Ò @¸bÐÜÐ/´Ô6ØØ-×1Ñ1°$Ó7ˆØÑ$Ü�}Ó%Ò%ð	&ð r	  c                 óÚ   — t        |||¬«      }|› d| › �}t        |«      }|€t        j                  ||id¬«       yt        j                  |||t	        j
                  |«      id|¬«       y)af  Register per-request custom pricing in litellm.model_cost.

    Router-originated requests (identified by the deployment id the router puts
    in metadata) get their full pricing registered under that unique id only;
    the shared ``{provider}/{model}`` key receives the entry with pricing fields
    stripped, mirroring Router._create_deployment. This keeps one deployment's
    pricing overrides (e.g. a zero-cost wildcard) from clobbering built-in
    pricing used by sibling deployments of the same backend model. Direct SDK
    calls keep the legacy behavior of registering the shared key with pricing.
    )rc  r(  r  ú/NF)Úpersist_across_reloads)rS  Úwarning_display_name)rJ  rP  r  Úregister_modelrJ   Ústrip_custom_pricing_fields)r#  rc  r(  r  rF  Ú
shared_keyrs  s          r  Ú$_register_custom_pricing_for_requestrX  §  sƒ   € ô  /Ø/ØØô€Eð
 /Ð/¨q°°Ð8€JÜ4°VÓ<€MØÐÜ×Ñ 
¨EÐ2È5ÕQØÜ×Ñà˜5ØÔ2×NÑNÈuÓUð	
ð  %Ø'ör	  r¥  c                 ó   — | j                   S r  )rM  ©r¥  s    r  Ú_dispatch_metadatar[  Ë  s   € Ø�<‰<Ðr	  c                 ó   — | j                   S r  r   rZ  s    r  Ú_dispatch_client_httpr]  Ï  ó   € Ø�:‰:Ðr	  c                 ó   — | j                   S r  r   rZ  s    r  Ú_dispatch_client_azurer`  Ó  s   € ð �:‰:Ðr	  c                 ó   — | j                   S r  r   rZ  s    r  Ú_dispatch_client_openairb  Ù  r^  r	  c                 ó¦  — | j                   }| j                  }| j                  }| j                  }| j                  }t        | «      }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }| j                   }| j"                  }d}|�Ct%        |t&        j(                  «      st%        |t&        j*                  «      rt-        d|i|¬«      }t/        d«      xs d}|xs t0        j                  xs t/        d«      }|xs/ t0        j                  xs t3        d«      xs t0        j4                  }|xs< t0        j                  xs* t0        j6                  xs t3        d«      xs t3        d	«      }|j9                  d
i «      j;                  dd «      xs t3        d«      }|
j9                  dd «      }t=        |«      r|nd }|	xs t0        j                  }	|�||d<   |�||d<   t1        j>                  «       jA                  |¬«      rgt0        j>                  jC                  «       }tE        |«      D ]  \  }}||vsŒ|||<   Œ tF        jI                  |||	||||||tJ        ||
||||||¬«      }ngt0        jL                  jC                  «       }tE        |«      D ]  \  }}||vsŒ|||<   Œ tN        jI                  |||	||||||||tJ        ||
|||||¬«      }|j9                  dd«      r|jQ                  ||||	||dœ¬«       |S )NFrW  )Úazure_client_paramsÚazure_clientÚAZURE_API_TYPErÄ  ÚAZURE_API_BASEÚAZURE_API_VERSIONÚAZURE_OPENAI_API_KEYÚAZURE_API_KEYÚ
extra_bodyÚazure_ad_tokenÚAZURE_AD_TOKENÚazure_ad_token_providerrY  rý   rì  )r#  r%  Úheadersrù   rj  rW  Údynamic_paramsrl  rü  rµ  r~  Úlitellm_paramsÚ	logger_fnr  r  rü   r   rc  )r#  r%  ro  rù   rj  rW  Úapi_typerp  rl  rn  rü  rµ  r~  rq  rr  r  r  rü   r   r7  ©ro  rW  rj  ©rß  rù   rî  Úadditional_args))Ú_azure_detection_modelr  rj  rù   rW  r`  rc  rY  ro  rq  rr  rù  rý   r%  r#  rü  r~  rü   rŽ  r�  ÚAzureOpenAIÚAsyncAzureOpenAIrŠ   rh   r  rF   ÚAZURE_DEFAULT_API_VERSIONÚ	azure_keyr  r  ÚcallableÚAzureOpenAIO1ConfigÚis_o_series_modelÚ
get_configr=  rÚ   r¤   rµ  ÚAzureOpenAIConfigÚazure_chat_completionsrø  )r¥  rw  r  rj  rù   rW  r   rc  rY  ro  rq  rr  rù  rý   r%  r#  rü  r~  rü   rp  rs  rl  Úazure_ad_token_provider_valuern  r;  r)  r*  r+  s                               r  Ú_complete_azurerƒ  Ý  s“  € Ø$'×$>Ñ$>ÐØŸ™€KØ�|‰|€HØ�k‰k€GØ—/‘/€KÜ*¨3Ó/€FØ!$×!8Ñ!8ÐØ×,Ñ,€MØ�k‰k€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØŸ™€KØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—[‘[€Gà€NØÐœz¨&´&×2DÑ2DÔEÌÐTZÔ\b×\sÑ\sÔItÜ4Ø!.°Ð <Øô
ˆô
 !Ð!1Ó2Ò=°g€HàÒKœ7×+Ñ+ÒK¬zÐ:JÓ/K€Hð 	Òv”w×*Ñ*Òv¬nÐ=PÓ.QÒvÔU\×UvÑUvð ð
 	ò 	+Ü�?‰?ò	+ä×Ñò	+ô Ð0Ó1ò	+ô ˜/Ó*ð ð ,×/Ñ/°¸bÓA×EÑEÐFVÐX\Ó]ò ÔaoØób€Nð ,:×+=Ñ+=Ð>WÐY]Ó+^Ð!ÜFNÐOlÔFmÑ%BÐswÐàÒ(œŸ™€GàÐ Ø+8ˆ˜Ñ(ØÐØ)4ˆ˜Ñ&ä×"Ñ"Ó$×6Ñ6Ð=SÐ6ÔTä×,Ñ,×7Ñ7Ó9ˆÜ*¨6Ó2ò 	'‰DˆAˆqà˜Ò(à%&� Ò"ð		'ô -×7Ñ7ØØØØØØ#Ø)Ø)Ø)Ü'Ø+Ø)ØØØ#ØØØ 3ð% 8ó 
‰ô, ×*Ñ*×5Ñ5Ó7ˆÜ*¨6Ó2ò 	'‰DˆAˆqà˜Ò(à%&� Ò"ð		'ô *×4Ñ4ØØØØØØ#ØØ)Ø)Ø$;Ø)Ü'Ø+Ø)ØØØ#ØØð' 5ó 
ˆð, ×Ñ˜8 UÔ+à×ÑØØØ&à"Ø*Ø$ñð	 	ô 		
ð €Or	  c                 óÄ  — | j                   }| j                  }| j                  }| j                  }t	        | «      }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }t        d«      xs d}|xs t         j                  xs t        d«      }|€t#        d«      ‚|xs t         j                  xs t        d«      }|xs< t         j                  xs* t         j$                  xs t        d«      xs t        d«      }|j'                  di «      j)                  d	d «      xs t        d
«      }|j'                  dd «      }t+        |«      r|nd }|xs t         j                  }|�||d<   t         j,                  j/                  «       }t1        |«      D ]  \  }}||vsŒ|||<   Œ t2        j5                  |||||t7        t8        |«      ||||t:        |||	|
|||¬«      }|j'                  dd«      s|du r|
j=                  ||||||dœ¬«       |S )Nrf  rÄ  rg  z}api_base is required for Azure OpenAI LLM provider. Either set it dynamically or set the AZURE_API_BASE environment variable.rh  ri  rj  rk  rl  rm  rn  rY  )r#  r%  ro  rù   rj  rW  rs  rl  rn  rü  rµ  r~  rq  rr  r  r  rü   r   r7  FTrt  ru  )r  rj  rù   rW  r`  rY  ro  rq  rr  rù  r%  r#  rü  r~  rü   rF   r  Ú
ValueErrorr{  r  r  r|  r€  r  r=  rÛ   r¤   r   r  rµ  rø  )r¥  r  rj  rù   rW  r   rY  ro  rq  rr  rù  r%  r#  rü  r~  rü   rs  rl  r‚  rn  r;  r)  r*  r+  s                           r  Ú_complete_azure_textr†  c  s�  € ØŸ™€KØ�|‰|€HØ�k‰k€GØ—/‘/€KÜ*¨3Ó/€FØ×,Ñ,€MØ�k‰k€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—[‘[€Gä$Ð%5Ó6ÒA¸'€HàÒOœ7×+Ñ+ÒO¬~Ð>NÓ/O€HàÐÜð Ló
ð 	
ð Ò[¤×!4Ñ!4Ò[¼ÐGZÓ8[€Kð 	ò 	+Ü�?‰?ò	+ä×Ñò	+ô Ð0Ó1ò	+ô ˜/Ó*ð ð ,×/Ñ/°¸bÓA×EÑEÐFVÐX\Ó]ò ÔaoØób€Nð ,:×+=Ñ+=Ð>WÐY]Ó+^Ð!ÜFNÐOlÔFmÑ%BÐswÐàÒ(œŸ™€GàÐ Ø+8ˆ˜Ñ(ô ×-Ñ-×8Ñ8Ó:€FÜ& vÓ.ò #‰ˆˆ1à�_Ò$à!"ˆO˜AÒð	#ô -×7Ñ7ØØØØØÜœ˜kÓ*ØØ%Ø 7Ø%Ü#Ø'Ø%ØØØØØð% 8ó €Hð* ×Ñ˜8 UÔ+¨{¸dÑ/Bà×ÑØØØ&à"Ø*Ø$ñð	 	ô 		
ð €Or	  c                 óH  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }	 t         j#                  |
|	||||||||||||t%        «       ||¬«      }|S # t&        $ r'}|j)                  |	|t+        |«      d|i¬«       |‚d }~ww xY w©N©r#  r%  ro  rü  rù   rj  r  r  r~  rq  r]  rü   r   rc  Úencodingr7  Úprovider_configro  ru  ©r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r‹  r]  r7  rü   Úbase_llm_http_handlerr¤   Ú_get_encodingr–  rø  r  ©r¥  r  rj  rù   r   rc  ro  rq  rù  r%  r#  rü  r~  r‹  r]  r7  rü   r+  r©  s                      r  Ú_complete_deepseekr�  Á  ó7  € ØŸ™€KØ—l‘l€HØ—[‘[€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GðÜ/×:Ñ:ØØØØ)ØØØ#ØØ+Ø)Ø)ØØØ 3Ü"“_ØØ+ð# ;ó 
ˆð: €Oøô ò à×ÑØØÜ! !›fØ&¨Ð0ð	 	ô 	
ð ˆûðúó   Ã.C1 Ã1	D!Ã:"DÄD!c                 óF  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }| j                   }ddlm} |j'                  |«      }|dk(  rfddlm} |j-                  |«      }|€t/        d«      ‚|j1                  |«      }|j3                  ||||||
||||||xs t4        j                  ¬«      }|S d|j7                  «       v rê|j-                  |«      }|€t/        d«      ‚|j1                  |«      }|rK|j9                  d	«      }|j;                  d
«      s)d|v r|j=                  dd«      }|d   dz   }n|dz   }|d
z   }t>        j3                  ||||t4        j@                  |tB        |||	tE        «       ||
||||¬«      }|jG                  dd«      s|du r|
jI                  |||¬«       |}|S |j-                  |«      }|j1                  |«      }|xs t4        j                  }|�||d<   d|v rtK        |¬«      }	 tL        j3                  ||||||||
||||||tE        «       |¬«      }|jG                  dd«      r|
jI                  |||d|i¬«       |S # tN        $ r'}|
jI                  ||tQ        |«      d|i¬«       |‚d }~ww xY w)Nr   )ÚAzureFoundryModelInfoÚagents)ÚAzureAIAgentsConfigz^Azure AI Agents requests require an api_base. Set `api_base` or the AZURE_AI_API_BASE env var.)r#  r%  rj  rù   rü  r  r~  rq  rü   r  r7  ro  r(  z^Azure Anthropic requests require an api_base. Set `api_base` or the AZURE_AI_API_BASE env var.rR  ú/v1/messagesz
/anthropicru   ©r#  r%  rj  r  Úcustom_prompt_dictrü  rµ  r~  rq  rr  rŠ  rù   r  ro  rü   r   rc  r7  FTrí  rY  z	command-r©r%  ©r#  r%  ro  rü  rù   rj  r  r  r~  rq  r]  rü   r   rc  rŠ  r7  ro  ru  ))r  rj  rù   r]  rc  rY  ro  rq  rr  rù  r%  r#  rü  r~  r]  r7  rü   Ú"litellm.llms.azure_ai.common_utilsr”  Úget_azure_ai_routeÚlitellm.llms.azure_ai.agentsr–  Úget_api_baser…  r_   r¤   r  r)  ÚrstripÚendswithÚsplitrÙ   r™  rµ  rŽ  r  rø  r…   r�  r–  r  )r¥  r  rj  rù   r   rc  rY  ro  rq  rr  rù  r%  r#  rü  r~  r]  r7  rü   r”  Úazure_ai_router–  r+  Úpartsr©  s                           r  Ú_complete_azure_air¥  ô  s¢  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ×,Ñ,€MØ�k‰k€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ�|‰|€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GåHà1×DÑDÀUÓK€Nð ˜Ò!ÝDà(×5Ñ5°hÓ?ˆØÐÜØpóð ð (×3Ñ3°GÓ<ˆà&×1Ñ1ØØØØØ)ØØ+Ø)ØØ#ØØÒ.œwŸ™ð 2ó 
ˆðj €OðK 
�U—[‘[“]Ñ	"à(×5Ñ5°hÓ?ˆØÐÜØpóð ð (×3Ñ3°GÓ<ˆñ Ø—‘ sÓ+ˆHØ×$Ñ$ ^Ô4Ø 8Ñ+Ø#+§>¡>°,ÀÓ#B�EØ$ Q™x¨,Ñ6‘Hà'¨,Ñ6�HØ# nÑ4�ä3×>Ñ>ØØØØ#Ü&×9Ñ9Ø)Ü'Ø+Ø)ØÜ"“_ØØØØØØ 3ð# ?ó 
ˆð& ×Ñ˜x¨Ô/°;À$Ñ3Fà×ÑØØØ"*ð ô ð
 ˆðn €Oði )×5Ñ5°hÓ?ˆà'×3Ñ3°GÓ<ˆàÒ,œWŸ_™_ˆàÐ$Ø/<ˆO˜OÑ,ð ˜%ÑÜ7ÀÔJˆHð	Ü,×7Ñ7ØØ!ØØ-ØØ!Ø'Ø#Ø /Ø-Ø-ØØØ$7Ü&›Øð! 8ó ˆHð8 ×Ñ˜x¨Ô/à×ÑØØØ"*Ø!*¨GÐ 4ð	 ô ð €Oøô' ò 	à×ÑØØÜ"% a£&Ø!*¨GÐ 4ð	 ô ð ˆGûð	ús   Ê-K0 Ë0	L Ë9"LÌL c                 ó~  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }dt        _        |xs. t"        j                  xs t%        d«      xs t%        d«      xs d}d t        _        |xs/ t"        j                  xs t"        j(                  xs t%        d«      }|xs t"        j
                  }t"        j*                  j-                  «       }t/        |«      D ]  \  }}||vsŒ|||<   Œ t"        j0                  rt"        j0                  t        _        t2        j5                  ||
||t6        ||||||	||||¬«      }|j9                  dd«      du r-|du r)|du r%t#        j*                  «       j;                  ||¬	«      }|j9                  dd«      s|d
u r|	j=                  |
||d|i¬«       |S )Nr�  r  r  r  ÚOPENAI_API_KEY)r#  r%  ro  rü  rµ  rù   rc  rj  r  r   r  r~  rq  rr  rü   r7  Fr{  Tro  ru  )r  rj  rù   rb  rc  ro  rq  rr  rù  r%  r#  rü  r~  Útext_completionrü   r�  rs  r  rh   rW  Ú
openai_keyr   r  r=  rú   rÑ   r¤   rµ  r  r¡  rø  )r¥  r  rj  rù   r   rc  ro  rq  rr  rù  r%  r#  rü  r~  r¨  rü   r;  r)  r*  Ú	_responses                       r  Ú _complete_text_completion_openair«  Ž  sI  € ð Ÿ™€KØ�|‰|€HØ�k‰k€GÜ+¨CÓ0€FØ!$×!8Ñ!8ÐØ�k‰k€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ—[‘[€Gà„F„Oð 	ò 	'Ü×Ñò	'äÐ'Ó(ò	'ô Ð'Ó(ò	'ð 'ð ð „FÔð Ò^œŸ™Ò^¬G×,>Ñ,>Ò^Ä*ÐM]ÓB^€GàÒ(œŸ™€Gô ×6Ñ6×AÑAÓC€FÜ& vÓ.ò #‰ˆˆ1à�_Ò$à!"ˆO˜AÒð	#ô
 ×ÒÜ%×2Ñ2ŒÔô (×2Ñ2ØØØØ%Ü#ØØ/ØØØØØ'Ø%ØØð 3ó €Ið$ ×Ñ˜8 UÓ+¨uÑ4¸ÈÑ9MÐRaÐejÑRjä×6Ñ6Ó8×^Ñ^Ø%¸^ð _ó 
ˆ	ð ×Ñ˜8 UÔ+¨{¸dÑ/Bà×ÑØØØ'Ø&¨Ð0ð	 	ô 	
ð Ðr	  c                 ó¶  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }t        |t         j"                  «      r|j%                  | j&                  |
¬«      n| j&                  }	 t(        j+                  |
|	||||||||||||t-        «       ||¬«      }|S # t.        $ r'}|j1                  |	|t3        |«      d|i¬«       |‚d }~ww xY w)N)r~  r#  r‰  ro  ru  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r‹  r]  r7  rü   rŽ  r  ÚFireworksAIConfigÚmap_extra_body_paramsr~  r�  r¤   rŽ  r–  rø  r  )r¥  r  rj  rù   r   rc  ro  rq  rù  r%  r#  rü  r‹  r]  r7  rü   r~  r+  r©  s                      r  Ú_complete_fireworks_air¯  à  sj  € ð Ÿ™€KØ—l‘l€HØ—[‘[€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gô �o¤w×'@Ñ'@ÔAð 	×-Ñ-¸c×>QÑ>QÐY^Ð-Ô_à× Ñ ð ðÜ/×:Ñ:ØØØØ)ØØØ#ØØ+Ø)Ø)ØØØ 3Ü"“_ØØ+ð# ;ó 
ˆð: €Oøô ò à×ÑØØÜ! !›fØ&¨Ð0ð	 	ô 	
ð ˆûðús   Ã8.D( Ä(	EÄ1"EÅEc                 óX  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }	 t         j#                  |
|	||||||||||||t%        «       ||¬«      }|S # t&        $ r/}|j)                  |	|t+        |«      t-        d|i«      ¬«       ‚ d }~ww xY wrˆ  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r‹  r]  r7  rü   r�  r¤   rŽ  r–  rø  r  r   r�  s                      r  Ú_complete_together_air±    s:  € ØŸ™€KØ—l‘l€HØ—[‘[€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GðÜ/×:Ñ:ØØØØ)ØØØ#ØØ+Ø)Ø)ØØØ 3Ü"“_ØØ+ð# ;ó 
ˆð8 €Oøô ò Ø×ÑØØÜ! !›fÜ,¨i¸Ð-AÓBð	 	ô 	
ð 	ûðús   Ã.C1 Ã1	D)Ã:*D$Ä$D)c                 óH  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }	 t         j#                  |
|	||||||||||||t%        «       ||¬«      }|S # t&        $ r'}|j)                  |	|t+        |«      d|i¬«       |‚d }~ww xY wrˆ  rŒ  r�  s                      r  Ú_complete_herokur³  K  ó7  € ØŸ™€KØ—l‘l€HØ—[‘[€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GðÜ/×:Ñ:ØØØØ)ØØØ#ØØ+Ø)Ø)ØØØ 3Ü"“_ØØ+ð# ;ó 
ˆð8 €Oøô ò Ø×ÑØØÜ! !›fØ&¨Ð0ð	 	ô 	
ð ˆûðúr’  c                 óH  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }	 t         j#                  |
|	||||||||||||t%        «       ||¬«      }|S # t&        $ r'}|j)                  |	|t+        |«      d|i¬«       |‚d }~ww xY wrˆ  rŒ  r�  s                      r  Ú_complete_ragflowr¶  }  r´  r’  c                 óH  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }	 t         j#                  |
|	||||||||||||t%        «       ||¬«      }|S # t&        $ r'}|j)                  |	|t+        |«      d|i¬«       |‚d }~ww xY wrˆ  rŒ  r�  s                      r  Ú_complete_xair¸  ¯  r‘  r’  c                 ó  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }|xs! t        j                  xs t!        d«      xs d}|xs/ t        j                  xs t        j"                  xs t!        d«      }|xs t        j
                  }t        j$                  j'                  «       }t)        |«      D ]  \  }}||vsŒ|||<   Œ t*        j-                  |
||	|||||||||t/        «       |||¬«      S )NÚGROQ_API_BASEzhttps://api.groq.com/openai/v1ÚGROQ_API_KEY©r#  r7  r%  r  rj  rü  r~  rq  r]  rc  rü   ro  rŠ  rù   r  r   )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r  rh   Úgroq_keyÚGroqChatConfigr  r=  r�  r¤   rŽ  ©r¥  r  rj  rù   r   rc  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r;  r)  r*  s                      r  Ú_complete_groqrÀ  â  s“  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ�k‰k€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gð 	ò 	,Ü×Ñò	,ä�oÓ&ò	,ð ,ð	 ð 	ò 	&Ü�?‰?ò	&ä×Ñò	&ô �nÓ%ð	 ð Ò(œŸ™€Gô ×*Ñ*×5Ñ5Ó7€FÜ& vÓ.ò #‰ˆˆ1à�_Ò$à!"ˆO˜AÒð	#ô !×+Ñ+ØØØØØØ%Ø'Ø%Ø%Ø/ØØÜ“ØØØð! ,ó ð r	  c                 óä  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }|xs t        j                  xs t!        d«      }|xs t        j                  xs t!        d«      }|xs t        j
                  }t        j"                  j%                  «       }t'        |«      D ]  \  }}||vsŒ|||<   Œ t(        j+                  |
||	|||||||||t-        «       |||¬«      S )NÚBEDROCK_MANTLE_API_BASEÚBEDROCK_MANTLE_API_KEYr¼  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r  rh   ÚBedrockMantleChatConfigr  r=  r�  r¤   rŽ  r¿  s                      r  Ú_complete_bedrock_mantlerÅ     sc  € ð Ÿ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ�k‰k€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GàÒTœ7×+Ñ+ÒT¬zÐ:SÓ/T€HØÒPœŸ™ÒP¬JÐ7OÓ,P€GØÒ(œŸ™€GÜ×3Ñ3×>Ñ>Ó@€FÜ& vÓ.ò #‰ˆˆ1Ø�OÒ#Ø!"ˆO˜AÒð#ô !×+Ñ+ØØØØØØ%Ø'Ø%Ø%Ø/ØØÜ“ØØØð! ,ó ð r	  c                 ó°  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }t         j"                  j%                  |
||||¬«      \  }}}|xs t         j                  xs t'        d«      }|€t)        d«      ‚|xs t         j
                  }t*        j-                  |
||	|||||||||t/        «       ||||¬«      S )N)r#  rj  rù   ro  r~  ÚA2A_API_BASEz²api_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#  r7  r%  r  rj  rü  r~  rq  r]  rc  rü   ro  rŠ  rù   r  r   r‹  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r‹  r]  r7  rü   r  Ú	A2AConfigÚ"resolve_agent_config_from_registryrF   r–  r�  r¤   rŽ  ©r¥  r  rj  rù   r   rc  ro  rq  rù  r%  r#  rü  r~  r‹  r]  r7  rü   s                    r  Ú_complete_a2arÌ  N  sj  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ�k‰k€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gô 	×Ñ×<Ñ<ØØØØØ'ð 	=ó 	ñ	ØØØð ÒMœ7×+Ñ+ÒM¬~¸nÓ/M€HàÐÜðPó
ð 	
ð Ò(œŸ™€Gä ×+Ñ+ØØØØØØ%Ø'Ø%Ø%Ø/ØØÜ“ØØØØ'ð# ,ó ð r	  c                 óø  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }|xs< t         j                  xs* t         j"                  xs t%        d«      xs t%        d«      }|xs t         j
                  xs i }	 t&        j)                  |
|	||||||||||||t+        «       ||¬«      }|S # t,        $ r'}|j/                  |	|t1        |«      d|i¬«       |‚d }~ww xY w)NÚGIGACHAT_API_KEYÚGIGACHAT_CREDENTIALSr‰  ro  ru  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r‹  r]  r7  rü   r  Úgigachat_keyrh   r�  r¤   rŽ  r–  rø  r  r�  s                      r  Ú_complete_gigachatrÑ  �  s�  € ØŸ™€KØ—l‘l€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ�k‰k€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gð 	ò 	.Ü�?‰?ò	.ä×Ñò	.ô Ð(Ó)ò	.ô Ð,Ó-ð ð Ò.œŸ™Ò.¨B€GðÜ/×:Ñ:ØØØØ)ØØØ#ØØ+Ø)Ø)ØØØ 3Ü"“_ØØ+ð# ;ó 
ˆð: €Oøô ò à×ÑØØÜ! !›fØ&¨Ð0ð	 	ô 	
ð ˆûðús   Ä.E	 Å		E9Å"E4Å4E9c                 ó`  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }|xs t        j
                  }t        j                   j#                  «       }t%        |«      D ]  \  }}||vsŒ|||<   Œ t&        j)                  |
|	||||||||||t+        «       |||¬«      S )N)r#  r%  ro  rü  r  r  r~  rq  rü   r]  r   rc  rŠ  rù   rj  r7  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r  ÚGenAIHubOrchestrationConfigr  r=  rÕ   r¤   rŽ  r¿  s                      r  Ú_complete_saprÔ  Ë  s-  € ØŸ™€KØ—l‘l€HØ—[‘[€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ�k‰k€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GàÒ(œŸ™€Gä×7Ñ7×BÑBÓD€FÜ& vÓ.ò #‰ˆˆ1à�_Ò$à!"ˆO˜AÒð	#ô +×5Ñ5ØØØØ%ØØØ'Ø%ØØ%ØØ/Ü“ØØØð! 6ó ð r	  c                 óÀ  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }|xs. t        j                  xs t!        d«      xs t!        d«      xs d}|xs/ t        j                  xs t        j"                  xs t!        d«      }|xs t        j                  }|�||d<   t$        j'                  ||
||||||	|||||t)        «       |¬«      S )Nr  r  r  r§  rY  ©r#  r%  ro  rü  rù   rj  r  r  r~  rq  rü   r   rc  rŠ  r7  )r  rj  rù   r]  rc  rY  ro  rq  rù  r%  r#  rü  r~  r7  rü   r  rh   r©  Úbase_llm_aiohttp_handlerr¤   rŽ  )r¥  r  rj  rù   r   rc  rY  ro  rq  rù  r%  r#  rü  r~  r7  rü   s                   r  Ú_complete_aiohttp_openairØ  ù  sr  € ð Ÿ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ×,Ñ,€MØ�k‰k€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—J‘J€FØ—[‘[€Gð 	ò 	'Ü×Ñò	'äÐ'Ó(ò	'ô Ð'Ó(ò	'ð 'ð ð 	ò 	(Ü�?‰?ò	(ä×Ñò	(ô Ð&Ó'ð	 ð Ò(œŸ™€GàÐ Ø+8ˆ˜Ñ(Ü#×.Ñ.ØØØØ%ØØØØØ'Ø%ØØØ/Ü“Øð /ó ð r	  c                 ó¸  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }|xs/ t         j"                  xs t%        d«      xs t         j                  }|xs! t         j                  xs t%        d«      xs d}t&        j)                  |
|	||||||||||||t+        «       ||¬«      }|j-                  |	||¬«       |S )NÚCOMETAPI_KEYÚCOMETAPI_API_BASEúhttps://api.cometapi.com/v1r‰  rí  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r‹  r]  r7  rü   r  Úcometapi_keyrF   r�  r¤   rŽ  rø  ©r¥  r  rj  rù   r   rc  ro  rq  rù  r%  r#  rü  r~  r‹  r]  r7  rü   r+  s                     r  Ú_complete_cometapirß  2	  sO  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GàÒbœ×-Ñ-Òb´ÀÓ1OÒbÔSZ×SbÑSb€GàÒsœ7×+Ñ+Òs¬~Ð>QÓ/RÒsÐVs€Hô ,×6Ñ6ØØØØ%ØØØØØ'Ø%Ø%ØØØ/Ü“ØØ'ð# 7ó €Hð* ×Ñ˜H¨gÈÐÔRà€Or	  c                 ó”  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }|xs t!        d«      xs t"        j                  }|xs! t"        j                  xs t!        d«      xs d}t$        j'                  |
|	|||t)        «       |||||||||||¬«      }|j+                  |	||¬«       |S )NÚMINIMAX_API_KEYÚMINIMAX_API_BASEzhttps://api.minimax.io/v1©r#  r%  rj  rc  rü  rŠ  r  r~  rü   rq  r]  r  r7  rù   ro  r   r‹  rí  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r‹  r]  r7  rü   rF   r  r�  r¤   rŽ  rø  rÞ  s                     r  Ú_complete_minimaxrä  c	  s@  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GàÒMœÐ(9Ó:ÒM¼g¿o¹o€GàÒpœ7×+Ñ+Òp¬~Ð>PÓ/QÒpÐUp€Hä+×6Ñ6ØØØØ/Ø%Ü“ØØ'ØØ%Ø%ØØØØØØ'ð# 7ó €Hð& ×Ñ˜H¨gÈÐÔRà€Or	  c                 óJ  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }|xs t         j                  xs t#        d«      }t$        j'                  |
|	|||t)        «       |||||||||||¬«      }|j+                  |	||¬«       |S )NÚHOSTED_VLLM_API_BASErã  rí  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r‹  r]  r7  rü   r  rF   r�  r¤   rŽ  rø  rÞ  s                     r  Ú_complete_hosted_vllmrç  ‘	  s!  € ØŸ™€KØ�|‰|€HØ—[‘[€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GàÒUœ7×+Ñ+ÒU¬~Ð>TÓ/U€Hä+×6Ñ6ØØØØ/Ø%Ü“ØØ'ØØ%Ø%ØØØØØØ'ð# 7ó €Hð& ×Ñ˜H¨gÈÐÔRà€Or	  c                 óÜ  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }t        | «      }| j                  }| j                  }| j                  }| j                   }| j"                  }| j$                  }| j&                  }| j(                  }t+        |«      }|xs! t,        j                   xs t/        d«      xs d }|t0        _        |xs/ t,        j                  xs t,        j2                  xs t/        d«      }|xs t,        j                  }|dk(  r@ddlm} ddlm}  |«       }|j=                  «       } ||«      }|r|j?                  |«       |}|�||d<   t,        j@                  r|�tC        |«      }|�||d<   t,        jD                  jG                  «       }tI        |«      D ]  \  }}||vsŒ|||<   Œ tK        d	«      }	 |r/tL        jO                  |||||tQ        «       ||||	|||||||¬
«      } n+tR        jO                  ||||tT        ||||||	|
||||||¬«      } |j]                  dd«      r|jY                  ||| d|i¬«       | S # tV        $ r'}!|jY                  ||t[        |!«      d|i¬«       |!‚d }!~!ww xY w)NÚOPENAI_ORGANIZATIONr§  Úgithub_copilotr   )ÚAuthenticator)Úget_copilot_default_headersrY  rM  Ú)EXPERIMENTAL_OPENAI_BASE_LLM_HTTP_HANDLERrã  )r#  r%  ro  rü  rµ  rù   rj  r  r  r~  rq  rr  rü   r™  r   rú   rc  r]  ro  ru  r7  F)/r  rj  rù   r]  rc  r™  rY  ro  rq  rr  rù  r%  r[  r#  rü  r~  rú   r‹  r]  r7  rü   r  r  rh   r�  r©  Ú)litellm.llms.github_copilot.authenticatorrë  Ú(litellm.llms.github_copilot.common_utilsrì  r_   ÚupdateÚenable_preview_featuresrg   ÚOpenAIConfigr  r=  rE   r�  r¤   rŽ  Úopenai_chat_completionsrµ  r–  rø  r  r  )"r¥  r  rj  rù   r   rc  r™  rY  ro  rq  rr  rù  r%  rM  r#  rü  r~  rú   r‹  r]  r7  rü   rë  rì  Úcopilot_authÚcopilot_api_keyÚcopilot_headersÚopenai_metadatar;  r)  r*  Úuse_base_llm_http_handlerr+  r©  s"                                     r  Ú_complete_custom_openairù  ½	  sL  € ð Ÿ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ #× 6Ñ 6ÐØ×%Ñ%€MØ�k‰k€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HÜ(¨Ó-€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×#Ñ#€LØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gô (¨Ó1€Hàò 	Ü×Ñò	äÐ+Ó,ò	ð ð	 ð '„FÔð 	ò 	(Ü�?‰?ò	(ä×Ñò	(ô Ð&Ó'ð	 ð Ò(œŸ™€Gð Ð.Ò.ÝKõ	
ñ ,›oˆØ!-×!9Ñ!9Ó!;ˆÙ!<¸_Ó!MˆÙØ×"Ñ" =Ô1Ø'ˆàÐ Ø+8ˆ˜Ñ(ä×&Ò&¨8Ð+?Ü!7¸Ó!AˆØÐ&Ø*9ˆO˜JÑ'ô ×(Ñ(×3Ñ3Ó5€FÜ& vÓ.ò #‰ˆˆ1à�_Ò$à!"ˆO˜AÒð	#ô (7Ð7bÓ'cÐð2Ù$Ü,×7Ñ7ØØ!Ø!Ø$7Ø-Ü&›Ø#Ø /ØØ-Ø-Ø'ØØØØØ /ð# 8ó ‰Hô( /×9Ñ9ØØ!ØØ-Ü+ØØ!Ø'Ø#Ø /Ø-Ø#ØØ#5ØØ)Ø$7Ø-ð% :ó ˆHð< ×Ñ˜8 UÔ+à×ÑØØØ&Ø&¨Ð0ð	 	ô 	
ð €Oøô' ò à×ÑØØÜ! !›fØ&¨Ð0ð	 	ô 	
ð ˆûðús   È4AJ; Ê;	K+Ë"K&Ë&K+c                 óh  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }|xs t         j                  xs t#        d«      }|xs! t         j                  xs t#        d«      xs d}t$        j'                  |
|	|||t)        «       |||||||||||¬«      S )NÚMISTRAL_API_KEYÚMISTRAL_API_BASEzhttps://api.mistral.ai/v1rã  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r‹  r]  r7  rü   r  rh   r�  r¤   rŽ  rË  s                    r  Ú_complete_mistralrý  J
  s'  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GàÒIœŸ™ÒI¬JÐ7HÓ,I€GØÒlœ7×+Ñ+Òl¬zÐ:LÓ/MÒlÐQl€Hä ×+Ñ+ØØØØ/Ø%Ü“ØØ'ØØ%Ø%ØØØØØØ'ð# ,ó ð r	  c                 ó²  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }|xs< t        j                  xs* t        j                  xs t        d«      xs t        d«      }|xs! t        j                  xs t        d«      xs d}|xs t        j                  }t        |
|	||t         |||t#        «       |||||¬«      }|j%                  dd«      du r|j'                  |	||¬	«       |S )
NÚREPLICATE_API_KEYÚREPLICATE_API_TOKENÚREPLICATE_API_BASEzhttps://api.replicate.com/v1)r#  r%  rj  rü  rµ  r~  rq  rr  rŠ  rù   r  r™  r  ro  r7  FTrí  )r  rj  rù   r™  ro  rq  rr  rù  r%  r#  rü  r~  r  Úreplicate_keyrh   Úreplicate_chat_completionrµ  rŽ  r  rø  )r¥  r  rj  rù   r™  ro  rq  rr  rù  r%  r#  rü  r~  r  s                 r  Ú_complete_replicater  t
  s`  € ØŸ™€KØ�|‰|€HØ—[‘[€GØ×/Ñ/ÐØ—[‘[€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×'Ñ'€NØ ×0Ñ0€Oð 	ò 	-Ü× Ñ ò	-ä�?‰?ò	-ô Ð)Ó*ò	-ô Ð+Ó,ð ð Òqœ7×+Ñ+Òq¬zÐ:NÓ/OÒqÐSq€Hà+ÒI¬w×/IÑ/IÐä.ØØØØ%Ü#Ø'Ø%ØÜ“ØØØ-ØØô€Nð" ×Ñ˜8 UÓ+¨tÑ3à×ÑØØ!Ø,ð 	ô 	
ð Ðr	  c                 ó`  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }|xsC t        j                  xs1 t        j                  xs t         j"                  j%                  d«      }|xs t        j                  }t'        t(        d z  |xs. t        j                  xs t+        d«      xs t+        d«      xs d«      }t-        d«      }|�|s|j/                  d«      s|dz  }n|rt1        j2                  d«       t4        j7                  |	|||||
|||d||t9        «       ||¬	«      S )
NÚ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Úanthropic_text©r#  r7  r%  r  rj  rü  r~  rq  r]  rc  rü   ro  rŠ  rù   r  )r  rj  rù   r™  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r  Úanthropic_keyÚosÚenvironr  r   r  rh   rE   r¡  rv   r“  r�  r¤   rŽ  )r¥  r  rj  rù   r™  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   Údisable_url_suffixs                   r  Ú_complete_anthropic_textr  ª
  sœ  € ð Ÿ™€KØ�|‰|€HØ�k‰k€GØ×/Ñ/ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GàÒhœ×.Ñ.Òh´'·/±/ÒhÄRÇZÁZÇ^Á^ÐTgÓEh€GØ+ÒI¬w×/IÑ/IÐÜÜˆd‰
Øò 	3Ü×Ñò	3äÐ*Ó+ò	3ô Ð*Ó+ò	3ð 3ó€Hô !0Ð0VÓ WÐØÐÑ$6¸x×?PÑ?PÐQ_Ô?`Ø�NÑ"‰Ù	Ü×ÑÐhÔiä ×+Ñ+ØØØØØØ%Ø'Ø%Ø%Ø,ØØÜ“ØØð ,ó ð r	  c                 óö  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }|xsC t        j                   xs1 t        j                  xs t"        j$                  j'                  d«      }|xs t        j
                  }t)        t*        d z  |xs. t        j                  xs t-        d«      xs t-        d«      xs d«      }t/        d«      }|�|s|j1                  d«      s|dz  }n|rt3        j4                  d«       t6        j9                  ||||t        j
                  |t:        |||	t=        «       ||
||||¬«      }|j'                  d	d
«      s|du r|
j?                  |||¬«       |S )Nr  r  r  z%https://api.anthropic.com/v1/messagesr	  r—  zILITELLM_ANTHROPIC_DISABLE_URL_SUFFIX is set, skipping /v1/messages suffixr˜  r7  FTrí  ) r  rj  rù   r]  rc  r™  ro  rq  rr  rù  r%  r#  rü  r~  rü   r  r  r  r  r  r   r  rh   rE   r¡  rv   r“  rØ   r¤   rµ  rŽ  rø  )r¥  r  rj  rù   r   rc  r™  ro  rq  rr  rù  r%  r#  rü  r~  rü   r  r+  s                     r  Ú_complete_anthropicr  á
  sì  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ×/Ñ/ÐØ—[‘[€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—[‘[€GàÒhœ×.Ñ.Òh´'·/±/ÒhÄRÇZÁZÇ^Á^ÐTgÓEh€GØ+ÒI¬w×/IÑ/IÐô Üˆd‰
Øò 	3Ü×Ñò	3äÐ*Ó+ò	3ô Ð*Ó+ò	3ð 3ó€Hô !0Ð0VÓ WÐØÐÑ$6¸x×?PÑ?PÐQ_Ô?`Ø�NÑ"‰Ù	Ü×ÑÐhÔiä0×;Ñ;ØØØØÜ"×5Ñ5Ø%Ü#Ø'Ø%ØÜ“ØØØØØØ/ð# <ó €Hð& ×Ñ˜8 UÔ+¨{¸dÑ/Bà×ÑØØØ&ð 	ô 	
ð
 €Or	  c                 ór  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
|xs/ t        j                  xs t        d«      xs t        j                  }|xs! t        j                  xs t        d«      xs d}t        ||||	t        |
||t        «       ||¬«      }d|
v r|
d   du rt!        ||d|¬«      }|
j#                  dd	«      s|du r|j%                  |||¬
«       |S )NÚNLP_CLOUD_API_KEYÚNLP_CLOUD_API_BASEzhttps://api.nlpcloud.io/v1/gpu/)r#  r%  rj  rü  rµ  r~  rq  rr  rŠ  rù   r  r7  TÚ	nlp_cloud©rc  r  Frí  )r  rj  rù   rq  rr  rù  r%  r#  rü  r~  r  Únlp_cloud_keyrh   Únlp_cloud_chat_completionrµ  rŽ  rO   r  rø  )r¥  r  rj  rù   rq  rr  rù  r%  r#  rü  r~  r  r+  s                r  Ú_complete_nlp_cloudr  #  s?  € ØŸ™€KØ�|‰|€HØ—[‘[€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€Oà"Òq¤g×&;Ñ&;Òq¼zÐJ]Ó?^ÒqÔbi×bqÑbq€MàÒtœ7×+Ñ+Òt¬zÐ:NÓ/OÒtÐSt€Hä(ØØØØ%Ü#Ø'Ø%ØÜ“ØØô€Hð �?Ñ" °xÑ'@ÀDÑ'Hä&ØØØ +Øô	
ˆð ×Ñ˜8 UÔ+¨{¸dÑ/Bà×ÑØØØ&ð 	ô 	
ð €Or	  c                 óR  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	|xs< t        j                  xs* t        d«      xs t        d«      xs t        j                  }
|xs! t        j                   xs t        d«      xs d}t        j                  ||||t        |	||t        «       t        j                   |
|¬«      }d|	v r|	d   du rt#        ||d|¬	«      S |S )
NÚALEPH_ALPHA_API_KEYÚALEPHALPHA_API_KEYÚALEPH_ALPHA_API_BASEz$https://api.aleph-alpha.com/complete)r#  r%  rj  rü  rµ  r~  rq  rr  rŠ  Údefault_max_tokens_to_samplerù   r  r7  Trœ   r  )rj  rù   rq  rr  rù  r%  r#  rü  r~  r  Úaleph_alpha_keyrh   rœ   r¤   rµ  rŽ  r9  rO   )r¥  rj  rù   rq  rr  rù  r%  r#  rü  r~  r   s              r  Ú_complete_aleph_alphar!  U  s8  € Ø�|‰|€HØ—[‘[€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×'Ñ'€NØ ×0Ñ0€Oð 	ò 	Ü×"Ñ"ò	äÐ+Ó,ò	ô Ð*Ó+ò	ô �?‰?ð ð 	Òt”G×$Ñ$Òt¬
Ð3IÓ(JÒtÐNtð ô !×+Ñ+ØØØØ%Ü#Ø'Ø%ØÜ“Ü%,×%7Ñ%7ØØô€Nð �?Ñ" °xÑ'@ÀDÑ'Hä"ØØØ -Øô	
ð 	
ð Ðr	  c                 ó  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }|xs< t        j                   xs* t#        d«      xs t#        d«      xs t        j                  }t%        j&                  |	«      }t)        j*                  d|«       |dk(  r<|xs! t        j                  xs t#        d«      xs d}d|	v r8|	j-                  dd«      }	n%|xs! t        j                  xs t#        d«      xs d	}|xs t        j                  xs i }|€i }|�|j/                  |«       t)        j*                  d
|	|«       t)        j*                  d|«       t0        j3                  |	|||||
|||d||t5        «       |||¬«      S )NÚCOHERE_API_KEYÚ
CO_API_KEYzCohere route: %sÚv2ÚCOHERE_API_BASEzhttps://api.cohere.com/v2/chatzv2/r
  zhttps://api.cohere.ai/v1/chatzModel: %s, API Base: %szProvider Config: %sÚcohere_chat)r#  r7  r%  r  rj  rü  r~  rq  r]  rc  rü   ro  rŠ  rù   r‹  r  )r  rj  rù   rY  ro  rq  rù  r%  r#  rü  r~  r‹  r]  r7  rü   r  Ú
cohere_keyrF   r=   Úget_cohere_routerv   r“  r  rð  r�  r¤   rŽ  )r¥  r  rj  rù   rY  ro  rq  rù  r%  r#  rü  r~  r‹  r]  r7  rü   r(  Úcohere_routes                     r  Ú_complete_cohere_chatr+  †  sù  € ØŸ™€KØ�|‰|€HØ—[‘[€GØ×,Ñ,€MØ�k‰k€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ�I‰I€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gð 	ò 	Ü×Ñò	äÐ*Ó+ò	ô ˜,Ó'ò	ô �?‰?ð ô *×:Ñ:¸5ÓA€LÜ×ÑÐ+¨\Ô:à�tÒØÒxœw×/Ñ/Òx´>ÐBSÓ3TÒxÐXxˆà�E‰>Ø—M‘M %¨Ó,‰EàÒwœw×/Ñ/Òw´>ÐBSÓ3TÒwÐXwˆàÒ.œŸ™Ò.¨B€GØ€ØˆàÐ Ø�‰�}Ô%ä×ÑÐ2°E¸8ÔDÜ×ÑÐ.°Ô@Ü ×+Ñ+ØØØØØØ%Ø'Ø%Ø%Ø)ØØÜ“ØØ'Øð! ,ó ð r	  c                 óþ  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
|xs/ t        j                  xs t        d«      xs t        j                  }|xs! t        j                   xs t        d«      xs d}t        j                  ||||	t        |
||t!        «       ||d|¬«      S )NÚMARITALK_API_KEYÚMARITALK_API_BASEzhttps://chat.maritaca.ai/apiÚmaritalk)r#  r%  rj  rü  rµ  r~  rq  rr  rŠ  rù   r  rc  r™  )rj  rù   r™  rq  rr  rù  r%  r#  rü  r~  r  Úmaritalk_keyrh   rî   r¤   rµ  rŽ  )r¥  rj  rù   r™  rq  rr  rù  r%  r#  rü  r~  r0  s               r  Ú_complete_maritalkr1  Ç  sî   € Ø�|‰|€HØ—[‘[€GØ #× 6Ñ 6ÐØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€Oà!Òn¤W×%9Ñ%9Òn¼ZÐHZÓ=[ÒnÔ_f×_nÑ_n€LàÒpœ7×+Ñ+Òp¬zÐ:MÓ/NÒpÐRp€Hä&×1Ñ1ØØØØ%Ü#Ø'Ø%ØÜ“ØØØ&Ø-ð 2ó ð r	  c                 ó0  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }|xs/ t        j                  xs t        d«      xs t        j                  }|xs! t        j                   xs t        d«      xs d}t        j!                  |	|||
t"        |||t%        «       |||||¬«      S )NÚAMAZON_NOVA_API_KEYÚAMAZON_NOVA_API_BASEzhttps://api.nova.amazon.com/v1)r#  r%  rj  rü  rµ  r~  rq  rr  rŠ  rù   r  rü   rc  r™  )rj  rù   rc  r™  rq  rr  rù  r%  r#  rü  r~  rü   r  Úamazon_nova_api_keyrF   rî   r¤   rµ  rŽ  )r¥  rj  rù   rc  r™  rq  rr  rù  r%  r#  rü  r~  rü   s                r  Ú_complete_amazon_novar6  è  s  € Ø�|‰|€HØ�k‰k€GØ!$×!8Ñ!8ÐØ #× 6Ñ 6ÐØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—[‘[€GàÒpœ×4Ñ4Òp¼ÐG\Ó8]ÒpÔah×apÑap€GàÒr”G×$Ñ$Òr¬Ð7MÓ(NÒrÐRrð ô '×1Ñ1ØØØØ%Ü#Ø'Ø%ØÜ“ØØØØ/Ø-ð 2ó ð r	  c                 ó   — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }|xsd t        j                  xsR t         j"                  j%                  d«      xs1 t         j"                  j%                  d«      xs t        j                  }|xs t        j
                  }t&        j)                  |
|	|||||||||||t+        «       |¬«      S )NÚHF_TOKENÚHUGGINGFACE_API_KEYrÖ  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r7  rü   r  Úhuggingface_keyr  r  r  r�  r¤   rŽ  )r¥  r  rj  rù   r   rc  ro  rq  rù  r%  r#  rü  r~  r7  rü   r:  Ú
hf_headerss                    r  Ú_complete_huggingfacer<    s4  € ØŸ™€KØ—l‘l€HØ—[‘[€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—J‘J€FØ—[‘[€Gð 	ò 	Ü×"Ñ"ò	ä�:‰:�>‰>˜*Ó%ò	ô �:‰:�>‰>Ð/Ó0ò	ô �?‰?ð ð  Ò2¤7§?¡?€JÜ ×+Ñ+ØØØØ%ØØØØØ'Ø%ØØØ/Ü“Øð ,ó ð r	  c                 ó¨  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }t        j                  |
|	|||||||||||t!        «       |¬«      S )NrÖ  ©r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r7  rü   r�  r¤   rŽ  ©r¥  r  rj  rù   r   rc  ro  rq  rù  r%  r#  rü  r~  r7  rü   s                  r  Ú_complete_ocir@  7  sÑ   € ØŸ™€KØ—l‘l€HØ—[‘[€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—J‘J€FØ—[‘[€Gä ×+Ñ+ØØØØ%ØØØØØ'Ø%ØØØ/Ü“Øð ,ó ð r	  c                 ó  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }|xs t        d«      xs t         j                  }|xs d}t"        j%                  |
|	|||||||||||t'        «       ||¬«      S )NÚCOMPACTIFAI_API_KEYzhttps://api.compactif.ai/v1©r#  r%  ro  rü  rù   rj  r  r  r~  rq  rü   r   rc  rŠ  r7  r‹  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r‹  r7  rü   rF   r  r�  r¤   rŽ  ©r¥  r  rj  rù   r   rc  ro  rq  rù  r%  r#  rü  r~  r‹  r7  rü   s                   r  Ú_complete_compactifairE  Z  s  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ—J‘J€FØ—[‘[€GàÒQœÐ(=Ó>ÒQÄ'Ç/Á/€GàÒ8Ð8€Hô !×+Ñ+ØØØØ%ØØØØØ'Ø%ØØØ/Ü“ØØ'ð! ,ó ð r	  c                 óR  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }t        j                  ||||t        ||d |t        «       |¬«      }d|v r|d   du rt        ||d|¬«      S |S )N)r#  r%  rü  rj  rµ  r~  rq  rù   rr  rŠ  r  r7  Tr¨   r  )rj  rq  rr  rù  r%  r#  rü  r~  r¨   r¤   rµ  rŽ  rO   )	r¥  rj  rq  rr  rù  r%  r#  rü  r~  s	            r  Ú_complete_oobaboogarG  „  sº   € Ø—l‘l€HØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×'Ñ'€NØ ×0Ñ0€Oä×)Ñ)ØØØ%ØÜ#Ø'Ø%ØØÜ“Øô€Nð �?Ñ" °xÑ'@ÀDÑ'Hä"ØØØ +Øô	
ð 	
ð Ðr	  c                 ó2  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }|xs' t        j                  xs t        j                  d«      }|xs/ t        j                  xs t        j                   xs t#        d«      }|xs t        j                  }	 t$        j'                  |	|||||
||d||t)        «       |||¬«      }|j1                  dd«      r|j-                  |||d|i¬«       |S # t*        $ r'}|j-                  ||t/        |«      d|i¬«       |‚d }~ww xY w)	NÚDATABRICKS_API_BASEÚDATABRICKS_API_KEYÚ
databricks©r#  r7  r%  r  rj  rü  r~  rq  rc  rü   ro  rŠ  rù   r  r   ro  ru  r7  F)r  rj  rù   r]  ro  rq  rù  r%  r#  rü  r~  r7  rü   r  r  ÚgetenvÚdatabricks_keyrh   r�  r¤   rŽ  r–  rø  r  r  )r¥  r  rj  rù   r   ro  rq  rù  r%  r#  rü  r~  r7  rü   r+  r©  s                   r  Ú_complete_databricksrO  ¦  s³  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ�k‰k€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—J‘J€FØ—[‘[€Gð 	ò 	,Ü×Ñò	,ä�9‰9Ð*Ó+ð ð 	ò 	,Ü�?‰?ò	,ä×!Ñ!ò	,ô Ð*Ó+ð	 ð Ò(œŸ™€GðÜ/×:Ñ:ØØØØ#ØØ)Ø+Ø)Ø ,ØØÜ"“_ØØØð ;ó 
ˆð6 ×Ñ˜8 UÔ+à×ÑØØØ&Ø&¨Ð0ð	 	ô 	
ð €Oøô' ò à×ÑØØÜ! !›fØ&¨Ð0ð	 	ô 	
ð ˆûðús   Ä,E& Å&	FÅ/"FÆFc                 óÂ  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }t        j!                  |
|	|||||||||||t#        «       ||¬«      S )NrC  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r‹  r7  rü   r�  r¤   rŽ  rD  s                   r  Ú_complete_datarobotrQ  î  sß   € ØŸ™€KØ—l‘l€HØ—[‘[€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ—J‘J€FØ—[‘[€Gä ×+Ñ+ØØØØ%ØØØØØ'Ø%ØØØ/Ü“ØØ'ð! ,ó ð r	  c                 ó  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }|xs! t        j                  xs t        d«      xs d}|xs< t        j                  xs* t        j                   xs t        d«      xs t        d«      }t#        d«      xs d}t#        d«      xs d}||d	œ}|xs t        j                  }|r|j%                  |«       |}t        j&                  j)                  «       }t+        |«      D ]3  \  }}|d
k(  rd
|v r||   j%                  |«       Œ$|||<   Œ*||vsŒ/|||<   Œ5 t,        j/                  |	|||||
|||d||t1        «       |||¬«      }|j3                  |t4        j                  |¬«       |S )NÚ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-Titlerk  Ú
openrouterr¼  rí  )r  rj  rù   r]  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r  rF   Úopenrouter_keyrh   rð  ÚOpenrouterConfigr  r=  r�  r¤   rŽ  rø  r�  )r¥  r  rj  rù   r   ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   Úopenrouter_site_urlÚopenrouter_app_nameÚopenrouter_headersÚ_headersr;  r)  r*  r+  s                          r  Ú_complete_openrouterrc    s  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ�k‰k€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GàÒvœ7×+Ñ+Òv¬~Ð>SÓ/TÒvÐXv€Hð 	ò 	(Ü�?‰?ò	(ä×!Ñ!ò	(ô Ð.Ó/ò	(ô ˜,Ó'ð ô ",¨MÓ!:Ò!RÐ>RÐÜ!+¨MÓ!:Ò!G¸iÐð ,Ø&ñ!Ðð
 Ò0¤§¡€HÙØ×!Ñ! (Ô+à €Gô ×,Ñ,×7Ñ7Ó9€FÜ& vÓ.ò #‰ˆˆ1Ø�Òà˜Ñ.Ø Ñ"×)Ñ)¨!Õ,à%&� Ò"Ø�oÒ%Ø!"ˆO˜AÒð#ô ,×6Ñ6ØØØØØØ%Ø'Ø%Ø%Ø(ØØÜ“ØØØð! 7ó €Hð& ×Ñ˜H¬f¯n©nÐPXÐÔYà€Or	  c                 óÔ  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }|xs! t        j                  xs t        d«      xs d}|xs t        j                  xs t!        d«      }t!        d«      xs d}t!        d«      xs d}||dœ}|xs t        j                  }|r|j#                  |«       |}t        j$                  j'                  «       }t)        |«      D ]3  \  }}|d	k(  rd	|v r||   j#                  |«       Œ$|||<   Œ*||vsŒ/|||<   Œ5 t*        j-                  |	|||||
|||d
||t/        «       |||¬«      }|j1                  |t2        j                  |¬«       |S )NÚVERCEL_AI_GATEWAY_API_BASEúhttps://ai-gateway.vercel.sh/v1ÚVERCEL_AI_GATEWAY_API_KEYÚVERCEL_SITE_URLrX  ÚVERCEL_APP_NAMErZ  )zhttp-refererzx-titlerk  Úvercel_ai_gatewayr¼  rí  )r  rj  rù   r]  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r  rF   rh   rð  ÚVercelAIGatewayConfigr  r=  r�  r¤   rŽ  rø  r�  )r¥  r  rj  rù   r   ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   Úvercel_site_urlÚvercel_app_nameÚvercel_headersrb  r;  r)  r*  r+  s                          r  Ú_complete_vercel_ai_gatewayro  `  s  € ð Ÿ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ�k‰k€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gð 	ò 	-Ü×Ñò	-äÐ6Ó7ò	-ð -ð	 ð ÒSœŸ™ÒS¬JÐ7RÓ,S€Gä'Ð(9Ó:ÒRÐ>R€OÜ'Ð(9Ó:ÒG¸i€Oð (Ø"ñ€Nð
 Ò0¤§¡€HÙØ×Ñ˜hÔ'à€Gô ×1Ñ1×<Ñ<Ó>€FÜ& vÓ.ò #‰ˆˆ1Ø�Òà˜Ñ.Ø Ñ"×)Ñ)¨!Õ,à%&� Ò"Ø�oÒ%Ø!"ˆO˜AÒð#ô ,×6Ñ6ØØØØØØ%Ø'Ø%Ø%Ø/ØØÜ“ØØØð! 7ó €Hð& ×Ñ˜H¬f¯n©nÐPXÐÔYà€Or	  c                 óì  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }|j                  dd «      xs1 |j                  dd «      xs t        j                   xs t#        d«      }|j                  dd «      xs1 |j                  dd «      xs t        j$                  xs t#        d«      }|j                  dd «      xs |j                  dd «      xs t#        d	«      }|xs) t'        «       xs t#        d
«      xs t        j                  }|xs t        j                  xs t#        d«      }t)        |xs i «      }t*        j-                  ||
|t.        |||t1        «       |||||	||||||¬«      S )NÚ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ü  rµ  r~  rq  rr  rŠ  rt  rq  rw  Úgemini_api_keyr  r  rü   rc  r   rj  rY  )r  rj  rù   r]  rc  ro  rq  rr  rù  r%  r#  rü  r~  rü   r  r  rq  rh   rt  rŸ   rz   râ   r¤   rµ  rŽ  )r¥  r  rj  rù   r   rc  ro  rq  rr  rù  r%  r#  rü  r~  rü   rr  ru  rw  r}  Ú
new_paramss                       r  Ú_complete_vertex_ai_betar  ®  s  € ð Ÿ™€KØ�|‰|€HØ—[‘[€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—[‘[€Gð 	×ÑÐ,¨dÓ3ò 	*Ø×ÑÐ2°DÓ9ò	*ä×!Ñ!ò	*ô Ð(Ó)ð	 ð 	×ÑÐ-¨tÓ4ò 	+Ø×ÑÐ3°TÓ:ò	+ä×"Ñ"ò	+ô Ð)Ó*ð	 ð 	×ÑÐ0°$Ó7ò 	.Ø×ÑÐ6¸Ó=ò	.äÐ,Ó-ð ð 	ò 	ÜÓ!ò	ä�nÓ%ò	ô �?‰?ð	 ð ÒLœ7×+Ñ+ÒL¬zÐ:KÓ/L€HÜ& Ò'<¸"Ó=€JÜ!×,Ñ,ØØØ%Ü#Ø"Ø%ØÜ“Ø*Ø(Ø-Ø%ØØØØ/ØØØð' -ó ð r	  c                 óþ  — | j                   }| j                  }t        | «      }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }|j                  dd «      xs1 |j                  dd «      xs t         j"                  xs t%        d«      }|j                  dd «      xs1 |j                  dd «      xs t         j&                  xs t%        d«      }|j                  dd «      xs |j                  dd «      xs t%        d	«      }|xs t         j                  xs t%        d
«      }t)        |xs i «      }t+        ||¬«      }|t,        j.                  k(  r5t0        j3                  ||
|t4        |||t7        «       |||||	|||||¬«      }|S |t,        j8                  k(  r6t:        j3                  ||
|t4        |||t7        «       |||d |	||||||¬«      }|S |t,        j<                  k(  r5t>        j3                  ||
|t4        |||t7        «       |||||	|||||¬«      }|S |t,        j@                  k(  r5tB        j3                  ||
|t4        |||t7        «       |||||	|||||¬«      }|S |t,        jD                  k(  rOddl#m$}  |«       }||d<   ||d<   ||d<   tJ        j3                  |||
|||t7        «       d ||	|||d||xs i ¬«      }|S tM        j2                  ||
|t4        |||t7        «       ||||	|¬«      }d|v r|d   du r|du rtO        ||d|	¬«      S |S )Nrq  rr  rs  rt  ru  rv  rw  rx  ry  ÚVERTEXAI_API_BASE)r#  rq  )r#  r%  rü  rµ  r~  rq  rr  rŠ  rj  rt  rq  rw  r  r  ro  r™  rü   r   r|  r   )ÚVertexAgentEngineConfigr'  )r#  r7  r%  rü  r~  rq  rŠ  rù   rj  r  r  rü   r   rc  r‹  ro  )r#  r%  rü  rµ  r~  rq  rr  rŠ  rt  rq  rw  r  r  r7  TFr  )(r  rj  r]  rc  r™  ro  rq  rr  rù  r%  r#  rü  r~  r7  rü   r  r  rq  rh   rt  rz   rC   rB   ÚPARTNER_MODELSrç   r¤   rµ  rŽ  ÚGEMINIrâ   ÚGEMMArè   ÚMODEL_GARDENré   ÚAGENT_ENGINEÚ2litellm.llms.vertex_ai.agent_engine.transformationr‚  r�  r´   rO   )r¥  r  rj  r   rc  r™  ro  rq  rr  rù  r%  r#  rü  r~  r7  rü   rr  ru  rw  r~  Úmodel_router‚  Úvertex_agent_engine_configs                          r  Ú_complete_vertex_air‹  ò  sZ  € ØŸ™€KØ�|‰|€HÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ #× 6Ñ 6ÐØ—[‘[€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×'Ñ'€NØ ×0Ñ0€OØ—J‘J€FØ—[‘[€Gð 	×ÑÐ,¨dÓ3ò 	*Ø×ÑÐ2°DÓ9ò	*ä×!Ñ!ò	*ô Ð(Ó)ð	 ð 	×ÑÐ-¨tÓ4ò 	+Ø×ÑÐ3°TÓ:ò	+ä×"Ñ"ò	+ô Ð)Ó*ð	 ð 	×ÑÐ0°$Ó7ò 	.Ø×ÑÐ6¸Ó=ò	.äÐ,Ó-ð ð ÒNœ7×+Ñ+ÒN¬zÐ:MÓ/N€Hä& Ò'<¸"Ó=€JÜ2¸È~Ô^€KàÔ(×7Ñ7Ò7Ü>×IÑIØØØ)Ü'Ø&Ø)ØÜ"“_ØØ.Ø,Ø1ØØ#ØØ1ØØð% Jó 
ˆðZ Ððs 
Ô*×1Ñ1Ò	1Ü/×:Ñ:ØØØ)Ü'Ø&Ø)ØÜ"“_Ø.Ø,Ø1ØØØ#ØØ 3ØØØ!ð' ;ó 
ˆðp ÐðG 
Ô*×0Ñ0Ò	0ä5×@Ñ@ØØØ)Ü'Ø&Ø)ØÜ"“_ØØ.Ø,Ø1ØØ#ØØ1ØØð% Aó 
ˆðB Ðð[ 
Ô*×7Ñ7Ò	7ä<×GÑGØØØ)Ü'Ø&Ø)ØÜ"“_ØØ.Ø,Ø1ØØ#ØØ1ØØð% Hó 
ˆðV Ððo 
Ô*×7Ñ7Ò	7õ	
ñ -DÓ,EÐ"ð ,=ˆÐ'Ñ(Ø,>ˆÐ(Ñ)Ø/AˆÐ+Ñ,ä.×9Ñ9ØØØØ)Ø&Ø)Ü"“_ØØØØ#ØØØ +Ø6Ø’M˜rð! :ó 
ˆðT Ðô/ .×8Ñ8ØØØ)Ü'Ø&Ø)ØÜ"“_Ø.Ø,Ø1ØØ#ô
ˆð  �Ñ&¨?¸8Ñ+DÈÑ+LÐQ\Ð`eÑQeÜ&ØØØ$/Ø#ô	ð ð Ðr	  c                 óD  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }|j                  dd «      xs1 |j                  dd «      xs t        j                  xs t        d«      }|€t!        d«      ‚|xsE |j                  dd «      xs1 |j                  dd «      xs t        j                  xs t        d«      }|xs/ t        j                  xs t        j"                  xs t        d«      }t$        j'                  |	||
t(        |||t+        «       |||||||¬	«      }d
|v r|d
   du r|du r|S |S )NÚ	tenant_idÚpredibase_tenant_idÚPREDIBASE_TENANT_IDzšMissing Predibase Tenant ID - Required for making the request. Set dynamically (e.g. `completion(..tenant_id=<MY-ID>)`) or in env - `PREDIBASE_TENANT_ID`.rj  rû   ÚPREDIBASE_API_BASEÚPREDIBASE_API_KEY)r#  r%  rü  rµ  r~  rq  rr  rŠ  r  r  rj  r™  rù   r�  rü   r7  TF)r  rj  rù   r™  rq  rr  rù  r%  r#  rü  r~  rü   r  r  rŽ  rh   r…  Úpredibase_keyrÞ   r¤   rµ  rŽ  )r¥  r  rj  rù   r™  rq  rr  rù  r%  r#  rü  r~  rü   r�  Ú_model_responses                  r  Ú_complete_predibaser”  «  sÆ  € ØŸ™€KØ�|‰|€HØ�k‰k€GØ #× 6Ñ 6ÐØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—[‘[€Gð 	×Ñ˜K¨Ó.ò 	-Ø×ÑÐ4°dÓ;ò	-ä×&Ñ&ò	-ô Ð+Ó,ð	 ð ÐÜð ió
ð 	
ð
 	ò 	,Ø×Ñ˜z¨4Ó0ò	,à×Ñ˜z¨4Ó0ò	,ô ×Ñò	,ô Ð*Ó+ð ð ÒdœŸ™Òd¬G×,AÑ,AÒdÄZÐPcÓEd€Gä7×BÑBØØØ%Ü#Ø'Ø%ØÜ“ØØØØ-ØØØð Có €Oð$ �?Ñ" °xÑ'@ÀDÑ'HÈ[Ð\aÑMaØÐØÐr	  c                 ó”  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }|xs< |
j                  dd «      xs( |
j                  dd «      xs t        j                  xs d}|xs t        j                  xs t        d«      }t        j                  |¬«      }t         j#                  |	||t$        |
||t'        «       ||||||¬«      }d|
v r|
d   du r|d	u r|S |S )
Nrj  rû   z/https://codestral.mistral.ai/v1/fim/completionsÚCODESTRAL_API_KEY)r7  )r#  r%  rü  rµ  r~  rq  rr  rŠ  r  r  rj  r™  rù   rü   r7  TF)r  rj  rù   r™  rq  rr  rù  r%  r#  r~  r7  rü   r  r  rh   rU   rß   r¤   rµ  rŽ  )r¥  r  rj  rù   r™  rq  rr  rù  r%  r#  r~  r7  rü   Útext_completion_model_responser“  s                  r  Ú#_complete_text_completion_codestralr˜  æ  s^  € ð Ÿ™€KØ�|‰|€HØ�k‰k€GØ #× 6Ñ 6ÐØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ ×0Ñ0€OØ—J‘J€FØ—[‘[€Gð 	ò 	=Ø×Ñ˜z¨4Ó0ò	=à×Ñ˜z¨4Ó0ò	=ô ×Ñò	=ð =ð ð ÒKœŸ™ÒK¬JÐ7JÓ,K€Gä,3×,JÑ,JÐRXÔ,YÐ"ä7×BÑBØØØ5Ü#Ø'Ø%ØÜ“ØØØØ-ØØð Có €Oð" �?Ñ" °xÑ'@ÀDÑ'HÈ[Ð\aÑMaØÐØÐr	  c                 ó�  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }|xs& |j                  dd «      xs |j                  dd «      }|xs t        d«      xs d}|j!                  d«      }|j#                  d«      s|dz  }|�|r!|xs t$        j&                  xs t        d«      }t(        j+                  |
|	|t,        |d||||||||¬	«      }|j/                  d
d«      du r-|du r)|du r%t%        j0                  «       j3                  ||¬«      }|j/                  d
d«      s|du r|j5                  |	||d|i¬«       |S )Nrj  rû   ÚINCEPTION_API_BASEzhttps://api.inceptionlabs.ai/v1rR  z/fimÚINCEPTION_API_KEYrz  )r#  r%  rü  rµ  rù   rc  rj  r  r   r  r~  rq  rr  rü   r7  Fr{  Tro  ru  )r  rj  rù   rb  ro  rq  rr  rù  r%  r#  rü  r~  r¨  rü   r  rF   r   r¡  r  Úinception_keyrÑ   r¤   rµ  r  r   r¡  rø  )r¥  r  rj  rù   r   ro  rq  rr  rù  r%  r#  rü  r~  r¨  rü   Úpassed_api_baserª  s                    r  Ú#_complete_text_completion_inceptionrž    sé  € ð Ÿ™€KØ�|‰|€HØ�k‰k€GÜ+¨CÓ0€FØ—[‘[€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ ×0Ñ0€OØ—[‘[€Gà%Òw¨×)<Ñ)<¸ZÈÓ)NÒwÐRa×ReÑReÐfpÐrvÓRw€OØÒk¤.Ð1EÓ"FÒkÐJk€Hð �‰˜sÓ#€HØ×Ñ˜VÔ$Ø�FÑˆð
 Ð¡'ØÒYœW×2Ñ2ÒY´nÐEXÓ6Yˆä'×2Ñ2ØØØ%Ü#ØØ7ØØØØØ'Ø%ØØð 3ó €Ið" ×Ñ˜8 UÓ+¨uÑ4¸ÈÑ9MÐRaÐejÑRjÜ×6Ñ6Ó8×^Ñ^Ø%¸^ð _ó 
ˆ	ð ×Ñ˜8 UÔ+¨{¸dÑ/BØ×ÑØØØ'Ø&¨Ð0ð	 	ô 	
ð Ðr	  c                 ó¨  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }t        j                  |
||	||||||||t!        «       |||¬«      S )NrL  r>  r?  s                  r  Ú_complete_sagemaker_chatr   X  sÓ   € ð Ÿ™€KØ—l‘l€HØ—[‘[€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—J‘J€FØ—[‘[€Gä ×+Ñ+ØØØØØØ%Ø'Ø%Ø/ØØÜ“ØØØð ,ó ð r	  c                 óL  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
t        j                  |||	t        |
||||t        «       ||¬«      S )N)r#  r%  rü  rµ  r~  rq  r™  Úhf_model_namerr  rŠ  r  r  )r  r™  r¢  rq  rr  rù  r%  r#  rü  r~  rë   r¤   rµ  rŽ  )r¥  r  r™  r¢  rq  rr  rù  r%  r#  rü  r~  s              r  Ú_complete_sagemakerr£  }  s¥   € ØŸ™€KØ #× 6Ñ 6ÐØ×,Ñ,€MØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€Oä×#Ñ#ØØØ%Ü#Ø'Ø%Ø-Ø#ØÜ“ØØð $ó ð r	  c                 óª  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }| j                   }|xs t"        j                  }d|v r·t%        j&                  d«       |j)                  d«      }|j+                  «       j-                  «       }|j.                  r|j.                  |d<   |j0                  r|j0                  |d<   |j2                  r|j2                  |d<   d|vs|d   €|j4                  j6                  |d<   t9        j:                  |«      }|dk(  rht=        j>                  |t@        jB                  ¬«      }t9        jD                  |«      }tF        jI                  |||
||||||d	||tK        «       ||	||¬
«      S |dk(  r@|jM                  dd«      }tN        jI                  ||
|||||tK        «       |	||||||¬«      }|S |dk(  r@|jM                  dd«      }tF        jI                  |||
|||||d	||tK        «       ||	|¬«      }|S tF        jI                  |||
|||||d	||tK        «       ||	|¬«      }|S )NÚ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Úaws_region_nameÚclaude_platform©r#  Úproviderr&  rÈ  Úconversez	converse/r
  )r#  r%  r™  rü  r~  rq  rr  rŠ  r  rY  rü   r  r   rj  rù   Úconverse_likezconverse_like/rL  )(r  rj  rù   r]  r™  ro  rq  rr  rù  r%  r#  rü  r~  r‹  r]  r7  rü   r  rv   Úwarningr  Ú_get_credentialsÚget_frozen_credentialsÚ
access_keyÚ
secret_keyÚtokenÚmetaÚregion_namer<   Úget_bedrock_routerS   Úget_provider_chat_configrÍ   ÚBEDROCKÚget_claude_platform_modelr�  r¤   rŽ  r  rà   )r¥  r  rj  rù   r   r™  ro  rq  rr  rù  r%  r#  rü  r~  r‹  r]  r7  rü   r¥  ÚcredsÚbedrock_router+  s                         r  Ú_complete_bedrockr½  ™  s$  € ØŸ™€KØ—l‘l€HØ—[‘[€GÜ)¨#Ó.€FØ×/Ñ/ÐØ—[‘[€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ�I‰I€EØ×.Ñ.€NØ ×0Ñ0€OØ×)Ñ)€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gà+ÒI¬w×/IÑ/IÐà˜Ñ.Ü×Ñð fô	
ð %4×$7Ñ$7Ð8LÓ$MÐØ)×:Ñ:Ó<×SÑSÓUˆà×ÒØ38×3CÑ3CˆOÐ/Ñ0Ø×ÒØ7<×7GÑ7GˆOÐ3Ñ4Ø�;Š;Ø38·;±;ˆOÐ/Ñ0Ø OÑ3°ÐGXÑ7YÐ7aØ1C×1HÑ1H×1TÑ1TˆOÐ-Ñ.ä+×=Ñ=¸eÓD€MØÐ)Ò)Ü/×HÑHØÜ!×)Ñ)ô
ˆô !×:Ñ:¸5ÓAˆÜ$×/Ñ/ØØØØ#ØØ)Ø+Ø)Ø)Ø )ØØÜ"“_ØØØØ+ð# 0ó 
ð 	
ð& 
˜*Ò	$Ø—‘˜k¨2Ó.ˆÜ3×>Ñ>ØØØ1Ø)Ø+Ø)ØÜ"“_ØØ!ØØ#ØØØð ?ó 
ˆðn €OðM 
˜/Ò	)Ø—‘Ð.°Ó3ˆÜ(×3Ñ3ØØØØ#ØØ)Ø+Ø)Ø )ØØÜ"“_ØØØð 4ó 
ˆðH €Oô% )×3Ñ3ØØØØ#ØØ)Ø+Ø)Ø )ØØÜ"“_ØØØð 4ó 
ˆð$ €Or	  c                 ó´  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }t        j                  ||
||t         ||||	||||||t#        «       d¬«      S )NÚwatsonx)r#  r%  ro  rü  rµ  rù   rj  r  r  r~  rq  rr  rü   r™  r   rŠ  rc  )r  rj  rù   r]  r™  ro  rq  rr  rù  r%  r#  rü  r~  rü   rì   r¤   rµ  rŽ  )r¥  r  rj  rù   r   r™  ro  rq  rr  rù  r%  r#  rü  r~  rü   s                  r  Ú_complete_watsonxrÀ    s×   € ØŸ™€KØ—l‘l€HØ—[‘[€GÜ)¨#Ó.€FØ #× 6Ñ 6ÐØ—[‘[€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—[‘[€Gä"×-Ñ-ØØØØ%Ü#ØØØØØ'Ø%ØØØ-ØÜ“Ø%ð# .ó ð r	  c                 óþ  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }|xs9 |j                  dd «      xs% t        d«      xs t        d«      xs t        d«      }|xsf |j                  d|j                  d|j                  dd «      «      «      xs2 t        d«      xs% t        d	«      xs t        d
«      xs t        d«      }|j                  d|j                  dd «      «      }d }|�V|j!                  d|«      }|j!                  d|j!                  d|«      «      }|j!                  d|j!                  dd «      «      }|�||d<   t"        j%                  |	|||||
|||d||t'        «       |||¬«      S )NÚapikeyÚWATSONX_APIKEYÚWATSONX_API_KEYÚ
WX_API_KEYrÀ  rj  rû   ÚWATSONX_API_BASEÚWATSONX_URLÚWX_URLÚWML_URLÚwx_credentialsÚwatsonx_credentialsrù   r´  Úwatsonx_tokenÚwatsonx_textr¼  )r  rj  rù   r]  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r  rF   r  r�  r¤   rŽ  )r¥  r  rj  rù   r   ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   rÊ  r´  s                    r  Ú_complete_watsonx_textrÎ  :  s7  € ð Ÿ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gð 	ò 	(Ø×Ñ˜x¨Ó.ò	(äÐ*Ó+ò	(ô Ð+Ó,ò	(ô ˜,Ó'ð ð 	ò 	%Ø×ÑØØ×Ñ 
¨O×,?Ñ,?À
ÈDÓ,QÓRó
ò	%ô
 Ð,Ó-ò	%ô ˜-Ó(ò	%ô ˜(Ó#ò	%ô ˜)Ó$ð ð ,×/Ñ/ØØ×ÑÐ1°4Ó8ó€Nð
 €EØÐ!Ø!×%Ñ% e¨XÓ6ˆØ ×$Ñ$ X¨~×/AÑ/AÀ)ÈWÓ/UÓVˆØ×"Ñ"ØØ×ÑØ óó
ˆð ÐØ#(ˆ˜Ñ ä ×+Ñ+ØØØØØØ%Ø'Ø%Ø%Ø*ØØÜ“ØØØð! ,ó ð r	  c                 óx  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }|xs t        j                   }t        j                  ||||t        |||t        «       |¬«
      }d|v r|d   du rt        ||d|¬«      S |S )N)
r#  r%  r™  rü  rµ  r~  rq  rr  rŠ  r  r7  TÚvllmr  )r™  rq  rr  rù  r%  r#  rü  r~  r  Úvllm_handlerr¤   rµ  rŽ  rO   )	r¥  r™  rq  rr  rù  r%  r#  rü  r~  s	            r  Ú_complete_vllmrÒ  ‡  sË   € Ø×/Ñ/ÐØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×'Ñ'€NØ ×0Ñ0€Oà+ÒI¬w×/IÑ/IÐÜ!×,Ñ,ØØØ-Ø%Ü#Ø'Ø%ØÜ“Øô€Nð �?Ñ" °xÑ'@ÀDÑ'Hä"ØØØ &Øô	
ð 	
ð Ðr	  c                 ó  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }t        j                  xs |xs t        d«      xs d}|�d|vrd|› �|d<   t         j#                  |	|||||
|||d||t%        «       |||¬«      S )NÚOLLAMA_API_BASEúhttp://localhost:11434ÚAuthorizationúBearer Úollamar¼  )r  rj  rù   r]  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r  rh   r�  r¤   rŽ  ©r¥  r  rj  rù   r   ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   s                  r  Ú_complete_ollamarÚ  ¬  s  € ØŸ™€KØ�|‰|€HØ—[‘[€GÜ)¨#Ó.€FØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gä×ÑÒh 8Òh¬zÐ:KÓ/LÒhÐPh€HØÐ˜°gÑ=Ø%,¨W¨IÐ#6ˆ�Ñ ä ×+Ñ+ØØØØØØ%Ø'Ø%Ø%Ø$ØØÜ“ØØØð! ,ó ð r	  c                 óž  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }t        j                  xs |xs t        d«      xs d}|xsC t        j                   xs1 t"        j$                  j'                  d«      xs t        j                  }|�d|vrd|› �|d<   t(        j+                  |	|||||
|||d||t-        «       |||¬«      S )NrÔ  rÕ  ÚOLLAMA_API_KEYrÖ  r×  Úollama_chatr¼  )r  rj  rù   r]  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r  rh   Ú
ollama_keyr  r  r  r�  r¤   rŽ  rÙ  s                  r  Ú_complete_ollama_chatrß  Ô  sA  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gä×ÑÒh 8Òh¬zÐ:KÓ/LÒhÐPh€HàÒbœ×+Ñ+Òb¬r¯z©z¯~©~Ð>NÓ/OÒbÔSZ×SbÑSb€GØÐ˜°gÑ=Ø%,¨W¨IÐ#6ˆ�Ñ ä ×+Ñ+ØØØØØØ%Ø'Ø%Ø%Ø)ØØÜ“ØØØð! ,ó ð r	  c                 óÒ  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }t        j                  xs |}t        j!                  |	|||||
||||||t#        «       ||¬«      S )Nr  )r  rj  rù   rc  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r  r�  r¤   rŽ  )r¥  r  rj  rù   rc  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   s                  r  Ú_complete_tritonrá  þ  sâ   € ØŸ™€KØ�|‰|€HØ—[‘[€GØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gä×ÑÒ+ 8€HÜ ×+Ñ+ØØØØØØ%Ø'Ø%Ø%Ø/ØØÜ“ØØð ,ó ð r	  c                 óz  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }|xs/ t        j                  xs t        j                  xs t!        d«      }|xs t        j                  xs t!        d«      }|xs t        j                  }t"        j%                  |	|||||
|||d||t'        «       ||¬«      S )NÚCLOUDFLARE_API_KEYÚCLOUDFLARE_API_BASEÚ
cloudflarer  )r  rj  rù   r™  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r  Úcloudflare_api_keyrh   r�  r¤   rŽ  )r¥  r  rj  rù   r™  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   s                  r  Ú_complete_cloudflarerç  "  s"  € ØŸ™€KØ�|‰|€HØ�k‰k€GØ×/Ñ/ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GàÒjœ×3Ñ3Òj´w·±ÒjÌ*ÐUiÓJj€GØÒPœ7×+Ñ+ÒP¬zÐ:OÓ/P€Hà+ÒI¬w×/IÑ/IÐÜ ×+Ñ+ØØØØØØ%Ø'Ø%Ø%Ø(ØØÜ“ØØð ,ó ð r	  c                 óÚ  — | j                   }t        | «      }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
|xs t        j                   }|	j                  dd«      }
t        j                  ||||t        |	||t        «       ||¬«      }|
du r|d   d   d   d   }t!        ||d	|¬
«      S |S )Nr7  F)r#  r%  rj  rü  rµ  r~  rq  rr  rŠ  r  r   Trð  r   rÁ  rä  Úpetalsr  )rj  r]  rq  rr  rù  r%  r#  rü  r~  r7  r  r  Úpetals_handlerr¤   rµ  rŽ  rO   )r¥  rj  r   rq  rr  rù  r%  r#  rü  r~  r7  Úresp_strings               r  Ú_complete_petalsrì  I  sû   € Ø�|‰|€HÜ)¨#Ó.€FØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×'Ñ'€NØ ×0Ñ0€OØ�Z‰Z€FàÒ+œ7×+Ñ+€Hà× Ñ  ¨5Ó1€FÜ#×.Ñ.ØØØØ%Ü#Ø'Ø%ØÜ“ØØô€Nð ��~à+¨IÑ6°qÑ9¸)ÑDÀYÑOˆÜ"ØØØ (Øô	
ð 	
ð Ðr	  c                 óR  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }	 |du rt        |¬«      nd }t         j#                  |
|	||||||||||||t%        «       |¬«      }|S # t&        $ r'}|j)                  |	|t+        |«      d|i¬«       |‚d }~ww xY w)NFrÛ  r›  ro  ru  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r?   r�  r¤   rŽ  r–  rø  r  )r¥  r  rj  rù   r   rc  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r+  r©  s                     r  Ú_complete_snowflakerî  q  s@  € ØŸ™€KØ—l‘l€HØ—[‘[€GÜ" 3Ó'€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gðà,2°e©OŒK Õ(Àð 	ô 0×:Ñ:ØØØØ)ØØØ#ØØ+Ø)Ø)ØØØ 3Ü"“_Øð! ;ó 
ˆð: €Oøô ò à×ÑØØÜ! !›fØ&¨Ð0ð	 	ô 	
ð ˆûðús   Â5?C6 Ã6	D&Ã?"D!Ä!D&c                 óº  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }t        j                  xs |}t        j                  ||||||	|
||d||t!        «       ||¬«      S )NÚgradient_air  )r  rj  rù   ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r  r�  r¤   rŽ  )r¥  r  rj  rù   ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   s                 r  Ú_complete_gradient_airñ  ¦  sÖ   € ØŸ™€KØ�|‰|€HØ—[‘[€GØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€Gä×ÑÒ+ 8€HÜ ×+Ñ+ØØØØØØ%Ø'Ø%Ø%Ø)ØØÜ“ØØð ,ó ð r	  c                 ó~  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }|xs/ t        j                  xs t!        d«      xs t        j                  }|xs/ t        j"                  xs t!        d«      xs t        j                  }t$        j'                  |
|	|||||||||||t)        «       |t*        ¬«      S )NÚGDC_API_KEYÚGDC_API_BASErC  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r7  rü   r  Úgdc_keyrF   Úgdc_api_baser�  r¤   rŽ  rê   r?  s                  r  Ú_complete_gdcr÷  É  s  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—J‘J€FØ—[‘[€GàÒ\œŸ™Ò\¬N¸=Ó,IÒ\ÌWÏ_É_€GØÒeœ7×/Ñ/Òe´>À.Ó3QÒeÔU\×UeÑUe€Hä ×+Ñ+ØØØØ%ØØØØØ'Ø%ØØØ/Ü“ØÜ*ð! ,ó ð r	  c                 ó  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }|xs/ t        j                  xs t!        d«      xs t        j                  }t"        j%                  |
|	|||||||||||t'        «       |t(        ¬«      }|S )NÚBYTEZ_API_KEYrC  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r7  rü   r  Ú	bytez_keyrF   r�  r¤   rŽ  rñ   ©r¥  r  rj  rù   r   rc  ro  rq  rù  r%  r#  rü  r~  r7  rü   r+  s                   r  Ú_complete_bytezrü  ð  sþ   € ØŸ™€KØ—l‘l€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—J‘J€FØ—[‘[€GàÒ`œ×*Ñ*Ò`¬n¸_Ó.MÒ`ÔQX×Q`ÑQ`€Gä+×6Ñ6ØØØØ%ØØØØØ'Ø%ØØØ/Ü“ØÜ,ð! 7ó €Hð& €Or	  c                 ó  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }|xs/ t        j                  xs t!        d«      xs t        j                  }t"        j%                  |
|	|||||||||||t'        «       |t(        ¬«      }|S )NÚLEMONADE_API_KEYrC  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r7  rü   r  Úlemonade_keyrF   r�  r¤   rŽ  rõ   rû  s                   r  Ú_complete_lemonader     sÿ   € ØŸ™€KØ—l‘l€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—J‘J€FØ—[‘[€GàÒfœ×-Ñ-Òf´Ð@RÓ1SÒfÔW^×WfÑWf€Gä+×6Ñ6ØØØØ%ØØØØØ'Ø%ØØØ/Ü“ØÜ/ð! 7ó €Hð& €Or	  c                 óf  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }|xs/ t        j                  xs t!        d«      xs t        j                  }|xs! t        j                  xs t!        d«      xs d}t"        j%                  |
|	|||||||||||t'        «       |t(        ¬«      }|S )NÚOVHCLOUD_API_KEYÚOVHCLOUD_API_BASEú0https://oai.endpoints.kepler.ai.cloud.ovh.net/v1rC  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r7  rü   r  Úovhcloud_keyrF   r�  r¤   rŽ  rô   rû  s                   r  Ú_complete_ovhcloudr  @  s1  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ—[‘[€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—J‘J€FØ—[‘[€GàÒfœ×-Ñ-Òf´Ð@RÓ1SÒfÔW^×WfÑWf€Gð 	ò 	>Ü×Ñò	>äÐ-Ó.ò	>ð >ð	 ô ,×6Ñ6ØØØØ%ØØØØØ'Ø%ØØØ/Ü“ØÜ/ð! 7ó €Hð& €Or	  Úrespc                 ó:   — | j                  «       d   d   d   d   S )NÚdatar   Úoutput)Újson)r  s    r  Ú_custom_api_first_outputr  o  s"   € Ø�9‰9‹;�vÑ˜qÑ! (Ñ+¨AÑ.Ð.r	  c                 óÂ  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	t        j                   xs |xs d}
|
�|
dk(  rt        d«      ‚	 dj                  |D �cg c]  }|d   ‘Œ	 c}«      }t        j                  j                  |
|||g|||	|j                  d«      dœdœ|j                  di «      ¥¬	«      }	 t        |«      }||j                   d
   j"                  _        t'        t)        j(                  «       «      |_        ||_        |S c c}w )Nr
  zGapi_base not set. Set api_base or litellm.api_base for custom endpointsú rä  Útop_k)Úpromptr9  r4  r5  r  )r#  r  rk  )ro  r  r   )rj  ro  r(  r9  r%  r#  rü  r4  r5  r  r…  ÚjoinÚmodule_level_clientÚpostr  r  rð  rÁ  rä  r  rÙ  rô  )r¥  rj  ro  r(  r9  r%  r#  rü  r4  r5  rÀ  rÁ  r  r  Ústring_responses                  r  Ú_complete_customr  s  sU  € Ø—l‘l€HØ—[‘[€GØ—J‘J€FØŸ™€JØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØŸ™€KØ—9‘9€Eä×!Ñ!Ò3 XÒ3°€CØ
€{�c˜R’iÜÐbÓcÐcðð" —H‘HÀÖI°W˜g iÓ0ÒIÓJ€FÜ×-Ñ-×2Ñ2ØØàà!˜(Ø(Ø*ØØŸ™ GÓ,ññ

ð �j‰j˜ rÓ*ð

ð 3ó €Dðô 6°dÓ;€Oà0?€N×Ñ˜1Ñ×%Ñ%Ô-Ü ¤§¡£Ó-€NÔØ €NÔØÐùòE Js   Â'Ec                 óä  — | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }| j                  }d }t         j"                  D ]  }|d   |k(  sŒ|d   }Œ |€t%        ||¬«      ‚t'        |||¬«      }|xs t         j                  xs i } |di d|“d|“d|“d|“d	t(        “d
|“d|“d|“d|
“d|“d|“d|	“d|“d|“d|“dt+        «       “Ž}|du rt-        ||||
¬«      S |S )Nr¬  Úcustom_handlerr  )Úasync_fnr7  Ú
custom_llmr#  r%  ro  rü  rµ  rù   rj  r  r  r~  rq  rr  rü   r™  r   rŠ  Trá  r  )r  rj  rù   r   rc  r™  ro  rq  rr  rù  r%  r#  rü  r~  r7  rü   r  Úcustom_provider_mapr(   rš   rµ  rŽ  rO   )r¥  r  rj  rù   r   rc  r™  ro  rq  rr  rù  r%  r#  rü  r~  r7  rü   r  ÚitemÚ
handler_fnr+  s                        r  Ú_complete_custom_providersr  ¸  sà  € ð Ÿ™€KØ—l‘l€HØ—[‘[€GØ—J‘J€FØ!$×!8Ñ!8ÐØ #× 6Ñ 6ÐØ�k‰k€GØ×.Ñ.€NØ—}‘}€IØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ—J‘J€FØ—[‘[€Gà'+€NÜ×+Ñ+ò 4ˆØ�
ÑÐ2Ó2Ø!Ð"2Ñ3‰Nð4ð ÐÜ$¨5ÐFYÔZÐZô /¸ÈFÐ_mÔn€JàÒ.œŸ™Ò.¨B€Gñ !ò Ùðáðñ ðñ &ð	õ
 $ðñ ðñ ðñ  ðñ ðñ (ðñ &ðñ ðñ ðñ .ðñ ðô  ”ð!€Hð$ ��~Ü"Ø&ØØ 3Øô	
ð 	
ð €Or	  c                 ót  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }ddlm}  |«       j#                  |xs t$        j                  |xs t$        j                  ¬«      \  }}|xs t$        j
                  }t&        j)                  |
||	|||||||||t+        «       |||¬«      S )Nr   )ÚLangGraphConfig©rj  rù   r¼  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   Ú*litellm.llms.langgraph.chat.transformationr  Ú$_get_openai_compatible_provider_infor  r�  r¤   rŽ  )r¥  r  rj  rù   r   rc  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r  s                    r  Ú_complete_langgraphr#  ÷  s/  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ�k‰k€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GåJñ
 	Ó×>Ñ>ØÒ-œW×-Ñ-ØÒ*œ7Ÿ?™?ð 	?ó 	ñØØð Ò(œŸ™€Gä ×+Ñ+ØØØØØØ%Ø'Ø%Ø%Ø/ØØÜ“ØØØð! ,ó ð r	  c                 ót  — | j                   }| j                  }| j                  }t        | «      }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }ddlm}  |«       j#                  |xs t$        j                  |xs t$        j                  ¬«      \  }}|xs t$        j
                  }t&        j)                  |
||	|||||||||t+        «       |||¬«      S )Nr   )ÚLangFlowConfigr   r¼  )r  rj  rù   r]  rc  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   Ú)litellm.llms.langflow.chat.transformationr%  r"  r  r�  r¤   rŽ  )r¥  r  rj  rù   r   rc  ro  rq  rù  r%  r#  rü  r~  r]  r7  rü   r%  s                    r  Ú_complete_langflowr'  (  s/  € ØŸ™€KØ�|‰|€HØ�k‰k€GÜ)¨#Ó.€FØ!$×!8Ñ!8ÐØ�k‰k€GØ×.Ñ.€NØ—[‘[€GØ—l‘l€HØ—9‘9€EØ×.Ñ.€NØ ×0Ñ0€OØ×.Ñ.€NØ—J‘J€FØ—[‘[€GåHñ
 	Ó×=Ñ=ØÒ-œW×-Ñ-ØÒ*œ7Ÿ?™?ð 	>ó 	ñØØð Ò(œŸ™€Gä ×+Ñ+ØØØØØØ%Ø'Ø%Ø%Ø/ØØÜ“ØØØð! ,ó ð r	  c,                 ó,*  ‡,— | €t        d«      ‚t        |¬«      }t        |¬«      }t        |¬«      }t	        |¬«      }t        |)¬«      })t        t        «       «      }-‰,j                  dd	«      }.‰,j                  d
d	«      }/|/sÆ|rÄddl	m
}0 ddlm}1 ddlm}2 t        t         |2   dz  |«      }3|1j#                  |3¬«      rŠ |0�di d| “d|“d|#“d|$“d|“d|“d|“d|“d|“d|“d|“d|
“d|	“d|“d|“d|“d|“d |“d!|“d"|“d#|“d$|“d%|“d&|“d'|“d(|“d)|“d*|“d+|“d,|“d-|“d.| “d/|!“d0|"“d1|%“d2|&“d3|'“d4|(“d5|“d6|)“d7|“d8|*“d9|+“‰,¤ŽS ‰,j%                  d:d«      }4‰,j%                  d;d«      }5‰,j%                  d<d«      }6t        t&        dz  ‰,j%                  d=d«      «      }7‰,j%                  d>d?«      }8‰,j%                  d@d«      }9‰,j%                  dAd	«      }:‰,j%                  dBd«      };‰,j%                  dCd«      }<‰,j%                  dDd«      }=‰,j%                  dEd«      }>‰,j%                  dFd«      }?‰,j%                  dGd«      }@‰,j%                  dHd«      }At        t(        t*        t(           z  dz  ‰,j%                  dId«      «      }B‰,j%                  dJd«      xs |}C‰,j%                  dKd«      }D‰,j%                  dLd«      }E‰,j%                  dMd«      }F|C€i n
t-        C«      }C|�Cj/                  |«       t0        j2                  �+	 t5        t0        j2                  «      }GCj/                  |G«       ‰,j%                  dOd«      }I‰,j%                  dPd«      }J‰,j%                  dQd«      }K‰,j%                  dRd«      }L‰,j%                  dSd«      }M‰,j%                  dTd«      }N‰,j%                  dUd«      }O‰,j%                  dVd«      }P‰,j%                  dWd«      }Q‰,j%                  dXd«      }R‰,j%                  dYd«      }S‰,j%                  dZd«      }T‰,j%                  d[d«      }U‰,j%                  d\d«      }V‰,j%                  d]d«      }W‰,j%                  d^d«      }X‰,j%                  d_d«      }Y‰,j%                  d`d«      }Z‰,j%                  dad«      xs# t=        |?t,        «      r|?j%                  da«      nd}[‰,j%                  dbd«      }\‰,j%                  dcd	«      }]‰,j%                  ddd	«      }^‰,j%                  ded	«      }_‰,j%                  dfd«      }`‰,j%                  dgd	«      }at        t>        dz  ‰,j%                  dhd«      «      }bt        t,        dz  ‰,j%                  did«      «      }c‰,j%                  djd«      }dtA        |Dxs d	EF¬k«      }tC        ‰,¬l«      }ei }fddml"m#}g ddnlm$}h |gjK                  |et        tL        |h   |«      | t        t>        dz  ‰,j%                  dB«      «      |t        t&        dz  ‰,j%                  do«      «      ‰,j%                  d:«      xs |%¬p«       t=        |<tN        «      rP|<jQ                  be¬q«      r=|<jS                  | |ebc‰,j%                  drd«      ‰,j%                  dsd«      ‰,¬t«      \  } }}idrtU        |ddu¬v«      }	 |%�|%}4tW        ˆ,fdw„dxD «       «      }j|jrd}JnI�I}Jt        tN        |<«      }kAxs t0        jX                  }A|A�t[        �di |-¤ŽS |(�3|(D �lcg c]  }l|ldy   | k(  sŒldz   ‘Œ }m}lt1        j\                  �dd{|mi|-¤ŽS t0        j^                  r%| t0        j^                  v rt0        j^                  |    } ta        «       }ntc        |nd|t1        jd                  «       «       ‰,j%                  d}d	«      duu rd}};|�|} d}};tf        D �oci c]  }o|o‰,v sŒo‰,|o   “Œ }p}oti        | |;|4|'|prtk        �di p¤Žnd¬~«      \  } };}q}4tm        | |;||4¬«      \  }r} to        |;| ¬€«      stq        |¬«      }B�&Cj/                  ts        jt                  B|;¬�«      «       n�:tw        nd‚«      r.|;njx                  dB<   ‰,j%                  dƒd«      |njx                  d„<   t{        j|                  |‰,|;t        «       t€        ¬…«      }O�P€Q�tƒ        | |;‰,|?¬†«       i }sSsTsUsVsWr6| i i}sSrSs|    dY<   TrTs|    dZ<   UrUs|    d[<   VrVs|    d\<   WrWs|    d]<   t…        |‰,j%                  dF«      xs i j%                  dDd«      t        t,        t>        t,        t>        t>        f   f   ‰,j%                  d‡«      xs i «      ¬ˆ«      }d}t|;�A|;t†        D �ucg c]  }u|ujˆ                  ‘Œ c}uv r!t‹        jŒ                  | t‡        |;«      [¬‰«      }tt�tj�                  |¬«      }Z� t=        Zt&        «      rZd	u rt‘        |¬«      }q�q}'i d|#“d|$“d|“d|“d|“d|“d|“d|“d|
“d|	“d|“d|“d|“d|“d |“d!|“d"|“i d| “dB|;“d#|“d$|“d%|“d&|“dPJ“d(|“d)|“d2|&“d'|“d|“d+|“d,|“d6|)“d7|“dŠ|�|n‰,j%                  dŠ«      “¥|| |!|"‰,j%                  d‹«      [dŒœ¥}vt“        �di |v¤e¤Ž}it•        | |v|e|;‰,j%                  d�«      dudut¬Ž«      }wt0        j–                  r0ij%                  d�d«      rij                  d�«      }xt™        ||x¬�«      }t›        �di de_“d3|'“d>|8“d@|9“dA|:“dB|;“d:|4“d‘‰,j%                  d‘d«      “d’t0        j^                  “d“|=“dE|>“dF|?“dG@“d^X“d”a“dWQ“dUO“dXR“dVP“dQK“dc‰,j%                  dc«      “d•‰,j%                  d•«      “dL‰,j%                  dL«      “da[“d–‰,j%                  d–«      “d—‰,j%                  d—«      “d_Y“d˜s“d™‰,j%                  d™«      “db\“dš‰,j%                  dš«      “dhb“dic“dTN“d›‰,j%                  d›d«      “dœ‰,j%                  dœd	«      “d2|&“d�‰,j%                  d�«      “dž‰,j%                  dž«      “dŸ‰,j%                  dŸ«      “d ‰,j%                  d «      “d¡‰,j%                  d¡«      “d¢‰,j%                  d¢«      “d£‰,j%                  d£«      “dPJ“d|“d¤‰,j%                  d¤d	«      “d¥‰,j%                  d¥«      “d¦‰,j%                  d¦«      “d§‰,j%                  d§d	«      “tœ        D �yci c]  }y|y‰,v sŒy‰,|y   “Œ c}y¤Ž}ft        tN        k«      jŸ                  | |w|f|;¬¨«       |5s|6s|7r9‰,j                  d=d«       t¡        | ||||5|6k_‰,j%                  d©d«      |;|7|¬ª«      S t£        i«      }zrj%                  d««      d¬k7  rtm        | |;|||z|4¬­«      \  }r} [xs | }{rj%                  d««      d¬k(  rš|.s˜dd®lRmS}| t©        i«      \  }i}}t=        |t,        «      r
d¯|v r|id+<   nB}�@ij%                  d+|«      }~t=        |~t,        «      ri ~¥d¯}i¥id+<   n~�	~}d°œid+<   nd¯}iid+<   |j«                  | |Cn|'|4_kif|`|;t­        «       |¬±«      S |;d²k(  rt¯        j°                  | «      s$|;d}k(  r-t0        j²                  j±                  {«      rt©        i«      \  }i}tµ        �di d³{“de_“d:|4“d3|'“d2|&“df`“dB|;“d˜s“d5|“dJC“d_Y“d´‰,“dzf“d@|9“dµk“dPJ“d|
“d|“dE|>“d| “d¶n“d·i“dSM“d¸t“d8|*“d|“d|“dc]“d|“d|“Ž}€|;d}k(  rt·        €«      }�|�S |;d¹k(  rt¹        €«      }�|�S |;dºk(  rt»        €«      }�|�S |;d»k(  rt½        €«      }�|�S |;d¼k(  s-d½| v s)d¾| v s%|;t0        j¾                  v r ‰,j%                  dc«      duu rtÁ        €«      }�|�S |;d¿k(  rtÃ        €«      }�|�S |;dÀk(  rtÅ        €«      }�|�S |;dÁk(  rtÇ        €«      }�|�S |;dÂk(  rtÉ        €«      }�|�S |;dÃk(  rtË        €«      }�|�S |;dÄk(  rtÍ        €«      }�|�S |;dÅk(  rtÏ        €«      }�|�S |;dÆk(  rtÑ        €«      }�|�S |;dÇk(  rtÓ        €«      }�|�S |;dÈk(  rtÕ        €«      }�|�S |;dÉk(  rt×        €«      }�|�S |;dÊk(  rtÙ        €«      }�|�S |;dËk(  rtÛ        €«      }�|�S |;dÌk(  rtÝ        €«      }�|�S | t0        jÞ                  v r|;dÍv sl|;dÎk(  sg|;dÏk(  sb|;dÐk(  s]|;dÑk(  sX|;dÒk(  sS|;dÓk(  sN|;dÔk(  sI|;dÕk(  sD|;dÖk(  s?|;d²k(  s:|;d×k(  s5|;dØk(  s0|;dÙk(  s+|;t0        jà                  v stã        jä                  |;«      sdÚ| v rtç        €«      }�|�S |;dÛk(  rté        €«      }�|�S dÜ| v s|;dÜk(  s| t0        jê                  v rtí        €«      }�|�S dÙ| v s|;dÙk(  s| t0        jî                  v r	 �S |;dÝk(  rtñ        €«      }�|�S |;dÞk(  rtó        €«      }�|�S |;dßk(  rtõ        €«      }�|�S |;dàk(  rt÷        €«      }�|�S |;dák(  s|;dâk(  rtù        €«      }�|�S |;dãk(  rtû        €«      }�|�S |;däk(  rtý        €«      }�|�S |;dåk(  rtÿ        €«      }�|�S |;dæk(  r�t        €«      }�|�S |;dçk(  r�t        €«      }�|�S |;dèk(  r�t        €«      }�|�S |;dék(  r�t        €«      }�|�S |;dêk(  r�t	        €«      }�|�S |;dëk(  r�t        €«      }�|�S |;dìk(  r�t        €«      }�|�S |;dík(  rt        dî«      ‚|;dïk(  s|;dðk(  r�t        €«      }�|�S |;dñk(  r�t        €«      }�|�S |;dòk(  r�t        €«      }�|�S |;dók(  r�t        €«      }�|�S |;dôk(  r�t        €«      }�|�S |;dõv r�t        €«      }�|�S |;dök(  r�t        €«      }�|�S |;d÷k(  r�t        €«      }�|�S |;døk(  r�t        €«      }�|�S |;dùk(  r�t!        €«      }�|�S |;dúk(  r�t#        €«      }�|�S |;dûk(  r�t%        €«      }�|�S |;dük(  r�t'        €«      }�|�S |;dýk(  r�t)        €«      }�|�S |;dþk(  r�t+        €«      }�|�S |;dÿk(  s| t0        �j,                  v r�t/        €«      }�|�S |;�d k(  s| t0        �j0                  v r�t3        €«      }�|�S |;�dk(  r�t5        €«      }�|�S |;�dk(  r�t7        €«      }�|�S |;�dk(  r�t9        €«      }�|�S |;�dk(  r�t;        €«      }�|�S |;�dk(  s| t0        �j<                  v r�t?        €«      }�|�S |;�dk(  r�tA        €«      }�|�S |;t0        �jB                  v r�tE        €«      }�|�S |;�dk(  r�tG        €«      }�|�S |;�dk(  r�tI        €«      }�|�S �tK        | |;�¬	«      ‚# t6        $ r!}Ht9        j:                  dNH«       Y d}H~H�Œ¦d}H~Hww xY wc c}lw c c}ow c c}uw c c}yw # t6        $ r}H�tM        | |;H|-‰,�¬
«      ‚d}H~Hww xY w(  a”  
    Perform a completion() using any of litellm supported llms (example gpt-4, gpt-3.5-turbo, claude-2, command-nightly)
    Parameters:
        model (str): The name of the language model to use for text completion. see all supported LLMs: https://docs.litellm.ai/docs/providers/
        messages (List): A list of message objects representing the conversation context (default is an empty list).

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

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

    Note:
        - This function is used to perform completions() using the specified language model.
        - It supports various optional parameters for customizing the completion behavior.
        - If 'mock_response' is provided, a mock completion response is returned for testing or debugging.
    Nzmodel param not passed in.rš  )rD  )rE  )rr  )rZ  Ú_skip_responses_api_bridgeFÚ_skip_mcp_handlerr   )Úacompletion_with_mcp)ÚLiteLLM_Proxy_MCP_Handler)Ú	ToolParamr#  r%  r2  r3  rü   r4  r5  r6  r7  r8  rr  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  rs  rI  rR  rS  rT  rU  rV  rû   rW  rù   rX  rY  rZ  r[  r]  r^  rj  rv  rw  rb  Úforce_timeoutrø   rr  Úverboserc  rd  r”  rM  r  Úproxy_server_requestra  Úprovider_specific_headerro  Úensure_alternating_rolesÚuser_continue_messageÚassistant_continue_messageú$Failed to get proxy auth headers: %sr  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_keyr¢  Úsupports_system_messageÚ
base_modelÚ(disable_add_transform_inline_image_blockr¨  Úatext_completionr  r   zno-logrm  rn  Úlitellm_system_prompt)r%  r2  r3  r4  ©r(  re  rg  ri  rk  )rm  rl  ro  rp  )r#  r%  rl  rm  rn  ro  rp  rq  T)r%  Úsystem_promptÚmerge_with_first_systemc              3   óL   •K  — | ]  }d ‰j                  |«      xs dv –— Œ y­w)Úmodel_groupr  N©r  )r  r)  r(  s     €r  r  zcompletion.<locals>.<genexpr>�  s#   øè ø€ Ò#uÈq M°f·j±jÀ³mÒ6IÀrÔ$JÑ#uùs   ƒ!$)rM  rL  Ú
model_namerq  Údeploymentsrç  rÄ  )r#  rc  rj  rù   rq  )r#  rc  r[  rj  r*  )r1  rc  r÷  r©  r¶  )Úglobal_timeoutrn   ©r#  rc  r(  r  Úmodel_file_id_mapping)r%  Úmodel_idrR  )r#  r¬  rD  r\  Úallowed_openai_params)rS  rT  rU  rV  rT  rD  Úadditional_drop_params)r#  Úpassed_paramsÚspecial_paramsrc  rU  Úremove_sensitive_keysÚadd_provider_specific_paramsr‹  Úfunctions_unsupported_model)r%  r2  Úlitellm_call_idÚmodel_alias_mapÚcompletion_call_idÚno_logrn  Úlitellm_trace_idÚlitellm_session_idr™  rL  Údrop_paramsÚ"merge_reasoning_content_in_choicesÚuse_litellm_proxyrl  r�  Ú	client_idÚclient_secretÚazure_usernameÚazure_passwordÚazure_scopeÚlitellm_request_debugÚtpmÚrpmÚuse_xai_oauth©r#  rA  r~  rq  rc  ru  )
r7  r6  rv  rw  rù  r  ru  rc  rb  rü   r  r  )r#  rc  r[  rD  rI  r  rj  )Úresponses_api_bridger  )r  r  rÖ  r�  rw  r(  rù  rü  r~  r‹  Ú
azure_textÚdeepseekr%  rx  zft:babbage-002zft:davinci-002Úfireworks_aiÚtogether_aiÚherokuÚragflowr  ÚgroqÚbedrock_mantleÚa2aÚgigachatÚsapÚaiohttp_openaiÚcometapiÚminimaxÚhosted_vllm)Nr�  Úcustom_openaiÚ	deepinfraÚ
perplexityÚ
nvidia_nimÚcerebrasÚbasetenÚ	sambanovaÚ
volcengineÚanyscaleÚnebiusÚwandbÚclarifaizft:gpt-3.5-turboÚmistralÚ	replicater
  rà  r  rœ   r'  Úcoherer/  Úamazon_novaÚhuggingfaceÚociÚcompactifair¨   rK  Ú	datarobotr\  rj  r�   z£Palm 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Úgeminir'  Ú	predibasery  rz  )Úsagemaker_chatÚsagemaker_novaÚ	sagemakerr&  r¿  rÍ  rÐ  rØ  rÝ  Útritonrå  ré  Ú	snowflakerð  ÚgdcÚbytezÚlemonadeÚovhcloudÚcustomÚ	langgraphÚlangflowr  r‚  r  )§r…  rp   rq   rs   rt   rr   r@  r  r  Ú.litellm.responses.mcp.chat_completions_handlerr+  Ú/litellm.responses.mcp.litellm_proxy_mcp_handlerr,  rŠ  r-  r   r   Ú_should_use_litellm_mcp_gatewayr  r�  rÏ   r   rœ  rð  r  r8  r:  r–  rv   r¯  rŽ  r  r~   rb   r‰  rf  rh  r‹  rŒ  r�  r�  Úget_chat_completion_promptr}   r  r•  r|   Úbatch_completion_modelsr\  rR   rö  rX   r1   r`   rI   r#  r+  r3  r2   Úget_provider_specific_headersÚhasattrr÷  r.   Úresolver8   rn   rX  r   rÍ   rH  rS   r¸  Ú'translate_developer_role_to_system_roler‚   r!   rk   Úadd_function_to_promptr�   r    r0   Úupdate_environment_variablesr  r"   Úlitellm.completion_extrasrn  r#   r¤   rŽ  r@   r  ÚAzureOpenAIGPT5ConfigrG   rƒ  r†  r�  r¥  Ú+openai_text_completion_compatible_providersr«  r¯  r±  r³  r¶  r¸  rÀ  rÅ  rÌ  rÑ  rÔ  rØ  rß  rä  rç  Úopen_ai_chat_completion_modelsÚopenai_compatible_providersrA   Úexistsrù  rý  Úreplicate_modelsr  Úclarifai_modelsr  r  r  r!  r+  r1  r6  r<  r@  rE  rG  rO  rQ  rc  ro  r  r‹  r”  r˜  rž  r   r£  r½  rÀ  rÎ  rÒ  rÚ  rß  rá  rç  Úpetals_modelsrì  Úsnowflake_modelsrî  rñ  r÷  rü  r   Úovhcloud_modelsr  r  Ú_custom_providersr  r#  r'  r(   r   )‚r#  r%  rü   r4  r5  r6  r7  r8  rr  r:  r9  r;  r<  r=  r>  r?  r@  rA  rI  rR  rB  rC  rD  rE  rG  rH  rF  r[  r\  rs  rY  rS  rT  rU  rV  r2  r3  rû   rW  rù   rX  rZ  r]  r^  r(  r¶  Úskip_responses_api_bridgeÚskip_mcp_handlerr+  r,  r-  Útools_for_mcprj  rv  rw  rb  r.  rr  r/  rc  rd  r”  rM  r  r0  ra  r1  ro  r2  r3  r4  Úproxy_headersr©  r  rý   r6  r7  rú   r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  r¢  rC  rD  rE  r¨  rF  r  r   r^  rm  rn  rG  rl  rq  rf  rh  r~  Úis_router_callrù  ÚmrO  rü  r)  Ú_supplemental_provider_paramsÚdynamic_api_keyÚresponses_api_model_infor™  r‹  r¬  Úoptional_param_argsÚprocessed_non_default_paramsrZ  rI  Ú_reasoning_summary_for_bridgerw  rn  Úrs_valÚeffr£  Ú_dispatch_ctxr+  s‚                                               `                                                                                     r  r¤   r¤   Y  sL  ø€ ðL €}ÜÐ5Ó6Ð6ä/¸ÔB€HÜ)°Ô6€Eä6À;ÔO€Kä*°Ô5€DÜ.¸ÔA€Hô #¤6£8Ó,€Dð (.§z¡zÐ2NÐPUÓ'VÐà$Ÿj™jÐ)<¸eÓDÐÙ¡ÝWõ	
õ 	8ô  $¤H¨YÑ$7¸$Ñ$>ÀÓFˆØ$×DÑDÈ=ÐDÔYÙ'ó -Ùð-á!ð-ñ $ð-ñ ,ð	-ñ
  ð-ñ (ð-ñ ð-ñ ð-ñ ð-ñ  .ð-ñ ð-ñ &ð-ñ '<ð-ñ &ð-ñ &ð-ñ  ð!-ñ" "2ð#-ñ$ #4ð%-ñ& &ð'-ñ( ð)-ñ* !0ð+-ñ, ð--ñ. ð/-ñ0 (ð1-ñ2 %8ð3-ñ4 "ð5-ñ6 *ð7-ñ8 ,ð9-ñ: "2ð;-ñ< $ð=-ñ> #4ð?-ñ@ *ðA-ñB ðC-ñD "2ðE-ñF "ðG-ñH (ðI-ñJ  ðK-ñL &ðM-ñN ,ðO-ñP "ðQ-ñR $6ðS-ñT  .ðU-ñV /LØñY-ð -ð\ �z‰z˜* dÓ+€HØ6<·j±jÀÐRVÓ6W€MØ#ŸZ™ZÐ(9¸4Ó@€OÜœt d™{¨F¯J©J°~ÀtÓ,LÓM€LØ!Ÿ:™: o°sÓ;€MØ—z‘z +¨tÓ4€IØ—Z‘Z 	¨5Ó1€GØ Ÿ*™*Ð%:¸DÓAÐØ!'§¡Ð,AÀ4Ó!HÐØ—
‘
˜4 Ó&€BØ—j‘j ¨TÓ2€HØŸ
™
 <°Ó6€JØ"(§*¡*Ð-CÀTÓ"JÐØ—
‘
˜;¨Ó-€IÜ&*Ü¤Ô*@Ñ!AÑAÀDÑHØ�
‰
Ð-¨tÓ4ó'Ðð �j‰j˜ DÓ)Ò:¨]€Gà39·:±:Ð>XÐZ^Ó3_ÐØEKÇZÁZÐPgÐimÓEnÐØHNÏ
É
ÐSoÐquÓHvÐØ�O‰b¬¨g«€GØÐ Ø�‰�}Ô%ä×ÑÐ%ð	NÜ#6´w×7IÑ7IÓ#JˆMØ�N‰N˜=Ô)ð  Ÿ™Ø�tó€Kð —*‘*˜]¨DÓ1€KØ!Ÿ:™: o°tÓ<€MØ*0¯*©*Ð5SÐUYÓ*ZÐ Ø Ÿ*™* ^°TÓ:€LàŸ
™
 <°Ó6€Jà"(§*¡*Ð-CÀTÓ"JÐØ#)§:¡:Ð.EÀtÓ#LÐØ#)§:¡:Ð.EÀtÓ#LÐØ$*§J¡JÐ/GÈÓ$NÐà"(§*¡*Ð-CÀTÓ"JÐØ—:‘:˜g tÓ,€EØ &§
¡
Ð+?ÀÓ FÐØ—z‘z +¨tÓ4€IØ—z‘z +¨tÓ4€IØ$Ÿj™jÐ);¸TÓBÐØ!Ÿ:™: o°tÓ<€MØ%+§Z¡ZÐ0IÈ4Ó%PÐØŸ
™
 <°Ó6ò Ü(2°:¼tÔ(Dˆ
�‰�|Ô$È$ð ð 7=·j±jÐAkÐmqÓ6rÐ,à#ŸZ™ZÐ(9¸5ÓA€OØ$Ÿj™jÐ);¸UÓCÐàŸ™ M°5Ó9€KØ—J‘J˜x¨Ó.€Fà—J‘J˜x¨Ó/€FäœC $™J¨¯
©
°;ÀÓ(EÓF€IÜ"¤4¨$¡;°·
±
Ð;MÈtÓ0TÓUÐØ#)§:¡:Ð.EÀtÓ#LÐä&ØØ!9Ò!B¸UØ3Ø#=ô	€Hô !BÈÔ PÐØ(*€Nõõ ;à×AÑAØ-Ü”dÐ+Ñ,¨hÓ7ØÜ ¤ t¡¨V¯Z©ZÐ8MÓ-NÓOØÜ"¤4¨$¡;°·
±
Ð;RÓ0SÓTØ—‘˜JÓ'Ò3¨8ð Bô ô Ð%Ô'8Ô9Ø×>Ñ>ØÐ4Fð 	?ô 	
ð  ×:Ñ:ØØØ1ØØ-ØŸ™ N°DÓ9Ø!Ÿ:™:Ð&6¸Ó=Ø!ð ;ó 	
ñ		
ØØØñ Ü0ØØ/Ø$(ô
ˆðF	
ØÐØˆHÜ #Ó#uÐTtÔ#uÓ uˆÙØ‰KØÐ$Ø%ˆKÜ,0Ô1BÐDWÓ,XˆØÒ8¤×!8Ñ!8ˆ	ØÐ Ü,ò Øñð ð Ð!Ø?IÖ!f¸!ÈQÈ|É_Ð`eÓMe !Ð$4Ó"5Ð!fˆKÐ!fÜ×2Ñ2ò Ø'ðØ+/ñð ô ×"Ò" u´×0GÑ0GÑ'GÜ×+Ñ+ØñˆEô !.£ˆÜ� ¬¯©«Ô9à�J‰J�w Ó&¨$Ñ.à")ÐØÐ$Ø!ˆEØ")ÐÜFZÖ/jÀÐ^_ÐciÒ^i°°6¸!±9±Ð/jÐ%Ð/jÜ@PØØ 3ØØáIfÔ$ÒEÐ'DÒEÐlpôA
Ñ=ˆÐ" O°Xô +EØØ 3Ø1Øô	+
Ñ'Ð  %ô ,Ð@SÐ[`ÕaÜ3¸%Ô@ˆEà#Ð/Ø�N‰NÜ+×IÑIØ-EØ(;ôôð Ð%¬'°.ÐBRÔ*SØCVˆN×)Ñ)Ð*?Ñ@Ø;A¿:¹:Ø! 4ó<ˆN×)Ñ)¨-Ñ8ô
 $×+Ñ+ØØØÜ9Ó;Ü#9ô
ˆð !Ð,Ð1FÐ1RØ"Ð.Ü0ØØ$7ØØ%õ	ð  ÐÙ¡5Ñ,>Á)ÉyØ"'¨ ÐÙ#ØDXÐ" 5Ñ)Ð*@ÑAÙØ5:Ð" 5Ñ)¨'Ñ2Ù!ØBTÐ" 5Ñ)Ð*>Ñ?ÙØ9BÐ" 5Ñ)¨+Ñ6ÙØ9BÐ" 5Ñ)¨+Ñ6ä6ØØ—j‘j Ó.Ò4°"×9Ñ9¸$ÀÓEÜ"&Ü”Sœ$œs¤C˜x™.Ð(Ñ)Ø—
‘
Ð2Ó3Ò9°ró#ô
ˆð .2ˆØÐ*Ð/BÔfrÖFsÐZbÀxÇ~Ã~ÒFsÑ/sÜ3×LÑLØÜ%Ð&9Ó:Ø%ôˆOð Ð&Ø&×NÑNÐX`ÐNÓaˆHð $Ð/ÜÐ2´DÔ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 ˜Lð7.&
ð8 ˜;ð9.&
ð: "Ð#6ð;.&
ð< ˜ð=.&
ð> Ð 0ð?.&
ð@ ˜ðA.&
ðB ˜ðC.&
ðD !Ð"4ðE.&
ðF 3à7ÐCñ 5à—Z‘ZÐ FÓGñM.&
ðP "3Ø(ØØ 0Ø%+§Z¡ZÐ0GÓ%HØ$ò[.&
Ðô^ .ÒZÐ0CÐZÐGYÑZˆÜ.LØØ-Ø-Ø 3Ø#)§:¡:Ð.FÓ#GØ"&Ø)-Ø+ô	/
Ð$ô ×)Ò)¨o×.AÑ.AØ)¨4ô/
ð 2A×1DÑ1DÐEbÓ1cÐ'Ü+°XÐIdÔeˆHô ,ó 4
Ù#ð4
áð4
ñ (ð4
ñ  ð	4
ñ
 ð4
ñ !4ð4
ñ ð4
ð #ŸJ™JÐ'8¸$Ô?ð4
ô $×3Ò3ð4
ñ  "ð4
ñ ð4
ñ "ð4
ñ "6ð4
ñ .ð4
ñ ð4
ñ  #8ð!4
ñ" "6ð#4
ñ$ $:ð%4
ñ& #8ð'4
ñ( (ð)4
ð* #ŸJ™JÐ'8Ô9ð+4
ð, %+§J¡JÐ/HÔ$Ið-4
ð. #)§*¡*Ð-DÔ"Eð/4
ñ0 "ð14
ð2 $ŸZ™ZÐ(:Ô;ð34
ð4  &Ÿz™zÐ*>Ô?ð54
ñ6 (ð74
ñ8  2ð94
ð: $ŸZ™ZÐ(:Ô;ð;4
ñ< 6^ð=4
ð> Ÿ
™
 =Ô1ð?4
ñ@  ðA4
ñB .ðC4
ñD "ðE4
ðF 06¯z©zÐ:^Ð`dÔ/eðG4
ðH %Ÿj™jÐ)<¸eÔDðI4
ñJ $ðK4
ðL "Ÿ:™:Ð&6Ô7ðM4
ðN —j‘j Ô-ðO4
ðP —j‘j Ô-ðQ4
ðR !Ÿ*™* _Ô5ðS4
ðT "Ÿ:™:Ð&6Ô7ðU4
ðV "Ÿ:™:Ð&6Ô7ðW4
ðX Ÿ
™
 =Ô1ðY4
ñZ $ð[4
ñ\ ð]4
ð^ #)§*¡*Ð-DÀeÔ"Lð_4
ð` —
‘
˜5Ô!ða4
ðb —
‘
˜5Ô!ðc4
ðd !Ÿ*™* _°eÔ<Ü+@ÖR CÀCÈ6ÂMˆs�F˜3‘KÑÒRñg4
ˆôj 	Ô Ó(×EÑEØØØ8Ø)Ø 3ð 	Fô 	
ñ ™O©|Ø�J‰J�~ tÔ,Ü"ØØØØØ+Ø /ØØ'Ø!Ÿ:™: l°DÓ9Ø$7Ø)Øôð ô* 0NÈoÓ/^Ð%Ø#×'Ñ'¨Ó/°;Ò>Ü.HØØ$7Ø#5ØØ!1Ø"?Ø!ô/Ñ+Ð$ eð )3Ò(;°eÐà#×'Ñ'¨Ó/°;Ò>ÑG`ÝFä&ZÐ[jÓ&kÑ#ˆO˜VäÐ*¬DÔ1°iÐCSÑ6SØ6F�Ð 2Ò3ØÐ#Ø,×0Ñ0Ð1CÐEUÓV�Ü˜c¤4Ô(Ø:T¸SÐ:TÀ)ÈVÑ:T�OÐ$6Ò7Ø�_à"%Ø#)ñ;�OÐ$6Ò7ð
 <EÀfÐ:M�OÐ$6Ñ7à'×2Ñ2ØØ!ØØ-ØØ!Ø'Ø#Ø /Ø-ØØØ$7Ü&›Øð 3ó ð ð" " XÒ-Ô2B×2WÑ2WÐX]Ô2^Ø 7Ò*Ü×-Ñ-×BÑBÐCYÔZä!UÐVeÓ!fÑˆO˜Qä9ó  
Ù#9ð 
á#ð 
ñ ð 
ñ ð	 
ñ
 $ð 
ñ ð 
ñ !4ð 
ñ  2ð 
ñ (ð 
ñ ð 
ñ (ð 
ñ ð 
ñ *ð 
ñ  ð 
ñ ð 
ñ  $ð! 
ñ" "ð# 
ñ$ ð% 
ñ& ð' 
ñ( ð) 
ñ* *ð+ 
ñ, ,ð- 
ñ. &ð/ 
ñ0 ,ð1 
ñ2 *ð3 
ñ4 ð5 
ñ6 $ð7 
ñ8 ,ð9 
ñ: ð; 
ñ< ð= 
ˆð@  'Ò)ô ' }Ó5ˆHðN ˆðM ! LÒ0ä+¨MÓ:ˆHðH ˆðG ! JÒ.ô *¨-Ó8ˆHð@ ˆð} ! JÒ.Ü)¨-Ó8ˆHðz ˆðw  Ð#;Ò;Ø 5Ñ(Ø 5Ñ(Ø"¤g×&YÑ&YÑYØ—
‘
Ð,Ó-°Ñ5ä7¸ÓFˆHðj ˆði ! NÒ2ä-¨mÓ<ˆHðd ˆðc ! MÒ1Ü,¨]Ó;ˆHð` ˆð_ ! HÒ,Ü'¨Ó6ˆHð\ ˆðY ! IÒ-ä(¨Ó7ˆHðT ˆðS ! EÒ)ä$ ]Ó3ˆHðN ˆðM ! FÒ*Ü% mÓ4ˆHðJ ˆðI !Ð$4Ò4Ü/°Ó>ˆHðF ˆðE ! EÒ)ô % ]Ó3ˆHð~ ˆð} ! JÒ.ä)¨-Ó8ˆHðx ˆðu ! EÒ)Ü$ ]Ó3ˆHðr ˆðq !Ð$4Ò4ä/°Ó>ˆHðl ˆðk ! JÒ.Ü)¨-Ó8ˆHðh ˆðg ! IÒ-Ü(¨Ó7ˆHðd ˆðc ! MÒ1Ü,¨]Ó;ˆHð` ˆðS ”g×<Ñ<Ñ<ÐATÐXhÑAhØ" oÒ5Ø" kÒ1Ø" lÒ2Ø" lÒ2Ø" jÒ0Ø" iÒ/Ø" kÒ1Ø" lÒ2Ø" jÒ0Ø" hÒ.Ø" hÒ.Ø" gÒ-Ø" jÒ0Ø"¤g×&IÑ&IÑIÜ#×*Ñ*Ð+>Ô?Ø! UÑ*ô /¨}Ó=ˆHðj ˆðg ! IÒ-Ü(¨Ó7ˆHðd ˆðc ˜EÑ!Ð%8¸KÒ%GÈ5ÔT[×TlÑTlÑKlä*¨=Ó9ˆHð^ ˆð] ˜5Ñ Ð$7¸:Ò$EÈÔRY×RiÑRiÑIiØðZ ˆðY !Ð$4Ò4Ü/°Ó>ˆHðV ˆðU ! KÒ/Ü*¨=Ó9ˆHðR ˆðQ ! KÒ/Ü*¨=Ó9ˆHðN ˆðM ! MÒ1Ü,¨]Ó;ˆHðJ ˆðI ! MÒ1Ð5HÈHÒ5TÜ,¨]Ó;ˆHðF ˆðE ! JÒ.Ü)¨-Ó8ˆHðB ˆðA ! MÒ1Ü,¨]Ó;ˆHð~ ˆð} ! MÒ1Ü,¨]Ó;ˆHðz ˆðy ! EÒ)Ý$ ]Ó3ˆHðv ˆðu ! MÒ1Ý,¨]Ó;ˆHðr ˆðq ! KÒ/Ý*¨=Ó9ˆHðn ˆðm ! LÒ0Ý+¨MÓ:ˆHðj ˆðg ! KÒ/Ý*¨=Ó9ˆHðd ˆðc ! LÒ0Ý+¨MÓ:ˆHð` ˆð_ !Ð$7Ò7Ý2°=ÓAˆHð\ ˆð[ ! FÒ*Üð vóð ð !Ð$4Ò4Ð8KÈxÒ8WÝ/°Ó>ˆHðP ˆðM ! KÒ/Ý*¨=Ó9ˆHðJ ˆðI ! KÒ/Ý*¨=Ó9ˆHðF ˆðE !Ð$?Ò?Ý:¸=ÓIˆHðB ˆðA !Ð$?Ò?Ý:¸=ÓIˆHð~ ˆð} !Ð$HÑHõ 0°Ó>ˆHðt ˆðs ! KÒ/å*¨=Ó9ˆHðn ˆðm ! IÒ-å(¨Ó7ˆHðh ˆðg ! IÒ-Ý(¨Ó7ˆHðd ˆðc ! NÒ2Ý-¨mÓ<ˆHð` ˆð_ ! FÒ*Ý% mÓ4ˆHð\ ˆð[ ! HÒ,Ý'¨Ó6ˆHðX ˆðU ! MÒ1Ý,¨]Ó;ˆHðR ˆðO ! HÒ,Ý'¨Ó6ˆHðL ˆðK ! LÒ0Ý+¨MÓ:ˆHðH ˆðE ! HÒ,°¼×9NÒ9NÑ0NÝ'¨Ó6ˆHðB ˆðA !¡KÒ/°5¼G×<TÒ<TÑ3TÝ*¨=Ó9ˆHð> ˆð= !¡MÒ1Ý,¨]Ó;ˆHð: ˆð7 !¡EÒ)Ý$ ]Ó3ˆHð4 ˆð3 !¡GÒ+Ý& }Ó5ˆHð0 ˆð/ !¡JÒ.Ý)¨-Ó8ˆHð, ˆð) !¡JÒ.°%¼7×;RÒ;RÑ2RÝ)¨-Ó8ˆHð& ˆð# !¡HÒ,Ý'¨Ó6ˆHð  ˆð !¤G×$=Ò$=Ñ=å1°-Ó@ˆHð ˆð !¡KÒ/å*¨=Ó9ˆHð ˆð !¡JÒ.å)¨-Ó8ˆHð ˆõ )¨uÐJ]Õ^Ð^øô{ ò 	NÜ×"Ñ"Ð#IÈ1×MÒMûð	Nüò` "gùò" 0kùò` GtùòR SøôJ
 ò 
åØØ 3Ø Ø"Øõ
ð 	
ûð
ús©  Ì*AR2 Ú
AAS3 ÛAS3 Û#ASÛ1ASÛ8AS3 ÜBAS3 Þ	AS$ÞAS$Þ&F*AS3 åAS)å#MAS3 ò;	AS.óAS.óA'AS3 ô5C'AS3 øCAS3 ûAS3 û1AS3 üAS3 ü>AS3 ýAS3 ý&AS3 ý8AS3 þ
AS3 þAS3 þ.AS3 ÿ AS3 ÿAS3 ÿ$AS3 ÿ6AS3 Á@AS3 Á@AS3 Á@,AS3 Á@>AS3 ÁABAS3 ÁCAS3 ÁC1'AS3 ÁDAS3 ÁD7AS3 ÁE	AS3 ÁEAS3 ÁE-AS3 ÁE?AS3 ÁFAS3 ÁF(AS3 ÁF:AS3 ÁGAS3 ÁGAS3 ÁG2AS3 ÁHAS3 ÁHAS3 ÁH+AS3 ÁH>AS3 ÁI'AS3 ÁI9AS3 ÁJAS3 ÁJAS3 ÁJ2AS3 ÁKAS3 ÁKAS3 ÁK*AS3 ÁK=AS3 ÁLAS3 ÁL#AS3 ÁL6AS3 ÁM	AS3 ÁMAS3 ÁM/AS3 ÁN%AS3 ÁN(&AS3 ÁOAS3 ÁO#AS3 ÁO7AS3 ÁPAS3 ÁP&AS3 ÁQAS3 ÁQ AS3 ÁQ;AS3 ÁRAS3 ÁR#AS3 ÁR2	ASÁR;ASÁSASÁSAS3 ÁS3	ATÁS<ATÁTATc                  ó¢  — 	 ddl }|j                  dd«      }d|d<   d|d<   |j                  dd«      }|j                  d	t        «      }|d
k(  r5|j	                  |j                  dd¬«      |j                  |«      d¬«      }n"|j	                  |j                  |«      d¬«      } ||g| ¢­i |¤ŽS # t        $ r}t        d|› �«      ‚d}~ww xY w)z8
    Executes a litellm.completion() with 3 retries
    r   Nú?tenacity import failed please run `pip install tenacity`. Errorr  é   rý   Úretry_strategyÚconstant_retryÚoriginal_functionÚexponential_backoff_retryru   é
   ©Ú
multiplierrP  T©r   rr  Úreraise©rr  rÒ  )Útenacityr–  r  r¤   ÚRetryingÚwait_exponentialÚstop_after_attempt©r¶  r(  rÔ  r©  r  rÊ  rÌ  Úretryers           r  Úcompletion_with_retriesrÚ  Ö  s   € ð_Ûð  Ÿ™ M°1Ó5€Kà€Fˆ=ÑØ€Fˆ=ÑØTZ×T^ÑT^ØÐ*óU€Nð  &Ÿz™zÐ*=¼zÓJÐØÐ4Ò4Ø×#Ñ#Ø×*Ñ*°a¸RÐ*Ó@Ø×,Ñ,¨[Ó9Øð $ó 
‰ð ×#Ñ#¨×)DÑ)DÀ[Ó)QÐ[_Ð#Ó`ˆÙÐ$Ð6 tÒ6¨vÑ6Ð6øô' ò _ÜÐYÐZ[ÐY\Ð]Ó^Ð^ûð_ús   ‚B2 Â2	CÂ;C	Ã	Cc               �   ó¾  K  — 	 ddl }|j                  dd«      }d|d<   d|d<   |j                  dd«      }|j                  d	t        «      }|d
k(  r5|j	                  |j                  dd¬«      |j                  |«      d¬«      }n"|j	                  |j                  |«      d¬«      } ||g| ¢­i |¤Žƒ d{  –—† S # t        $ r}t        d|› �«      ‚d}~ww xY w7 Œ#­w)z{
    [DEPRECATED]. Use 'acompletion' or router.acompletion instead!
    Executes a litellm.completion() with 3 retries
    r   NrÈ  r  rÉ  rý   rÊ  rË  rÌ  rÍ  ru   rÎ  rÏ  TrÑ  rÓ  )rÔ  r–  r  r¤   ÚAsyncRetryingrÖ  r×  rØ  s           r  Úacompletion_with_retriesrÝ  ò  s  è ø€ ð
_Ûð  Ÿ™ M°1Ó5€KØ€Fˆ=ÑØ€Fˆ=ÑØ"ŸJ™JÐ'7Ð9IÓJ€NØ%Ÿz™zÐ*=¼zÓJÐØÐ4Ò4Ø×(Ñ(Ø×*Ñ*°a¸RÐ*Ó@Ø×,Ñ,¨[Ó9Øð )ó 
‰ð ×(Ñ(¨h×.IÑ.IÈ+Ó.VÐ`dÐ(ÓeˆÙÐ*Ð<¨TÒ<°VÑ<×<Ð<øô! ò _ÜÐYÐZ[ÐY\Ð]Ó^Ð^ûð_úð  =ús4   ‚C„B< ˆB/CÂ7CÂ8CÂ<	CÃCÃCÃCc                  ó¦  — 	 ddl }ddlm} |j	                  dd«      }d|d<   d|d<   |j	                  dd	«      }|j	                  d
|«      }|dk(  r5|j                  |j                  dd¬«      |j                  |«      d¬«      }n"|j                  |j                  |«      d¬«      } ||g| ¢­i |¤ŽS # t        $ r}t        d|› �«      ‚d}~ww xY w)z5
    Executes a litellm.responses() with retries
    r   NrÈ  )r  r  rÉ  rý   rÊ  rË  rÌ  rÍ  ru   rÎ  rÏ  TrÑ  rÓ  )rÔ  r–  Úlitellm.responses.mainr  r  rÕ  rÖ  r×  )	r¶  r(  rÔ  r©  r  r  rÊ  rÌ  rÙ  s	            r  Úresponses_with_retriesrà    s  € ð_Ûõ 1àŸ™ M°1Ó5€Kà€Fˆ=ÑØ€Fˆ=ÑØTZ×T^ÑT^ØÐ*óU€Nð  &Ÿz™zÐ*=¸yÓIÐØÐ4Ò4Ø×#Ñ#Ø×*Ñ*°a¸RÐ*Ó@Ø×,Ñ,¨[Ó9Øð $ó 
‰ð ×#Ñ#¨×)DÑ)DÀ[Ó)QÐ[_Ð#Ó`ˆÙÐ$Ð6 tÒ6¨vÑ6Ð6øô+ ò _ÜÐYÐZ[ÐY\Ð]Ó^Ð^ûð_ús   ‚B4 Â4	CÂ=CÃCc               �   óÂ  K  — 	 ddl }ddlm} |j	                  dd«      }d|d<   d|d<   |j	                  dd	«      }|j	                  d
|«      }|dk(  r5|j                  |j                  dd¬«      |j                  |«      d¬«      }n"|j                  |j                  |«      d¬«      } ||g| ¢­i |¤Žƒ d{  –—† S # t        $ r}t        d|› �«      ‚d}~ww xY w7 Œ#­w)z6
    Executes a litellm.aresponses() with retries
    r   NrÈ  )Ú
aresponsesr  rÉ  rý   rÊ  rË  rÌ  rÍ  ru   rÎ  rÏ  TrÑ  rÓ  )rÔ  r–  rß  râ  r  rÜ  rÖ  r×  )	r¶  r(  rÔ  r©  râ  r  rÊ  rÌ  rÙ  s	            r  Úaresponses_with_retriesrã  *  s  è ø€ ð_Ûõ 2àŸ™ M°1Ó5€KØ€Fˆ=ÑØ€Fˆ=ÑØ"ŸJ™JÐ'7Ð9IÓJ€NØ%Ÿz™zÐ*=¸zÓJÐØÐ4Ò4Ø×(Ñ(Ø×*Ñ*°a¸RÐ*Ó@Ø×,Ñ,¨[Ó9Øð )ó 
‰ð ×(Ñ(¨h×.IÑ.IÈ+Ó.VÐ`dÐ(ÓeˆÙÐ*Ð<¨TÒ<°VÑ<×<Ð<øô% ò _ÜÐYÐZ[ÐY\Ð]Ó^Ð^ûð_úð$ =ús4   ‚C„B> ˆB1CÂ9CÂ:CÂ>	CÃCÃCÃCc               �   óô  K  — t        j                  «       }t        | «      dkD  r| d   n|d   }d|d<   |j                  dd«      }	 t	        t
        g| ¢­i |¤Ž}t        j                  «       }t	        |j                  |«      }t        |||j                  dd«      ¬«      \  }}}}|j                  d|«      ƒ d{  –—† }	d}
t        |	t        «      rt        di |	¤Ž}
n2t        |	t        «      r|	}
nt        j                  |	«      r
|	ƒ d{  –—† }
|
�+t        |
t        «      rt        |
d	«      r||
j                   d<   |
€t#        d
«      ‚|
S 7 Œ�7 ŒB# t$        $ r}|xs d}t'        |||| |¬«      ‚d}~ww xY w­w)ay  
    Asynchronously calls the `embedding` function with the given arguments and keyword arguments.

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

    Returns:
    - `response` (Any): The response returned by the `embedding` function.
    r   r#  TÚ
aembeddingrc  Nrj  rt  r÷  zCUnable to get Embedding Response. Please pass a valid llm_provider.r�  r‚  r  )r‡  rˆ  r’  r  r   Ú	embeddingr˜  r™  rš  r`   r›  rŽ  rœ  rP   rž  r§  r÷  r…  r–  r   ©r¶  r(  r€  r#  rc  r¤  r¥  r¦  r£  r§  r+  r©  s               r  rå  rå  F  s�  è ø€ ô ×(Ñ(Ó*€DÜ! $›i¨!šm�4˜’7°¸±€Eà€Fˆ<ÑØ Ÿ*™*Ð%:¸DÓAÐð&
äœiÐ9¨$Ò9°&Ñ9ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9Ðä'7ØØ 3Ø—Z‘Z 
¨DÓ1ô(
Ñ$ˆÐ  1ð &*×%9Ñ%9¸$Ð@QÓ%R×Rˆà-1ˆÜ�m¤TÔ*Ü(Ñ9¨=Ñ9‰HÜ˜Ô'8Ô9Ø$‰HÜ× Ñ  Ô/Ø*×*ˆHØÐ¤J¨xÔ9JÔ$KÔPWÐX`ÐbrÔPsØ=PˆH×#Ñ#Ð$9Ñ:àÐÜÐbÓcÐcØˆð  Søð +ùô ò 
Ø1Ò=°XÐÜØØ 3Ø Ø"Øô
ð 	
ûð
üsP   ‚AE8ÁA5E Â<EÂ=AE ÄEÄ?E ÅE8ÅE ÅE Å	E5ÅE0Å0E5Å5E8rø   Ú
dimensionsÚencoding_formatrs  Úcachingrå  Tc                 ó   — y r  r  ©r#  rß  rè  ré  rü   rj  rW  rù   rs  rê  rA  rc  r[  rr  rå  r(  s                   r  ræ  ræ  ƒ  ó   € ð, r	  )rå  c                 ó   — y r  r  rì  s                   r  ræ  ræ  �  rí  r	  c                 ó²*  — |j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  d«      }|j                  dd«      }|j                  dd«      }|j                  d	d«      }|j                  d
d«      }|j                  dd«      xs |}|€i }|�|j                  |«       t        j                  �+	 t        t        j                  «      }|j                  |«       |j                  dd«      }|j                  dd«      }|j                  dd«      }g d¢}d	d
gt        z   }||z   } |j                  «       D �!�"ci c]  \  }!}"|!| vsŒ|!|"“Œ }#}!}"t        | |||¬«      \  } }}$}|$�|$}|j                  dd«      }%t        d¿| |
||||%dœ|#¤Ž}&|�|€|�t        | |||j                  d«      ¬«       t        d¿i |¤Ž}'|}(|(j                  | |
|&|'|¬«       |�t!        | |¬«      S 	 d})|du s|dk(  ræ|xs t        j"                  xs t%        d«      }|xs/ t        j&                  xs t%        d«      xs t        j(                  }|&j                  dd«      xs t%        d«      }*|xs/ t        j*                  xs t        j,                  xs t%        d«      }|€t/        d«      ‚t0        j3                  | |||||*||(|t5        «       |&||||xs ||'¬«      })�n™|d k(  r?|xs t        j*                  }t6        j3                  | |||||(|t5        «       |&|||'¬!«      })�nU|d"k(  s%|d#k(  s |d$k(  s|d%k(  s| t        j8                  v �rf|�€c|xs. t        j"                  xs t%        d&«      xs t%        d'«      xs d(}t        j:                  xs t%        d)«      xs dt<        _        |xs/ t        j*                  xs t        j>                  xs t%        d*«      }|�
|i k7  r||&d
<   |�||&d+<   n“t%        d,«      }+|+�4|+jA                  «       jC                  «       d-k(  r|&j                  d+d«       nR|&j                  d+«      xs |+xs d.},|,jA                  «       jC                  «       d-k(  r|&j                  d+d«       n|,|&d+<   d}tD        j3                  | ||||(|t5        «       |&||||¬/«      })�nÈ|d0k(  r}|xs t        j"                  xs tG        d1«      }|xs/ t        j*                  xs t        jH                  xs tG        d2«      }tJ        j3                  | ||||(|t5        «       |&||¬3«
      })�nF|d4k(  rp|xs t        j"                  xs t%        d5«      }|€t        j*                  xs t%        d6«      }t6        j3                  | |||||(|t5        «       |&|||'|xs i ¬7«      })�nÑ|d8k(  s
|d9k(  s|d:k(  r‹|xs t        j"                  xs t%        d;«      }|€3|xs/ t        j*                  xs t        jL                  xs t%        d<«      }|�
|i k7  r||&d
<   tN        j3                  | ||||(|t5        «       |&||¬3«
      })�n7|d=k(  r0|€i }t6        j3                  | |||||(|t5        «       |&|||'|¬7«      })�n|d>k(  s|d?k(  rp|xs< t        jP                  xs* t%        d@«      xs t%        dA«      xs t        j*                  }-|€i }t6        j3                  | ||||-|(|t5        «       |&|||'|¬7«      })�nˆ|dBk(  rÝ|xs! t        j"                  xs t%        dC«      xs dD}|xs< t        j*                  xs* t        jR                  xs t%        dE«      xs t%        dF«      }tG        dG«      xs dH}.tG        dI«      xs dJ}/|.|/dKœ}0|xs t        jT                  }1|1r|0j                  |1«       |0}t6        j3                  | |||||(|t5        «       |&|||'|¬7«      })�n¦|dLk(  r|xs! t        j"                  xs t%        dM«      xs dN}|xs* t        j*                  xs t%        dO«      xs t%        dP«      }t6        j3                  | |||||(|t5        «       |&|||'|¬7«      })�n"|dQk(  r}|xs/ t        jV                  xs tG        dR«      xs t        j*                  }tX        j3                  | |tZ        j\                  t^           j`                  |||(t5        «       |&|||'|¬S«      })�n |dTk(  rOtc        |td        «      r|g}2n|}2tf        ji                  | |2tk        «       |(|&t5        «       |||i |tl        ||¬U«      })�nL|dVk(  r8|€t/        dW«      ‚t6        j3                  | |||||(|t5        «       |&||i ¬!«      })�n|dXk(  r||xs to        «       xs t        j*                  }3|xs t        j"                  xs t%        dY«      }tp        js                  | |tk        «       |(|&t5        «       ddd|tl        dX|3|||¬Z«      })�
nŽ|d[k(  �rÿ|&j                  d\d«      xs> |&j                  d]d«      xs* t        jt                  xs t%        d^«      xs t%        d_«      }4|&j                  d`d«      xs> |&j                  dad«      xs* t        jv                  xs t%        db«      xs t%        dc«      }5|&j                  ddd«      xs, |&j                  ded«      xs t%        df«      xs t%        dg«      }6|xs* t        j"                  xs t%        dh«      xs t%        di«      }	 ty        | d[¬j«      }7|7j                  dkdl«      }8|8r;tp        js                  | |tk        «       |(|&t5        «       |4|5|6|tl        d[d|||¬Z«      })�	ndm|&v sdn|&v s| tz        j|                  v r:tz        j                  | |tk        «       |(|&|'t5        «       |4|5|6|tl        d[||¬o«      })�nÅt€        j3                  | |tk        «       |(|&t5        «       |4|5|6d[||tl        ||||'¬p«      })�n‰|dqk(  r/tƒ        j2                  | |tk        «       ||(|&t5        «       |¬r«      })�nU|dsk(  rªt        j"                  xs |xs t%        dt«      xs du}tc        |td        «      r|g}t…        dv„ |D «       «      st        j†                  dw|› �| ds¬x«      ‚|du rtˆ        jŠ                  ntˆ        jŒ                  }9 |9|| |tk        «       |(|&t5        «       ¬y«      })�n¦|dzk(  r2tŽ        j3                  | |tk        «       |(|&t5        «       tl        ¬{«      })�no|d|k(  rJ|xs t        j*                  xs t%        d}«      }tD        j3                  | ||||(|t5        «       |&||¬3«
      })�n |d~k(  rJ|xs t        j*                  xs t%        d«      }tD        j3                  | ||||(|t5        «       |&||¬3«
      })�nÑ|d€k(  ro|xs t        j*                  xs t%        d�«      }|xs! t        j"                  xs t%        d‚«      xs dƒ}tD        j3                  | ||||(|t5        «       |&||¬3«
      })�n]|d„k(  ro|xs t        j*                  xs t%        d…«      }|xs! t        j"                  xs t%        d†«      xs d‡}tD        j3                  | ||||(|t5        «       |&||¬3«
      })�né|dˆk(  rq|xs t        j*                  xs t%        d‰«      }|xs! t        j"                  xs t%        dŠ«      xs d‹}t6        j3                  | |||||(|t5        «       |&||i ¬!«      })�ns|dŒk(  s|d�k(  r+t6        j3                  | |||||(|t5        «       |&||i ¬!«      })�n>|dŽk(  rYt‘        j’                  |&||¬�«      }:|:d�   }|:d‘   }d’|:v r|:d’   |&d’<   t6        j3                  | |||||(|t5        «       |&i ||¬“«      })�nà|d”k(  rs|xs! t        j*                  xs t%        d•«      xs d–}|xs! t        j"                  xs t%        d—«      xs d˜}tD        j3                  | ||||(|t5        «       |&||¬3«
      })�nh|d™k(  r+t6        j3                  | |||||(|t5        «       |&i ||¬“«      })�n8|dšk(  r|d›dœlJmK}; |xs t        j"                  xs t%        d�«      }|xs( t        j*                  xs t%        dž«      xs	  |;|'¬Ÿ«      }t˜        j3                  | ||||(|t5        «       |&||¬3«
      })�n·|d k(  rAtc        |td        «      r|g}2n|}2t6        j3                  | |2||||(|t5        «       |&i ||¬“«      })�nq|d¡k(  r~|xs* t        j*                  xs t%        d¢«      xs t%        d£«      }<|<€t/        d¤«      ‚|�tc        |tš        «      r|}ni }t6        j3                  | ||||(||&i t5        «       |<|||¬¥«      })�nî|d¦k(  rq|xs t        j*                  xs t%        d§«      }=|=€t/        d¨«      ‚|�tc        |tš        «      r|}ni }t6        j3                  | ||||(||&i t5        «       |=|||¬¥«      })�nx|d©k(  rq|xs t        j*                  xs t%        dª«      }|xs! t        j"                  xs t%        d««      xs d¬}t6        j3                  | |||||(|t5        «       |&||i ¬!«      })�n|d­k(  rƒ|xs/ t        jœ                  xs t%        d®«      xs t        j*                  }|xs! t        j"                  xs t%        d¯«      xs d°}t6        j3                  | |||||(|t5        «       |&||i ¬!«      })�nz|t        jž                  v rmd}>t        j                   D ]  }?|?d±   |k(  sŒ|?d²   }>Œ |>€t£        | |¬j«      ‚|s|>j2                  n|>j¤                  }@ |@| ||(||||&t5        «       tl        |'¬³«
      })nû|d´k(  r9|xs t%        dµ«      }t6        j3                  | |||||(|t5        «       |&||i ¬!«      })n½|d¶k(  r||xs< t        j*                  xs* t        j¦                  xs t%        d·«      xs t%        d¸«      }t6        j3                  | |||||(|t5        «       |&||d¹|j                  d¹d«      i¬!«      })n<|dºk(  r*t6        j3                  | |||||(|t5        «       |&||i ¬!«      })nt£        | |¬j«      ‚|)�+t©        |)d»«      rtc        |)t4        «      r||)jª                  d¼<   |)€t£        | |¬j«      ‚|)S # t        $ r!}t        j                  d|«       Y d}~�Œòd}~ww xY wc c}"}!w # t        $ r dl}8Y �	ŒÕw xY w# t        $ r1}|j­                  ||te        |«      ¬½«       t¯        | |||¬¾«      ‚d}~ww xY w)Àaw  
    Embedding function that calls an API to generate embeddings for the given input.

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

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

    Raises:
    - exception_type: If an exception occurs during the API call.
    rÄ  Nr   r]  rý   rd  rv  rn  rå  rY  ro  r5  r9  r:  r;  )rA  rè  Úrequest_timeoutrj  rW  rù   rs  rú   rû   rþ   rü   rý   ré  ©r#  rc  rj  rù   rT  )r#  rA  rè  ré  rc  rT  r  rQ  rm  )r#  rv  Trg  rh  rl  rm  rj  zPNo API Base provided for Azure OpenAI LLM provider. Set 'AZURE_API_BASE' in .env)r#  rß  rj  rù   rW  rl  rn  r  rü   rü  r~  r   rå  rý   ro  rq  rê  )r#  rß  rc  rj  rù   r  rü   rü  r~  r   rå  rq  r�  rr  r�  Úlitellm_proxyr  r  r  ré  r§  ré  Ú)LITELLM_DEFAULT_EMBEDDING_ENCODING_FORMATrJ  r  )r#  rß  rj  rù   r  rü   rü  r~  r   rå  rý   r]  rK  rI  rJ  )
r#  rß  rj  rù   r  rü   rü  r~  r   rå  r}  ræ  ÚHOSTED_VLLM_API_KEY)r#  rß  rc  rj  rù   r  rü   rü  r~  r   rå  rq  ro  Úopenai_likeÚ	llamafileÚ	lm_studioÚOPENAI_LIKE_API_BASEÚOPENAI_LIKE_API_KEYr�  rŒ  r'  r#  r$  r\  rS  rT  rU  rV  rW  rX  rY  rZ  r[  rj  re  rf  rg  ÚVERCEL_OIDC_TOKENrŽ  r9  )r#  rß  rŠ  rù   rj  r  rü  r~  r   rå  rq  ro  r&  )r#  rß  rŠ  r  r~  rü  r   rü   rå  rq  rj  rµ  rY  rù   r˜  z7api_base is required for triton. Please pass `api_base`r“  r{  )r#  rß  rŠ  r  r~  rü  rq  rt  rw  rå  rµ  rc  rù   rj  r   rY  r'  rq  rr  rs  ÚVERTEX_PROJECTrt  ru  rv  ÚVERTEX_LOCATIONrw  rx  ry  ÚVERTEX_CREDENTIALSr�  ÚVERTEX_API_BASEr  Úuses_embed_contentFÚimageÚvideo)r#  rß  rŠ  r  r~  rq  rü  rq  rt  rw  rå  rµ  rc  r   rj  )r#  rß  rŠ  r  r~  rü  rq  rt  rw  rc  rü   rå  rµ  rù   rj  r   rq  r¨   )r#  rß  rŠ  rj  r  r~  rü  rù   rØ  rÔ  rÕ  c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr  )rŽ  r  )r  r  s     r  r  zembedding.<locals>.<genexpr>(  s   è ø€ Ò?°”z $¬×,Ñ?ùó   ‚z+Invalid input for ollama embeddings. input=©rÁ  r#  r½  )rj  r#  ÚpromptsrŠ  r  r~  rü  r—  )r#  rß  rŠ  r  r~  rü  rµ  rŠ  rû  rq  ÚFIREWORKS_AI_API_KEYr‡  ÚNEBIUS_API_KEYÚNEBIUS_API_BASEzapi.studio.nebius.ai/v1rˆ  ÚWANDB_API_KEYÚWANDB_API_BASEz!https://api.inference.wandb.ai/v1r„  ÚSAMBANOVA_API_KEYÚSAMBANOVA_API_BASEzhttps://api.sambanova.ai/v1ÚvoyageÚinfinityr¿  )r~  rù   rj  rù   rj  r´  )r#  rß  rc  rj  rù   r  rü   rü  r~  rq  r   rå  Ú
xinferenceÚXINFERENCE_API_KEYzstub-xinference-keyÚXINFERENCE_API_BASEzhttp://127.0.0.1:9997/v1ry  r%  r   )Úget_azure_ai_entra_tokenÚAZURE_AI_API_BASEÚAZURE_AI_API_KEY)rq  Ú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ü   rc  r  rj  r~  rq  rü  rù   r   rå  ro  Ú	dashscopeÚDASHSCOPE_API_KEYzdMissing API key for DashScope. Set DASHSCOPE_API_KEY environment variable or pass api_key parameter.r�  r  r  r  r{  rÚ  rÛ  rÜ  r¬  r  )
r#  rß  r  rj  rù   rü   r~  rü  rµ  rq  r™  ÚSNOWFLAKE_JWTrx  rÏ  rÎ  r8  r€  r÷  rc  rí  )r#  rƒ  rc  r…  r  )Xr  r  rð  r  r8  r:  r–  rv   r¯  rÐ   r&  r`   rd   rX  r    r«  r5   rj  rF   rW  rz  rù   r{  r…  r�  ræ  rP   r�  Úopen_ai_embedding_modelsrú   r�  r©  r  r)  ró  rh   rN  rï   Úopenai_like_keyrí   r(  r]  ro  r:  rÝ   ÚsysÚmodulesr
  rŠ  rŽ  r  rá   Ú
embeddingsrŽ  rµ  rŸ   ræ   Úbatch_embeddingsrq  rt  ra   rä   Ú%SUPPORTED_MULTIMODAL_EMBEDDING_MODELSÚmultimodal_embeddingrã   r¨   ÚallÚBadRequestErrorrØ  Úollama_aembeddingsÚollama_embeddingsrë   r¾   Úget_watsonx_credentialsrœ  r  r×   rœ  rÝ  r·  r  r(   rå  rÐ  r§  r÷  rø  r   )Ar#  rß  rè  ré  rü   rj  rW  rù   rs  rê  rA  rc  r[  rr  r(  rÄ  r   r]  rý   rd  rv  rn  rå  rY  ro  r»  r©  r9  r:  r;  Úopenai_paramsrq  Údefault_paramsr)  r*  rl  r¿  rT  r~  Úlitellm_params_dictrù  r+  rl  Úenv_fmtÚ_default_fmtr(  r_  r`  ra  rb  Útransformed_inputr}  rr  ru  rw  r  rÿ  Úollama_embeddings_fnÚcredentialsr  Úvolcengine_keyÚdashscope_keyr  r  r  sA                                                                    r  ræ  ræ  ¸  s&  € ðZ —:‘:˜g tÓ,€EØ—J‘J˜x¨Ó.€FØ"ŸJ™JÐ'7¸Ó>€NØŸ™ M°4Ó8€KØ4:·J±JÐ?TÓ4UÐØ/5¯z©z¸/È4Ó/P€MØ%+§Z¡ZÐ0IÈ4Ó%PÐØ%+§Z¡Z°¸dÓ%C€JØ!Ÿ:™: o°tÓ<€MØ�j‰j˜ DÓ)Ò:¨]€GØ€ØˆØÐ Ø�‰�}Ô%ä×ÑÐ%ð	NÜ#6´w×7IÑ7IÓ#JˆMØ�N‰N˜=Ô)ð #)§*¡*Ð-CÀTÓ"JÐØ#)§:¡:Ð.EÀtÓ#LÐØ#)§:¡:Ð.EÀtÓ#LÐò€Mð  	Øðô 	ñ€Nð
 *¨NÑ:€NàŸ™›÷!Ù��A¨1°NÒ+Bˆˆ1‰ð!Ðñ !ô =MØØ/ØØô	=Ñ9€EÐ °ð Ð"Ø!ˆà5;·Z±ZÐ@WÐY]Ó5^ÐÜ;ð ØØØØ'Ø/Ø3ñð ñ€Oð 	Ð(Ð-BÐ-NÐShÐStÜ,ØØ 3ØØ—z‘z ,Ó/õ		
ô "4Ñ!=°fÑ!=Ðà(;€GØ×(Ñ(ØØØ'Ø*Ø/ð )ô ð Ð Ü E¸ÔGÐGðI
Ø\`ˆà�D‰=Ð/°7Ò:ð  ÒW¤7×#3Ñ#3ÒW´~ÐFVÓ7WˆHð ò 5Ü×&Ñ&ò5ä!Ð"5Ó6ò5ô ×4Ñ4ð	 ð %4×$7Ñ$7Ð8HÈ$Ó$OÒ$sÔSaÐbrÓSsˆNàÒh¤§¡Òh´G×4EÑ4EÒhÌÐXgÓIhˆGàÐÜ Ð!sÓtÐtô .×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Ð>QÑ>Yð ò /Ü×#Ñ#ò/ä!Ð"3Ó4ò/ô "Ð"3Ó4ò/ð /ð ô ×$Ñ$ò Ü!Ð"7Ó8òàô Ôð Òj¤§¡Òj´G×4FÑ4FÒjÌ.ÐYiÓJjˆGàÐ" w°"¢}Ø3:� Ñ0àÐ*Ø5D�Ð 1Ò2ä!/Ð0[Ó!\�ØÐ&¨7¯=©=«?×+@Ñ+@Ó+BÀfÒ+LØ#×'Ñ'Ð(9¸4Õ@à*9×*=Ñ*=Ð>OÓ*PÒ*fÐT[Ò*fÐ_f�LØ#×)Ñ)Ó+×1Ñ1Ó3°vÒ=Ø'×+Ñ+Ð,=¸tÕDà=I˜Ð(9Ñ:àˆKô /×8Ñ8ØØØ!ØØ#ØÜ0Ó2Ø /ØØ%Ø'Ø-ð 9ó ŠHð ! LÒ0ØÒX¤7×#3Ñ#3ÒX´zÐBWÓ7XˆHð Òn¤§¡Òn´G×4JÑ4JÒnÌjÐYmÓNnˆGô ,×5Ñ5ØØØ!ØØ#ØÜ0Ó2Ø /ØØ%ð 6ó ŠHð ! MÒ1ØÒ]¤7×#3Ñ#3Ò]´~ÐF\Ó7]ˆHð ˆÜ!Ÿ/™/ÒR¬^Ð<QÓ-R�ä,×6Ñ6ØØØ$7Ø!ØØ#ØÜ0Ó2Ø /ØØ%Ø2Øš 2ð 7ó ŠHð    =Ò0Ø" kÒ1Ø" kÒ1àÒ]¤7×#3Ñ#3Ò]´~ÐF\Ó7]ˆHð ˆØ!Òx¤W§_¡_Òx¼×8OÑ8OÒxÔSaÐbwÓSx�àÐ" 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àÒwœG×,Ñ,Òw´Ð?TÓ0UÒwÐYwð ð
 ò 0Ü—?‘?ò0ä×)Ñ)ò0ô "Ð"6Ó7ò0ô " ,Ó/ð ô *4°MÓ)BÒ)ZÐFZÐÜ)3°MÓ)BÒ)OÀiÐð !4Ø.ñ)Ðð
 &Ò8¬¯©ˆ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ØÒp¤×!8Ñ!8Òp¼JÐG\Ó<]ÒpÔah×apÑapˆGÜ(×2Ñ2ØØÜŸ™¤XÑ.×7Ñ7ØØ!Ø#Ü0Ó2Ø /ØØ%Ø2Øð 3ó ŠHð ! IÒ-Ü˜%¤Ô%Ø%* GÑ!à$)Ð!Ü(×3Ñ3ØØ'Ü&›Ø#Ø /Ü0Ó2ØØØ%Ø!Ø!Ü+Ø%Øð 4ó ŠHð  ! HÒ,ØÐÜ Ð!ZÓ[Ð[Ü,×6Ñ6ØØØ$7Ø!ØØ#ØÜ0Ó2Ø /ØØ%Ø!ð 7ó ŠHð ! HÒ,Ø$+Ò$XÔ/CÓ/EÒ$XÌÏÉˆNàÒX¤7×#3Ñ#3ÒX´~ÐFWÓ7XˆHä.×?Ñ?ØØÜ&›Ø#Ø /Ü0Ó2Ø#Ø $Ø#'Ø%Ü+Ø$,Ø&Ø!ØØ%ð! @ó ŠHð& ! KÓ/à×#Ñ#Ð$4°dÓ;ò 4Ø"×&Ñ&Ð':¸DÓAò4ä×)Ñ)ò4ô "Ð"4Ó5ò4ô "Ð"2Ó3ð ð  ×#Ñ#Ð$5°tÓ<ò 5Ø"×&Ñ&Ð';¸TÓBò5ä×*Ñ*ò5ô "Ð"5Ó6ò5ô "Ð"3Ó4ð ð  ×#Ñ#Ð$8¸$Ó?ò 8Ø"×&Ñ&Ð'>ÀÓEò8ä!Ð"8Ó9ò8ô "Ð"6Ó7ð	 ð ÒxœG×,Ñ,Òx´Ð?RÓ0SÒxÔWeÐfwÓWxð ð+Ü$2¸ÐT_Ô$`�
Ø%/§^¡^Ð4HÈ%Ó%PÐ"ñ "Ü2×CÑCØØÜ*›_Ø 'Ø$3Ü#4Ó#6Ø#4Ø$6Ø'9Ø)Ü"/Ø(3Ø Ø%Ø!Ø")ð! Dó ’ð& ˜?Ñ*Ø˜oÑ-ØÔ7×]Ñ]Ñ]ä6×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Ò,Ü×'Ñ'Òt¨8Òt´~ÐFWÓ7XÒtÐ\tˆHä˜%¤Ô%Ø˜�ÜÑ?¸Ô?Ô?Ü×-Ñ-ØIÈ%ÈÐQØØ!)ôð ð
 HRÐUYÑGY¬&×*CÒ*CÔ_e×_wÑ_wÐ Ù+Ø!ØØÜ&›Ø#Ø /Ü0Ó2ôŠHð ! KÒ/Ü$×.Ñ.ØØÜ&›Ø#Ø /Ü0Ó2Ü+ð /ó ŠHð ! IÒ-ØÒU¤§¡ÒU´NÐCTÓ4UˆGÜ.×8Ñ8ØØØ!ØØ#ØÜ0Ó2Ø /ØØ%ð 9ó ŠHð ! NÒ2ØÒZ¤§¡ÒZ´NÐCYÓ4ZˆGÜ.×8Ñ8ØØØ!ØØ#ØÜ0Ó2Ø /ØØ%ð 9ó ŠHð ! HÒ,ØÒT¤§¡ÒT´NÐCSÓ4TˆGØÒu¤7×#3Ñ#3Òu´~ÐFWÓ7XÒuÐ\uˆHä.×8Ñ8ØØØ!ØØ#ØÜ0Ó2Ø /ØØ%ð 9ó ŠHð ! GÒ+ØÒS¤§¡ÒS´NÀ?Ó4SˆGàÒwœG×,Ñ,Òw´Ð?OÓ0PÒwÐTwð ô /×8Ñ8ØØØ!ØØ#ØÜ0Ó2Ø /ØØ%ð 9ó ŠHð ! KÒ/ØÒW¤§¡ÒW´NÐCVÓ4WˆGàÒuœG×,Ñ,Òu´Ð?SÓ0TÒuÐXuð ô -×6Ñ6ØØØ$7Ø!ØØ#ØÜ0Ó2Ø /ØØ%Ø!ð 7ó ŠHð ! HÒ,Ð0CÀzÒ0QÜ,×6Ñ6ØØØ$7Ø!ØØ#ØÜ0Ó2Ø /ØØ%Ø!ð 7ó ŠHð ! IÒ-Ü!0×!HÑ!HØ /¸È8ô"ˆKð " )Ñ,ˆGØ" :Ñ.ˆHà˜+Ñ%Ø+6°wÑ+?� Ñ(ä,×6Ñ6ØØØ$7Ø!ØØ#ØÜ0Ó2Ø /Ø!ØØ%ð 7ó ŠHð ! LÒ0àÒkœ7Ÿ?™?Òk¬nÐ=QÓ.RÒkÐVkð ð ÒsœG×,Ñ,Òs´Ð?TÓ0UÒsÐYsð ô /×8Ñ8ØØØ!ØØ#ØÜ0Ó2Ø /ØØ%ð 9ó ŠHð ! EÒ)Ü,×6Ñ6ØØØ$7Ø!ØØ#ØÜ0Ó2Ø /Ø!ØØ%ð 7ó ŠHð ! JÒ.ÝSð ò 7Ü×#Ñ#ò7ä!Ð"5Ó6ð ð ò PÜ—?‘?òPä!Ð"4Ó5òPñ ,Ð;NÔOð	 ô *×3Ñ3ØØØ!ØØ#ØÜ0Ó2Ø /ØØ%ð 4ó ŠHð ! IÒ-Ü˜%¤Ô%Ø%* GÑ!à$)Ð!Ü,×6Ñ6ØØ'Ø$7Ø!ØØ#ØÜ0Ó2Ø /Ø!ØØ%ð 7ó ŠHð ! LÒ0àÒsœ7Ÿ?™?Òs¬n¸]Ó.KÒsÌ~Ð^rÓOsð ð Ð%Ü ð Lóð ð Ð(¬Z¸ÄtÔ-LØ'‘à�Ü,×6Ñ6ØØØØ$7Ø#Ø!Ø /Ø!Ü0Ó2Ø&ØØ%Øð 7ó ŠHð ! KÒ/Ø#*Ò#d¬g¯o©oÒ#dÄÐPcÓAdˆMØÐ$Ü Øzóð ð Ð(¬Z¸ÄtÔ-LØ'‘à�Ü,×6Ñ6ØØØØ$7Ø#Ø!Ø /Ø!Ü0Ó2Ø%ØØ%Øð 7ó ŠHð ! JÒ.ØÒV¤§¡ÒV´NÐCUÓ4VˆGàò FÜ×#Ñ#òFä!Ð"5Ó6òFð Fð	 ô -×6Ñ6ØØØ$7Ø!ØØ#ØÜ0Ó2Ø /ØØ%Ø!ð 7ó ŠHð ! JÒ.ØÒj¤×!5Ñ!5Òj¼ÈÓ9WÒjÔ[b×[jÑ[jˆGàÒtœG×,Ñ,Òt´Ð?RÓ0SÒtÐWtð ô -×6Ñ6ØØØ$7Ø!ØØ#ØÜ0Ó2Ø /ØØ%Ø!ð 7ó ŠHð !¤G×$=Ñ$=Ñ=Ø/3ˆNÜ×3Ñ3ò <�Ø˜
Ñ#Ð':Ó:Ø%)Ð*:Ñ%;‘Nð<ð Ð%Ü,°5ÐNaÔbÐbá@J × 8Ò 8ÐP^×PiÑPiˆJá!ØØØ#Ø!ØØØ /Ü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Ø /ØØ%Ø ,¨f¯j©j¸ÀtÓ.LÐMð 7ó ‰Hð ! LÒ0Ü,×6Ñ6ØØØ$7Ø!ØØ#ØÜ0Ó2Ø /ØØ%Ø!ð 7ó ‰Hô )¨uÐJ]Ô^Ð^ØÐ¤G¨HÐ6FÔ$GÌJÐW_ÔarÔLsØ=PˆH×#Ñ#Ð$9Ñ:àÐÜ(¨uÐJ]Ô^Ð^ØˆøôK ò 	NÜ×"Ñ"Ð#IÈ1×MÒMûð	Nüó6!øôJ ò +Ø%*Ó"ð+ûôL ò 
à×%Ñ%ØØÜ! !›fð 	&ô 	
ô ØØ Ø 3Øô	
ð 	
ûð
ús…   Ã *AS Å'ATÅ4ATÈdAT ì$AT
 í`AT ÁMFAT ÁS	ATÁS AS<ÁS<ATÁT
ATÁTAT ÁTATÁTAT ÁT	AUÁT%,AUÁUAUc              ƒ   ó"   K  — | ƒ d {  –—† S 7 Œ­wr  r  r¬  s    r  Ú,_resolve_dispatched_text_completion_responser3  Ï  s   è ø€ ð �=Ðˆ=úr­  c              ƒ   ó"   K  — | ƒ d {  –—† S 7 Œ­wr  r  r¬  s    r  Ú_resolve_pending_chat_responser5  Ù  s   è ø€ Ø�=Ðˆ=úr­  c               �   óò  K  — t        j                  «       }t        | «      dkD  r| d   n|d   }d|d<   d}	 t        t        g| ¢­i |¤Ž}t        j                  «       }t        |j                  |«      }|j                  d|«      ƒ d{  –—† }t        |t        «      st        |t        «      rt        |t        «      rt        di |¤Ž}	n.|}	n+t        j                  |«      rt        |«      ƒ d{  –—† }	n|}	|j                  dd«      du s t        |	t        «      st        |	t         «      r+t        t#        |	||| ¬«      |||j                  d	«      ¬
«      S t        |	t        «      r|	S t        j                  |	«      rt%        |	«      ƒ d{  –—† }	t        «       }
t&        j(                  j*                  j-                  |
|	|¬«      }
|
S 7 �Œ@7 ŒÛ7 ŒA# t.        $ r}|xs d}t1        |||| |¬«      ‚d}~ww xY w­w)zP
    Implemented to handle async streaming for the text completion endpoint
    r   r#  Tr  Nr7  F)r+  r#  rc  r¶  r8  )râ  r#  rc  r8  )Útext_completion_responser+  rc  r�  r‚  r  )r‡  rˆ  r’  r   r¨  r˜  r™  rš  r›  rŽ  rœ  rU   rž  r3  r  rV   rO   r¸  r5  r  rò  ÚLiteLLMResponseObjectHandlerÚconvert_chat_to_text_completionr–  r   )r¶  r(  r€  r#  rc  r¤  r¥  r¦  r§  r+  r7  r©  s               r  rF  rF  Ý  sõ  è ø€ ô
 ×(Ñ(Ó*€DÜ! $›i¨!šm�4˜’7°¸±€Eà €Fˆ=ÑØÐð9
äœoÐ?°Ò?¸Ñ?ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9Ðà%)×%9Ñ%9¸$Ð@QÓ%R×RˆÜ�m¤TÔ*¬j¸ÔH^Ô._Ü˜-¬Ô.Ü1ÑB°MÑB‘à(‘Ü× Ñ  Ô/ÜIÈ-ÓX×X‰Hà$ˆHð �J‰J�x Ó'¨4Ñ/Ü˜(Ô$?Ô@Ü˜(Ô$7Ô8ä.Ü"2Ø%ØØ(;Øô	#ð Ø$7Ø%Ÿz™zÐ*:Ó;ô
ð 
ô ˜(Ô$:Ô;Ø�Ü×$Ñ$ XÔ.Ü!?ÀÓ!I×I�ä'=Ó'?Ð$Ü'.§}¡}×'QÑ'Q×'qÑ'qØ)AØ!Ø$7ð (ró (Ð$ð
 ,Ð+ðQ  Sùð Yøð2 Jùô ò 
Ø1Ò=°XÐÜØØ 3Ø Ø"Øô
ð 	
ûð
üsy   ‚4G7·AG Â	G	Â
A&G Ã0GÃ1A%G ÅG7ÅG Å(G7Å)#G ÆGÆ;G ÇG7Ç	G ÇG ÇG Ç	G4ÇG/Ç/G4Ç4G7r  Úbest_ofÚechorr  Úsuffixc           
      óÈ  ‡‡‡‡)‡*‡+— dd l }	 d‰v r*‰d   }‰€t        |t        «      r|Š‰j                  d«       t	        «       Š*i Š)|�|‰)d<   |�|‰)d<   |�|‰)d<   |�|‰)d<   |�|‰)d<   |�|‰)d<   |�|‰)d	<   |	�|	‰)d
<   |
�|
‰)d<   |�|‰)d<   |�|‰)d<   |�|‰)d<   |�|‰)d<   |�|‰)d<   |�|‰)d<   |�|‰)d<   |�|‰)d<   |�|‰)d<   |�|‰)d<   t        ‰||¬«      \  }}}}|dk(  �r	|du r	d‰vrd‰d<   t        | t        «      rìdd l}t        j                  d«      Š+t        | «      dkD  rÅt        | d   t        «      r²| D �cg c]  }d ‘Œ }}ˆˆˆˆ)ˆ*ˆ+fd„}|j                  j                  «       5 } t        | «      D �!�"cg c]  \  }!}"| j                  ||!|"«      ‘Œ }#}!}"t        |j                  j                  |#«      «      D ]  \  }!}$|$j!                  «       ||!<   Œ |‰*_        d d d «       ‰*S g }%t        | t        «      r?t        | «      dkD  r1t        | d   t        «      r| D ]  }&d|&dœ}'|%j%                  |'«       Œ nŠt        | t        «      rd| dœg}%ns|dk(  s|dk(  s|d k(  s
|d!k(  s|d"k(  rKt        | t        «      r;t        | «      dkD  r-t        | d   t        «      st        | d   t&        «      rd| dœg}%nt)        d#| › d$�«      ‚‰j                  d%d «       |�.|dk(  r)|t*        j,                  vrd&|z   Š‰)j                  dd «       ‰€t/        d'«      ‚d‰d(<   t1        ‰‰|%d)œ‰¤‰)¤Ž}(‰j3                  d*d+«      du r|(S |du s$‰j3                  dd+«      du st        |(t4        «      rt7        |(‰||¬,«      }(|(S t        |(t6        «      r|(S t        |(t        «      r|(S t*        j8                  j:                  j=                  |(‰*¬-«      Š*‰*S c c}w c c}"}!w # 1 sw Y   ‰*S xY w).Nr   Úenginer:  r;  r?  r@  rG  r9  r6  r>  rr  r7  r8  r<  r4  r5  rA  rj  rW  rù   rc  rt  rŽ  TÚtop_n_tokensrÉ  ztext-davinci-003c                 óè   •— ‰
j                  |«      }i ‰¥‰¥}t        ‰‰|ddœ|¤Ž}|j                  dd «      ‰	d<   d‰	d<   |j                  dd «      ‰	d<   |j                  dd «      ‰	d<   |d   d	   S )
NrÉ  )r#  r  r  r”  r¨  Úobjectrô  r#  rð  r   )Údecoder¨  r  )rþ  Úindividual_promptÚdecoded_promptÚ
all_paramsr+  r¶  r(  r#  r~  r7  Ú	tokenizers        €€€€€€r  Úprocess_promptz'text_completion.<locals>.process_prompt¦  s§   ø€ Ø,5×,<Ñ,<Ð=NÓ,O�NØ(E¨6Ð(E°_Ð(E�JÜ>Mð ð $Ø-Ø$%ñ?ð
 %ñ?�Hð 6>·\±\À$ÈÓ5MÐ,¨TÑ2Ø9JÐ,¨XÑ6Ø:B¿,¹,ÀyÐRVÓ:WÐ,¨YÑ7Ø8@¿¹ÀWÈdÓ8SÐ,¨WÑ5Ø# IÑ.¨qÑ1Ð1r	  ©rå  rä  r�  rÄ  ro  ry  rx  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#  r8  rc  )r+  r7  )r.  rŽ  r  r  rU   r`   rŒ  Úconcurrent.futuresÚtiktokenÚencoding_for_modelr’  r   r
   Ú	enumerateÚsubmitÚas_completedÚresultrð  ró  r  r–  r  r¯  r…  r¤   r  rO   rV   rò  r8  r9  ),r  r#  r:  r;  r?  r@  rG  r9  r6  r>  rr  r7  r8  r<  r4  r5  rA  rj  rW  rù   rX  rc  r¶  r(  r.  Ú_engineÚ_modelr¿  Ú
concurrentÚxr  rG  Úexecutorrþ  rC  Úcompleted_futuresÚfuturer%  ÚprÁ  r+  r~  r7  rF  s,    `                    ``                 @@@r  r¨  r¨  #  s  ý€ ó< ðð4 �6ÑØ Ñ)ˆØˆ=œZ¨´Ô5àˆEØ�
‰
�8Ôä5Ó7Ðà-/€OàÐØ%,ˆ˜	Ñ"ØÐØ"&ˆ˜ÑØÐ$Ø/@ˆÐ+Ñ,ØÐØ(2ˆ˜Ñ%ØÐØ&.ˆ˜
Ñ#ØÐØ(2ˆ˜Ñ%Ø€}Ø ˆ˜ÑØÐ#Ø.>ˆÐ*Ñ+ØÐØ"&ˆ˜ÑØÐØ$*ˆ˜Ñ!ØÐ!Ø,:ˆÐ(Ñ)ØÐØ$*ˆ˜Ñ!ØÐØ)4ˆ˜Ñ&ØÐØ#(ˆ˜Ñ ØÐØ"&ˆ˜ÑØÐØ&.ˆ˜
Ñ#ØÐØ)4ˆ˜Ñ&ØÐØ%,ˆ˜	Ñ"ØÐ&Ø1DˆÐ-Ñ.ô >NØØ/Øô>Ñ:€FÐ °(ð ˜mÓ+à�4‰<à VÑ+Ø)*��~Ñ&ô �fœdÔ#Û%ä'×:Ñ:Ð;MÓNˆIä�6‹{˜QŠ¤:¨f°Q©i¼Ô#>Ø28Ö#9¨Q¢DÐ#9�	Ð#9÷2ñ 2ð"  ×'Ñ'×:Ñ:Ó<ð AÀô 5>¸fÓ4E÷0á0˜AÐ0ð !Ÿ™¨¸Ð;LÕMð0Ð%ñ 0ô &/¨z×/AÑ/A×/NÑ/NÐO`Ó/aÓ%bò 7™	˜˜6Ø'-§}¡}£˜	 !šð7à7@Ð,Ô4÷Að 0Ð/ð €HÜ�&œ$Ô¤C¨£K°!¢O¼
À6È!Á9ÌcÔ8RØò 	%ˆAØ%°!Ñ4ˆGØ�O‰O˜GÕ$ñ	%ô 
�FœCÔ	 Ø#°Ñ7Ð8‰ð   8Ò+Ø" gÒ-Ø" lÒ2Ø"Ð&AÒAØ"Ð&>Ò>ä�vœtÔ$Ü�‹K˜!ŠOÜ˜˜q™	¤4Ô(¬J°v¸a±yÄ#Ô,Fð $°Ñ7Ð8‰äØdÐekÐdlð  mhð  ió
ð 	
ð ‡J�Jˆx˜Ôð 	ÐÐ 3°xÒ ?àœ×?Ñ?Ñ?Ø-°Ñ6ˆEØ×ÑÐ 5°tÔ<à€}ÜÐVÓWÐWØ $€FÐÑÜð 
ð Øñð ð	ð
 ñ€Hð ‡z�z�- Ó'¨4Ñ/ØˆØ��~˜Ÿ™ H¨eÓ4¸Ñ<Ä
È8ÔUhÔ@iÜ.Ø&ØØ)Ø 3ô	
ˆð ˆÜ	�HÔ9Ô	:Øˆô �(Ô2Ô3Øˆä&Ÿ}™}×IÑI×iÑiØØ!9ð  jó  Ðð
 $Ð#ùòM $:ùó(0÷Að 0Ð/ús%   Ä?	OÅ.OÅ=OÆA	OÏOÏO!Ú
adapter_idc              ‹   óœ  K  — 	 d}t         j                  D ]  }|d   | k(  sŒ|d   }Œ |€t        d| › dt         j                  › �«      ‚|j                  |¬«      }t	        d	i |¤Žƒ d{  –—† }d}t        |t        «      r|j                  |¬«      }t        |t        «      r|j                  |¬«      }|S 7 ŒL# t        $ r}|‚d}~ww xY w­w)
zD
    Implemented to handle async calls for adapter_completion()
    Nr”  Úadapterú1No matching adapter given. Received 'adapter_id'=ú, litellm.adapters=rH  ©r+  ©râ  r  )r  Úadaptersr…  Ú!translate_completion_input_paramsr  rŽ  rR   Ú"translate_completion_output_paramsrO   Ú,translate_completion_output_params_streamingr–  )rX  r(  Útranslation_objr  Ú
new_kwargsr+  Útranslated_responser©  s           r  Úaadapter_completionrf    sþ   è ø€ ðØ/3ˆÜ×$Ñ$ò 	2ˆDØ�D‰z˜ZÓ'Ø"& y¡/‘ð	2ð Ð"ÜØCÀJÀ<ÐObÔcj×csÑcsÐbtÐuóð ð ,×MÑMÐU[ÐMÓ\ˆ
äEPÑE^ÐS]ÑE^×?^ˆØQUÐÜ�h¤Ô.Ø"1×"TÑ"TÐ^fÐ"TÓ"gÐÜ�hÔ 3Ô4Ø"1×"^Ñ"^Ø"*ð #_ó #Ðð #Ð"ð @_ùô ò ØˆûðüsA   ‚C„B9 ¢AB9 Á*B7Á+AB9 Â6CÂ7B9 Â9	C	ÃCÃC	Ã	Cc            	   ‹   óÐ   K  — ddl m} t        t        t        t        t
        t        t        f   t        t           z  f    |j                  di | ¤ddi¤Ž«      }|ƒ d {  –—† S 7 Œ­w)Nr   )Ú"GenerateContentToCompletionHandlerÚ	_is_asyncTr  )
Ú%litellm.google_genai.adapters.handlerrh  r   r   rA  rœ  r  r   ÚbytesÚgenerate_content_handler)r(  rh  Úcoros      r  Úaadapter_generate_contentrn  /  s^   è ø€ õ YäÜ”&œ&¤$¤s¬F {Ñ"3´mÄEÑ6JÑ"JÐJÑKØCÐ*×CÑCÑ]ÀfÑ]ÐX\Ò]ó€Dð �:Ðˆ:ús   ‚AA&ÁA$Á A&c                 ó†  — d }t         j                  D ]  }|d   | k(  sŒ|d   }Œ |€t        d| › dt         j                  › �«      ‚|j                  |¬«      }t	        di |¤Ž}d }t        |t        «      r|j                  |¬«      }|S t        |t        «      st        j                  |«      r|j                  |¬«      }|S )	Nr”  rZ  r[  r\  rH  r]  r^  r  )r  r_  r…  r`  r¤   rŽ  rR   ra  rO   ÚinspectÚisgeneratorrb  )rX  r(  rc  r  rd  r+  re  s          r  Úadapter_completionrr  ;  sä   € Ø+/€OÜ× Ñ ò .ˆØ�‰:˜Ó#Ø" 9™o‰Oð.ð ÐÜØ?À
¸|ÐK^Ô_f×_oÑ_oÐ^pÐqó
ð 	
ð (×IÑIÐQWÐIÓX€Jä;EÑ;SÈ
Ñ;S€HØMQÐÜ�(œMÔ*Ø-×PÑPÐZbÐPÓcÐð Ðô 
�HÔ1Ô	2´g×6IÑ6IÈ(Ô6SØ-×ZÑZÐmuÐZÓvÐàÐr	  rß  c                 ó   — |xs/ t         j                  xs t         j                  xs t        d«      }|j	                  dd «      }|j	                  dd «      }|€0|�t        j                  ||¬«      }nt        j                  |¬«      }|�|j                  j                  | |¬«      }n|j                  j                  | ¬«      }|j                  «       }t         j                  j                  j                  |¬«      S )	Nr§  rj  r   )rù   rû   )rù   ©rß  r#  ©rß  ©r|  )r  rù   r©  rF   r  r�  ÚOpenAIÚmoderationsr,  Ú
model_dumprò  r8  Úconvert_to_moderation_response)rß  r#  rù   r(  rj  Úopenai_clientr+  Úresponse_dicts           r  Ú
moderationr}  U  sà   € àÒbœŸ™Òb¬G×,>Ñ,>ÒbÄ.ÐQaÓBb€Gð —j‘j ¨TÓ2€Hà—J‘J˜x¨Ó.€MØÐØÐÜ"ŸM™M°'ÀHÔM‰Mä"ŸM™M°'Ô:ˆMàÐØ ×,Ñ,×3Ñ3¸%ÀuÐ3ÓM‰à ×,Ñ,×3Ñ3¸%Ð3Ó@ˆà!)×!4Ñ!4Ó!6€MÜ�=‰=×5Ñ5×TÑTØ%ð Uó ð r	  c              ‹   ó  K  — ddl m} |xs/ t        j                  xs t        j                  xs t        d«      }t        di |¤Ž}|j                  dd «      }d }	 t        j                  |xs d||j                  |j                  ¬«      \  }}}	}|j                  dd «      }
|
�t        |
|«      s't        j                  d||j                  xs |¬	«      }n|
}|xs$ t        j                  j                  j                   }|�W|j#                  ||j                  d
d «      i i |¥|¬«       | |dœ}|j%                  | ||t'        |j(                  «      dœ¬«       |�&|j*                  j-                  | |¬«      ƒ d {  –—† }n$|j*                  j-                  | ¬«      ƒ d {  –—† }|j/                  «       }t        j0                  j2                  j5                  |¬«      S # t        j                  $ r Y �Œfw xY w7 Œ}7 ŒZ­w)Nr   )ÚAsyncOpenAIr§  rd  r
  rñ  r   T)Úis_asyncrù   rj  rA  rm  rt  )Úcomplete_input_dictrj  )rß  rù   rv  ru  rv  r  )r�  r  r  rù   r©  rF   rI   r  r`   rj  r$  rŽ  ró  Ú_get_openai_clientrÍ   ÚOPENAIrH  r«  rï  r  rû   rx  r,  ry  rò  r8  rz  )rß  r#  rù   rc  r(  r  r~  rd  Ú_dynamic_api_baseÚ_dynamic_api_keyr{  Ú_openai_clientÚmoderation_requestr+  r|  s                  r  Úamoderationrˆ  n  s$  è ø€ õ #ð ÒbœŸ™Òb¬G×,>Ñ,>ÒbÄ.ÐQaÓBb€GÜ1Ñ;°FÑ;€OØ;A¿:¹:ÐF[Ð]aÓ;bÐØÐðô ×$Ñ$Ø’+˜2Ø 3Ø$×-Ñ-Ø#×+Ñ+ô	
ñ	
ØØØØð "Ÿ:™: h°Ó5€MØÐ¤J¨}¸kÔ$Jô '>×&PÑ&PØØØ$×-Ñ-ÒBÐ1Bð 'Qó '
‰ð 'ˆð .ÒR´×1EÑ1E×1LÑ1L×1RÑ1RÐØÐ&Ø×8Ñ8ØØ—‘˜F DÓ)ØðØðð !4ð 	9ô 	
ð /4¸eÑ$DÐØ×$Ñ$ØØà'9Ü × 7Ñ 7Ó8ñð 	%ô 	
ð ÐØ'×3Ñ3×:Ñ:ÀÈeÐ:ÓT×T‰à'×3Ñ3×:Ñ:ÀÐ:ÓG×GˆØ!)×!4Ñ!4Ó!6€MÜ�=‰=×5Ñ5×TÑTØ%ð Uó ð øôW ×"Ñ"ò âðúðN UøàGúsI   ‚AH Á6G" ÂC,H Å>G<Å?$H Æ#G>Æ$>H Ç"G9Ç5H Ç8G9Ç9H Ç>H c               �   ó„  K  — t        j                  «       }t        | «      dkD  r| d   n|d   }d|d<   |j                  dd«      }d}	 t	        t
        g| ¢­i |¤Ž}t        j                  «       }t	        |j                  |«      }t        ||j                  dd«      ¬«      \  }	}}	}	|j                  d|«      ƒ d{  –—† }
t        |
t        «      rt        |
«      }nMt        |
t        «      r|
}n:t        j                  |
«      r|
ƒ d{  –—† }n|j                  d|«      ƒ d{  –—† }t        |t        «      st!        d	t#        |«      › �«      ‚|�=t        |t$        «      s-|�+t'        |d
d«      }|€t)        |«      }|�||j*                  d<   |S 7 ŒÕ7 Œ‰7 Œp# t,        $ r}|xs d}t/        |||| |¬«      ‚d}~ww xY w­w)úa
    Calls openai + azure whisper endpoints.

    Allows router to load balance between them
    r   r#  TÚatranscriptionÚfileNrj  ©r#  rj  zVInvalid response from transcription provider, expected TranscriptionResponse, but got ÚdurationÚaudio_transcription_durationr�  r‚  )r‡  rˆ  r’  r  r   Útranscriptionr˜  r™  rš  r`   r›  rŽ  rœ  r³  rW   rž  r…  r  r   rÇ  r+   r÷  r–  r   )r¶  r(  r€  r#  rŒ  rc  r¤  r¥  r¦  r£  r§  r+  Úexisting_durationÚcalculated_durationr©  s                  r  r‹  r‹  ¼  sÞ  è ø€ ô ×(Ñ(Ó*€DÜ! $›i¨!šm�4˜’7°¸±€Eà#€FÐÑØ—*‘*˜V TÓ*€DØÐð.
äœmÐ=¨dÒ=°fÑ=ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9Ðä'7¸eÈfÏjÉjÐYcÐeiÓNjÔ'kÑ$ˆÐ  1ð &*×%9Ñ%9¸$Ð@QÓ%R×RˆÜ�m¤TÔ*Ü?ÀÓN‰HÜ˜Ô'<Ô=Ø$‰HÜ× Ñ  Ô/Ø*×*‰Hð "×1Ñ1°$Ð8IÓJ×JˆHÜ˜(Ô$9Ô:ÜØhÔimÐnvÓiwÐhxÐyóð ð Ð¬
°8¼YÔ(GÈDÐL\Ü'.¨x¸ÀTÓ'JÐØ Ð(Ü-GÈÓ-MÐ#Ø&Ð2ØNa�H×+Ñ+Ð,JÑKàˆð5  Søð +øð Kùô$ ò 
Ø1Ò=°XÐÜØØ 3Ø Ø"Øô
ð 	
ûð
üsc   ‚AG Á	A4F Â=FÂ>AF ÄFÄF Ä&FÄ'A+F ÆG ÆF ÆF ÆF Æ	F=Æ"F8Æ8F=Æ=G rŒ  Úlanguage)r  r¼  ÚsrtÚverbose_jsonÚvttÚtimestamp_granularities)ÚwordÚsegmentrý   c                 óú  — |j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  d«      }|j                  d	d«      }|j                  d
d«      }|j                  dg «       t        |«      }|j                  dd«      }|rt        |«      |j                  d<   |€t
        j                  }t        j                  j                  «       }t        | ||
|	¬«      \  } }}}
|�|n|	}	t        d-| ||||||dœ|¤Ž}t        d-i |¤Ž}|j                  | |i ||||di dœ|¥|¬«       d}t        j                  | t!        |«      ¬«      }|dk(  rÀ|€¾|
xs t        j"                  xs t%        d«      }
|xs t        j&                  xs t%        d«      }|j                  dd«      xs t%        d«      }|	xs/ t        j(                  xs t        j*                  xs t%        d«      }	||d	<   t,        j/                  | ||||||||
|	||||¬«      }�nê|dk(  s|t        j0                  v r´|
xs. t        j"                  xs t3        d«      xs t3        d«      xs d}
t        j4                  xs t3        d«      xs dt
        _        |	xs/ t        j(                  xs t        j6                  xs t3        d«      }	t8        j/                  | |||||||||
|	|||¬«      }�n|d k(  r3t:        j/                  | ||||||||
|	t=        |t>        «      r|nd¬!«      }nç|d"k(  rOd#d$l m!}   | «       j/                  | ||||||�"t=        |tD        «      st=        |tF        «      r|nd||||
|	||¬%«      }n“|d&k(  rCd#d'l$m%}!  |!«       }"|r|"jM                  | ||	|
||||¬(«      }ne|"j/                  | ||	|
||||¬(«      }nK|�ItN        j/                  | ||||||�"t=        |tD        «      st=        |tF        «      r|nd||||
|	|i ||¬)«      }|�;t=        |tP        «      s+tS        |d*d«      }#|#€tU        |«      }$|$�|$|jV                  d+<   |€tY        d,«      ‚|S ).rŠ  r[  Nr0  r  rM  r‹  Frd  rY  r]  Útagsr   rñ  )r#  r“  r  rB  r—  r4  rc  ©r[  r0  r  rM  rB  Ústream_responserm  r«  rÄ  rg  rh  rl  rm  rj  )r#  Ú
audio_filer~  rü  r‹  r   rü   r  rj  rù   rW  rl  rý   rq  r�  r  r  r  ré  r§  )r#  rž  r~  rü  r‹  r   rü   r  rý   rj  rù   r‹  rq  r]  Únvidia_riva)r#  rž  r~  rq  rü  r‹  rü   r  rj  rù   r‹  Úsonioxr   )ÚSonioxAudioTranscriptionHandler)r#  rž  r~  rq  rü  r‹  r   rü   rý   r  rj  rù   ro  r‹  r&  )Ú%BedrockAudioTranscriptionRustDispatch)r#  rž  rù   rj  rc  rY  r~  rü   )r#  rž  r~  rq  rü  r‹  r   rü   rý   r  rj  rù   rc  ro  r‹  r]  rŽ  r�  z8Unmapped provider passed in. Unable to get the response.r  )-r  r  rc   r  Úmodel_call_detailsr�  ÚDEFAULT_MAX_RETRIESr  rò  rW   r`   rf   r    r«  rS   Ú'get_provider_audio_transcription_configrÍ   rj  rF   rW  rù   r{  rÜ   Úaudio_transcriptionsr°  rh   rú   r©  rÒ   rÓ   rŽ  r¦   Ú/litellm.llms.soniox.audio_transcription.handlerr¡  r?   r>   Ú(litellm.llms.bedrock.audio_transcriptionr¢  Úasync_audio_transcriptionsr�  r   rÇ  r+   r÷  r…  )%r#  rŒ  r“  r  rB  r—  r4  rA  rü   rù   rj  rW  rý   rc  r(  r[  r0  r  rM  r‹  rd  rY  r]  rl  r   rü  r¿  r~  r*  r+  r‹  rl  r¡  r¢  Údispatchr‘  r’  s%                                        r  r�  r�  ú  s‚  € ð2 $ŸZ™ZÐ(9¸4Ó@€OØ"(§*¡*Ð-CÀTÓ"JÐØŸ
™
 <°Ó6€JØ—j‘j ¨TÓ2€HØ"ŸJ™JÐ'7¸Ó?€NØ4:·J±JÐ?TÓ4UÐØ!Ÿ:™: o°tÓ<€MØ"ŸJ™JÐ'7¸Ó>€NØ
‡J�Jˆv�rÔÜ DÀVÓ LÐàgm×gqÑgqØ�$óh€Fñ Ü;>¸v»;Ð×.Ñ.¨xÑ8àÐÜ×0Ñ0ˆä#ŸM™M×?Ñ?ÓA€Nä<LØØ/ØØô	=Ñ9€EÐ °ð "1Ð!<‰oÀ'€Gä>ð 	ØØØØ'Ø 7ØØ/ñ	ð ñ	€Oô "4Ñ!=°fÑ!=Ðà×4Ñ4ØØØà.Ø$8Ø$Ø Ø $Ø!ñ
ð ð
ð 0ð 5ô ð  ae€Hä2×ZÑZØÜÐ1Ó2ô€Oð
 ˜gÒ%¨/Ð*AàÒSœw×/Ñ/ÒS´>ÐBRÓ3Sˆà!Ò_¤W×%8Ñ%8Ò_¼NÐK^Ó<_ˆà &§
¡
Ð+;¸TÓ BÒ fÄnÐUeÓFfˆàÒdœWŸ_™_Òd´×0AÑ0AÒdÄ^ÐTcÓEdˆà+8ˆ˜Ñ(ä-×BÑBØØØ+Ø)Ø)ØØØ+ØØØ#Ø)Ø#Ø.ð Có 
Šð  
 Ò	(Ð-@ÄG×DgÑDgÑ-gàò +Ü×Ñò+äÐ+Ó,ò+ô Ð+Ó,ò+ð +ð 	ô × Ñ ò ÜÐ/Ó0òàô 	Ôð ÒbœWŸ_™_Òb´×0BÑ0BÒbÄjÐQaÓFbˆÜ.×CÑCØØØ+Ø)Ø)ØØØ+Ø#ØØØ+Ø.Ø)ð Dó 
Šð  
 Ò	-ô 4×HÑHØØØ+Ø.Ø)Ø)ØØ+ØØä#-¨oÔ?aÔ#b‘Ðhlð Ió 
‰ð 
 Ò	(õ	
ñ 3Ó4×IÑIØØØ+Ø.Ø)Ø)ð Ð%¬:°f¼kÔ+JÌjÐY_ÔaqÔNrñ ààØ#Ø+ØØØ!Ø+ð% Jó 
‰ð( 
 	Ò	)Ýbá?ÓAˆÙØ×:Ñ:ØØØØ!Ø$7Ø+Ø /Øð ;ó 	‰Hð  ×4Ñ4ØØØØ!Ø$7Ø+Ø /Øð 5ó 	‰Hð 
Ð	$Ü(×=Ñ=ØØØ+Ø.Ø)Ø)ð Ð%¬:°f¼kÔ+JÌjÐY_ÔaqÔNrñ ààØ#Ø+ØØØ 3ØØ+Ø)ð) >ó 
ˆð2 Ð¤J¨x¼Ô$CÜ#*¨8°ZÀÓ#FÐØÐ$Ü)CÀDÓ)IÐØ"Ð.ØJ]�×'Ñ'Ð(FÑGàÐÜÐSÓTÐTØ€Or	  c               �   óX  K  — t        j                  «       }t        | «      dkD  r| d   n|d   }d|d<   |j                  dd«      }	 t	        t
        g| ¢­i |¤Ž}t        j                  «       }t	        |j                  |«      }t        ||j                  dd«      ¬«      \  }}}}|j                  d|«      ƒ d{  –—† }	t        j                  |	«      r|	ƒ d{  –—† }
|
S |j                  d|«      ƒ d{  –—† }
|
S 7 ŒA7 Œ$7 Œ
# t        $ r}|xs d	}t        |||| |¬
«      ‚d}~ww xY w­w)z%
    Calls openai tts endpoints.
    r   r#  TÚaspeechrc  Nrj  r�  r�  r‚  )r‡  rˆ  r’  r  r   Úspeechr˜  r™  rš  r`   r›  rž  r–  r   rç  s               r  r¬  r¬  þ  sA  è ø€ ô
 ×(Ñ(Ó*€DÜ! $›i¨!šm�4˜’7°¸±€Eà€Fˆ9ÑØ Ÿ*™*Ð%:¸DÓAÐð
äœfÐ6 tÒ6¨vÑ6ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9Ðä'7¸eÈfÏjÉjÐYcÐeiÓNjÔ'kÑ$ˆÐ  1ð &*×%9Ñ%9¸$Ð@QÓ%R×RˆÜ×Ñ˜}Ô-Ø*×*ˆHð ˆð "×1Ñ1°$Ð8IÓJ×JˆHØˆð  Søà*øð Kùäò 
Ø1Ò=°XÐÜØØ 3Ø Ø"Øô
ð 	
ûð
üsm   ‚AD*ÁA4D Â;C=Â<D ÃC?ÃD Ã D*Ã!D Ã6DÃ7D Ã<D*Ã=D Ã?D ÄD Ä	D'ÄD"Ä"D'Ä'D*Úvoicerú   ÚprojectrM  ÚspeedÚinstructionsro  r¬  c                 óÚ  — |j                  dd «      }|j                  dd «      }|j                  dd «      }|j                  dd «      }|j                  dd «      }|j                  dd «      }t        | ||¬«      \  } }}}|j                  dg «       i }|�||d	<   |�||d
<   |�||d<   |
€t        j                  }
|€"t        j
                  xs t        j                  }t        dH|	|xs |dœ|¤Ž}t        j                  | t        j                  |«      ¬«      }|�|j                  | ||d|¬«      \  }}t        t        |j                  d«      «      }|j                  | ||||||	d i dœ|¥|¬«       d }|dk(  s|t        j                   v �r|�t#        |t$        «      st        j&                  d| |¬«      ‚|xs. t        j(                  xs t+        d«      xs t+        d«      xs d}|xs/ t        j,                  xs t        j.                  xs t+        d«      }|xs! t        j0                  xs t+        d«      xs d }|xs! t        j2                  xs t+        d«      xs d }|xs t        j4                  }t6        j9                  | |||||||||
||||¬«      }�n©|dk(  �r�| j;                  d«      rUdd lm} |€t        j&                  d!| |¬«      ‚t        ||«      }  | j@                  dH| ||||||
|tB        |xs d||d"œ|¤Ž}�n=|�t#        |t$        «      st        j&                  d#| |¬«      ‚|xs t        j(                  xs t+        d$«      }|xs t        jD                  xs t+        d%«      }|xs< t        j,                  xs* t        jF                  xs t+        d&«      xs t+        d'«      }|j                  d(i «      j                  d)d «      xs t+        d*«      }!|j                  d+d «      }"|r||d<   tH        j9                  | |||||||!|"|||
||||¬,«      }�n"|d-k(  rèdd.l%m&}# |€ |#«       }t        |#|«      }$t#        |t$        «      r|nd }%|%�|%jO                  «       st        j&                  d/| |¬«      ‚|%jO                  «       }%|j                  |#jP                  d «      }&t#        |&tR        «      r|&||#jP                  <   |%||#jT                  <   |�||d0<   |�||d1<   tB        jW                  | ||%|$|||||
|||xs d¬2«      }�n5|d3k(  s|d4k(  r³dd5l,m-}' t]        dHi |¤Ž}(d6| v r#d7d8l/m0}) |)jc                  | |||||xs i ||¬9«      S |€ |'«       }t        |'|«      }*|je                  |(jf                  |(jh                  |(jj                  d:œ«        |*j@                  dH| ||||||
|tB        |xs d|(j(                  d d"œ|¤Ž}�nx|d6k(  r#d7d8l/m0}) |)jc                  | |||||xs i ||¬9«      S |d;k(  rTdd<l6m7}+ |€t        j&                  d=| |¬«      ‚t        |+|«      }, |,j@                  dH| ||||||
|tB        |xs d||d"œ|¤Ž}n÷|d>k(  r«dd?l8m9}- |€ |-«       }t        |-|«      }.|�||d0<   |�||d1<   d }/t#        |t$        «      r|}/nGt#        |tR        «      r7|j                  d@«      xs$ |j                  dA«      xs |j                  dB«      }/tB        jW                  | ||/|.|||||
|||xs d¬2«      }nG|dCk(  rBddDl:m;}0 |€ |0«       }t        |0|«      }1 |1j@                  dH| ||||||
|tB        |xs d||d"œ|¤Ž}|€ ty        dE|› dFt        jz                  › dG�«      ‚|S )INrA  r[  r0  rY  r  r]  rt  r›  rB  r°  r±  )rM  rù   r«  F)r#  r~  r®  ra  r(  rd  rœ  rm  r�  z;'voice' is required to be passed as a string for OpenAI TTSr  r  r  r  r§  ré  ÚOPENAI_PROJECT)r#  rß  r®  r~  rù   rj  rú   r¯  rý   rü   r  r   r¬  r]  rÄ  zspeech/r   )ÚAzureAVATextToSpeechConfigz,Azure Speech Service configuration not found)r#  rß  r®  r~  r*  r  rü   rY  r�  r¬  rj  rù   z:'voice' is required to be passed as a string for Azure TTSrg  rh  ri  rj  rk  rl  rm  rn  )r#  rß  r®  r~  rù   rj  rW  rl  rn  rú   rý   rü   r  r   r¬  rq  Ú
elevenlabs)ÚElevenLabsTextToSpeechConfigzA'voice' must resolve to an ElevenLabs voice id for ElevenLabs TTSrj  rù   )r#  rß  r®  Útext_to_speech_provider_configÚtext_to_speech_optional_paramsrc  rq  r  rü   rY  r   ri  r'  r’  )ÚVertexAITextToSpeechConfigr“  ru   )Ú#speech_to_completion_bridge_handler)r#  rß  r®  r~  rq  ro  r  rc  )rq  rt  rw  Úrunwayml)ÚRunwayMLTextToSpeechConfigz/RunwayML Text-to-Speech configuration not foundr|  )ÚMinimaxTextToSpeechConfigÚvoice_idr”  ÚnameÚ	aws_polly)ÚAWSPollyTextToSpeechConfigz&Unable to map the custom llm provider=z to a known provider=ú.r  )>r  r`   r  r  rð  r  r�  r¤  r    rS   Ú"get_provider_text_to_speech_configrÍ   Úmap_openai_paramsr   r�  r«  r°  rŽ  r  r$  rj  rh   rù   r©  rú   r¯  ro  ró  Úaudio_speechrÍ  Ú0litellm.llms.azure.text_to_speech.transformationr´  Údispatch_text_to_speechr�  rW  r{  r�  Ú5litellm.llms.elevenlabs.text_to_speech.transformationr¶  r  ÚELEVENLABS_QUERY_PARAMS_KEYrœ  ÚELEVENLABS_VOICE_ID_KEYÚtext_to_speech_handlerÚ4litellm.llms.vertex_ai.text_to_speech.transformationr¹  rI   Ú4endpoints.speech.speech_to_completion_bridge.handlerrº  r­  rð  rq  rt  rw  Ú3litellm.llms.runwayml.text_to_speech.transformationr¼  Ú2litellm.llms.minimax.text_to_speech.transformationr½  Ú4litellm.llms.aws_polly.text_to_speech.transformationrÁ  r–  Úprovider_list)2r#  rß  r®  rù   rj  rW  rú   r¯  rý   rM  rü   rB  r°  r±  r   ro  rc  r¬  r(  rA  r[  r0  rY  r  r]  r¿  r~  r*  r·  r  r+  r´  Úazure_configrl  rn  r¶  Úelevenlabs_configr¾  Úquery_paramsr¹  Úgeneric_optional_paramsrº  Úvertex_configr¼  Úrunwayml_configr½  Úminimax_configÚ	voice_strrÁ  Úaws_polly_configs2                                                     r  r­  r­  %  s�	  € ð, —*‘*˜V TÓ*€DØ)/¯©Ð4EÀtÓ)L€OØ"(§*¡*Ð-CÀTÓ"JÐØ!Ÿ:™: o°tÓ<€MØŸ
™
 <°Ó6€JØ"ŸJ™JÐ'7¸Ó>€NÜ<LØÐ)<Àxô=Ñ9€EÐ °ð ‡J�Jˆv�rÔà€OØÐ"Ø-<ˆÐ)Ñ*ØÐØ#(ˆ˜Ñ ØÐØ*6ˆ˜Ñ'à€Ü×)Ñ)ˆàÐÜ×)Ñ)ÒG¬V×-GÑ-GˆÜ!3Ð!t¸XÈwÒOiÐZiÑ!tÐmsÑ!tÐô &;×%]Ñ%]ØÜ×%Ñ%Ð&9Ó:ô&Ð"ð &Ð1Ø!?×!QÑ!QØØ+ØØØð "Ró "
Ñˆˆô -1Ô1BÀFÇJÁJÐOdÓDeÓ,f€KØ×,Ñ,ØØØ'à.Ø$8Ø$Ø Ø $Ø!ñ
ð ð
ð 0ð -ô ð ko€HØ˜hÒ&Ð*=Ä×AdÑAdÒ*dØˆ=¤¨E´3Ô!7Ü×)Ñ)ØUØØ0ôð ð ò +Ü×Ñò+äÐ+Ó,ò+ô Ð+Ó,ò+ð +ð 	ð ò ,Ü�‰ò,ä×!Ñ!ò,ô Ð*Ó+ð	 	ð ò Ü×#Ñ#òäÐ/Ó0òð ð	 	ð ò Ü�‰òäÐ*Ó+òð ð	 	ð Ò,œWŸ_™_ˆä*×7Ñ7ØØØØ+ØØØ%ØØ#ØØ#ØØØ)ð 8ó 
Šð  
 Ó	'à×Ñ˜IÔ&õð
 .Ð5Ü×-Ñ-ØJØØ!4ôð ô #'Ð'AÐCaÓ"bˆLà;�|×;Ñ;ð ØØØØ /Ø$7Ø'ØØ+Ü&;ØÒ( 5Ø!Øñð ñŠHð" ˆ}¤Z°´sÔ%;Ü×-Ñ-ØXØØ!4ôð ð
  ÒS¤7×#3Ñ#3ÒS´zÐBRÓ7SˆHà%Ò_¬×)<Ñ)<Ò_Ä
ÐK^Ó@_ˆKð ò /Ü—?‘?ò/ä×$Ñ$ò/ô Ð4Ó5ò/ô ˜oÓ.ð ð 1@×0CÑ0CÀLÐRTÓ0U×0YÑ0YØ  $ó1ò 1.äÐ,Ó-ð ð .4¯Z©ZÐ8QÐSWÓ-XÐ#áØ3@� Ñ0ä-×:Ñ:ØØØØ /ØØ!Ø'Ø-Ø(?Ø)Ø'ØØ'ØØØ2ð! ;ó ŠHð$ 
 Ò	,õ	
ð *Ð1Ù-IÓ-KÐ*ä#'Ð(DÐFdÓ#eÐä& u¬cÔ2‘5¸ˆØÐ 8§>¡>Ô#3Ü×)Ñ)Ø[ØØ0ôð ð
 —>‘>Ó#ˆà$Ÿj™jÐ)E×)aÑ)aÐcgÓhˆÜ�l¤DÔ)Ø\hÐÐ <× XÑ XÑYàT\ÐÐ8×PÑPÑQàÐØ.6Ð 
Ñ+ØÐØ-4Ð 	Ñ*ä(×?Ñ?ØØØØ+<Ø+:Ø 3Ø.Ø#ØØ'ØØÒ& ð @ó 
Šð 
 Ò	+Ð/BÐFVÒ/Võ	
ô *>Ñ)GÀÑ)GÐð �uÑõð 7×=Ñ=ØØØØ /Ø2Øš 2Ø'Ø$7ð >ó 	ð 	ð *Ð1Ù-GÓ-IÐ*ô  $Ð$>Ð@^Ó_ˆð 	×"Ñ"à"9×"HÑ"HØ#:×#JÑ#JØ&=×&PÑ&Pñô	
ð 9�=×8Ñ8ð 
ØØØØ+Ø 3Ø#ØØ!Ü"7ØÒ$˜uØ,×5Ñ5Øñ
ð ñ
Šð 
 Ò	(õ	
ð 3×9Ñ9ØØØØ+Ø.Ø’M˜rØ#Ø 3ð :ó 	
ð 		
ð 
 
Ò	*õ	
ð
 *Ð1Ü×)Ñ)ØIØØ0ôð ô "&Ð&@ÐB`Ó!aˆà:�?×:Ñ:ð 
ØØØØ+Ø 3Ø#ØØ'Ü"7ØÒ$˜uØØñ
ð ñ
‰ð 
 	Ò	)õ	
ð
 *Ð1Ù-FÓ-HÐ*ä $Ð%>Ð@^Ó _ˆàÐØ.6Ð 
Ñ+ØÐØ-4Ð 	Ñ*ð !%ˆ	Ü�eœSÔ!Ø‰IÜ˜œtÔ$àŸ	™	 *Ó-ÒU°·±¸4³ÒUÀEÇIÁIÈfÓDUˆIä(×?Ñ?ØØØØ+9Ø+:Ø 3Ø.Ø#ØØ'ØØÒ& ð @ó 
‰ð 
 Ò	+õ	
ð
 *Ð1Ù-GÓ-IÐ*ô #'Ð'AÐCaÓ"bÐà;Ð#×;Ñ;ð 
ØØØØ+Ø 3Ø#ØØ'Ü"7ØÒ$˜uØØñ
ð ñ
ˆð  ÐÜØ4Ð5HÐ4IÐI^Ô_f×_tÑ_tÐ^uÐuvÐwó
ð 	
ð €Or	  Úmodel_paramsr  c              ƒ   ó  K  — ddl m} ddlm}  |«       } |dg ddt	        t        j                  «       «      t        j                  j                  «       t	        t        j                  «       «      d¬«      }|| d	<   |j                  | ¬
«      } 	 | j                  dd«      }|€t        d«      ‚|t        j                  v r$|€"t        j                  |   j                  d«      }| j                  dd«      }	| j                  dd«      }
| j                  dd«      }t        ||	|
|¬«      \  }}}}|t        j                  v r$|€"t        j                  |   j                  d«      }ddi| d<   |xs d}d|v r|j                  ||| |¬«      ƒ d{  –—† S |j!                  ||| ||¬«      }||v r> ||   «       ƒ d{  –—† }t#        |di «      j                  di «      xs i }t%        |«      S t        d|› d�«      ‚7 Œk7 ŒA# t        $ r€}t'        t)        j*                  «       «      }t-        |t        «      r|dd }|€d|› d|› �|d œcY d}~S t	        |«      d!z   |z   }|j.                  j                  d"«      }|||d#œcY d}~S d}~ww xY w­w)$a   
    Support health checks for different providers. Return remaining rate limit, etc.

    Returns:
        {
            "x-ratelimit-remaining-requests": int,
            "x-ratelimit-remaining-tokens": int,
            "x-ms-region": str,
        }
    r   )Úget_litellm_logging_class)ÚHealthCheckHelpersr
  Fr  T)r#  r%  r7  Ú	call_typer[  Ú
start_timeÚfunction_idÚlog_raw_request_responserd  )rÛ  r#  Nzmodel not setr  rc  rj  rù   rñ  zno-cacheÚcacher  Ú*)r#  rc  rÛ  rd  )r#  rc  rÛ  r  rß  r÷  ro  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  r–  r  Ú
model_costr`   Úahealth_check_wildcard_modelsÚget_mode_handlersrÇ  r3   r   Ú	tracebackÚ
format_excrŽ  r£  )rÛ  r  r  rß  rÝ  rÞ  r$   rd  r#  Úcustom_llm_provider_from_paramsÚapi_base_from_paramsÚapi_key_from_paramsrc  r£  Úmode_handlersrª  Ú_response_headersr©  Ústack_traceÚerror_to_returnrç  s                        r  Úahealth_checkrú  Ø   sö  è ø€ õ  TÝRñ /Ó0€Gñ ")ØØØØÜœDŸJ™J›LÓ)Ü×$Ñ$×(Ñ(Ó*ÜœŸ
™
›Ó%Ø!%ô	"Ðð +>€LÐ&Ñ'Ø%×aÑaØ!ð bó €LðA
Ø(×,Ñ,¨W°dÓ;ˆØˆ=Ü˜OÓ,Ð,à”G×&Ñ&Ñ&¨4¨<Ü×%Ñ% eÑ,×0Ñ0°Ó8ˆDà1=×1AÑ1AÐBWÐY]Ó1^Ð'Ø&2×&6Ñ&6°zÀ4Ó&HÐØ%1×%5Ñ%5°iÀÓ%FÐä+;ØØ ?Ø)Ø'ô	,
Ñ(ˆÐ" A qð ”G×&Ñ&Ñ&¨4¨<Ü×%Ñ% eÑ,×0Ñ0°Ó8ˆDà!+¨TÐ 2ˆ�WÑØŠ~�vˆØ�%‰<Ø+×IÑIØØ$7Ø)Ø$7ð	 Jó ÷ ð ð  2×CÑCØØ 3Ø%ØØð  Dó  
ˆð �=Ñ Ø%8 ]°4Ñ%8Ó%:×:ˆIä-4°YÐ@PÐRTÓ-U×-YÑ-YÐZcÐegÓ-hÒ-nÐlnÐÜ0Ð1BÓCÐCä˜e D 6Ð)rÐsÓtÐtð+øð   ;ùô ò 
Ü$¤Y×%9Ñ%9Ó%;Ó<ˆÜ�k¤3Ô'Ø% e tÐ,ˆKàˆ<à! ! ð  %`ð  alð  `mð  nØñõ ô
 "% Q£Ð*;Ñ!;¸kÑ!Iˆà(;×(NÑ(N×(RÑ(RÐSkÓ(lÐð %Ø&<Øñ
õ 	
ûð
üsy   ‚BJ
ÂC>G> ÆG:ÆG> ÆJ
Æ'G> Æ:G<Æ;/G> Ç*J
Ç+G> Ç<G> Ç>	JÈ>JÉJÉJ
É1JÉ<JÉ=J
ÊJÊJ
c                 ó†   — 	 t        j                  | «       t        j                  rt	        | «       y y # t
        $ r Y y w xY wr  )rv   r“  r  Úset_verboseÚprintr–  )Úprint_statements    r  rµ  rµ  G!  s=   € ðÜ×Ñ˜_Ô-Ü×ÒÜ�/Õ"ð øäò Ùðús   ‚04 ´	A ¿A c                  ó„   — t         j                  �&t        t         j                  «      }t        di | ¤|¤ŽS t	        d«      ‚)Nz`No config path set, please set a config path using `litellm.config_path = 'path/to/config.json'`r  )r  Úconfig_pathrl   r¤   r…  )r(  Úconfig_argss     r  Úconfig_completionr  P!  sA   € Ü×ÑÐ&Ü-¬g×.AÑ.AÓBˆäÑ2˜FÐ2 kÑ2Ð2äØnó
ð 	
r	  Úchunksc           
      ó,  — | d   d   }| d   d   }| d   d   }| d   d   }| d   j                  dd «      }| d   d   d   d	   }| d   d   d   d
   }g }	| D ]R  }
|
d   }|D ]F  }|€Œt        |d«      sŒ|j                  d«      €Œ%|j                  d«      }|	j                  |«       ŒH ŒT dj                  |	«      }	 t	        ||¬«      }t	        ||d¬«      }||||||d||dœg||||z   dœdœ}t        di |¤ŽS # t
        $ r t        d«       d}Y ŒHw xY w)Nr   r”  rA  rô  r#  Úsystem_fingerprintéÿÿÿÿrð  Úfinish_reasonrG  r¼  r
  r$  z1token_counter failed, assuming prompt tokens is 0T)r#  r¼  Úcount_response_tokens)r¼  ræ  rG  r  rè  )r”  rA  rô  r#  r  rð  rç  r  )r  r§  ró  r  ro   r–  rµ  rU   )r  r%  r”  rA  rô  r#  r  r  rG  Úcontent_listÚchunkrð  Úchoicerÿ  Úcombined_contentré  rê  r+  s                     r  Ú$stream_chunk_builder_text_completionr  [!  s’  € Ø�q‘	˜$‘€BØ˜1‘I˜hÑ'€FØ˜A‘Y˜yÑ)€GØ˜!‘9˜WÑ%€EØ & q¡	§¡Ð.BÀDÓ IÐØ! "™: iÑ0°Ñ3°OÑD€MØ˜R‘j Ñ+¨AÑ.¨zÑ:€Hà€LØò -ˆØ˜	Ñ"ˆØò 	-ˆFØÑ!¤g¨f°fÕ&=À&Ç*Á*ÈVÓBTÑB`Ø Ÿ*™* VÓ,�Ø×#Ñ# GÕ,ñ	-ð-ð !Ÿg™g lÓ3ÐðÜ%¨E¸HÔEˆô  -ØØØ"ô Ðð ØØØØ0ð )ØØ$Ø!.ñ	ð
ð +Ø!2Ø)Ð,=Ñ=ñ
ñ€Hô( "Ñ- HÑ-Ð-øô; ò ÜÐIÔJØŠðús   Â=C: Ã:DÄDr+  r  r$   c                 ó  — t        t        | dd «      dd «      }t        |t        t        f«      rt        |«      S |�y | j                  j                  d«      }	 t        j                  | |¬«      S # t        $ r t        | «      cY S w xY w)Nrç  Úcostrc  )Úcompletion_responserc  )
rÇ  rŽ  r  r  r÷  r  r  Úcompletion_costr–  Ú_stream_builder_model_map_cost)r+  r  Ú
usage_costÚprovider_hints       r  Ú_stream_builder_response_costr  ‘!  s‡   € Ü¤¨°'¸4Ó @À&È$ÓO€JÜ�*œs¤E˜lÔ+Ü�ZÓ Ð ØÐØØ#×2Ñ2×6Ñ6Øó€Mð8Ü×&Ñ&¸8ÐYfÔgÐgøÜò 8Ü-¨hÓ7Ò7ð8ús   ÁA0 Á0BÂBc                 óT   — t        d„ | D «       «      rt        | «      S t        | «      gS )Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr  )rŽ  rŒ  )r  Úcitations     r  r  z-_joined_streamed_citations.<locals>.<genexpr>¡!  s   è ø€ Ò
I¨(Œ:�h¤×%Ñ
Iùr  )r#  rŒ  )Ústreamed_citationss    r  Ú_joined_streamed_citationsr   !  s,   € Ü
Ñ
IÐ6HÔ
IÔIÜÐ&Ó'Ð'ÜÐ#Ó$Ð%Ð%r	  c                 ó¸   — | j                   }t        | dd «      }|rt        |t        «      sy 	 t	        j
                  ||¬«      \  }}||z   S # t        $ r Y y w xY w)Nrç  )r#  Úusage_object)r#  rÇ  rŽ  rX   r  Úcost_per_tokenr–  )r+  rN  rç  Úprompt_costÚcompletion_tokens_costs        r  r  r  ¦!  sd   € Ø Ÿ™€JÜ˜8 W¨dÓ3€EÙœZ¨¬uÔ5ØðÜ.5×.DÑ.DÈ:ÐdiÔ.jÑ+ˆÐ+ØÐ3Ñ3Ð3øÜò Ùðús   ®A Á	AÁAc                 óD   — t        | |«      }|€y | j                  }||d<   y )NÚresponse_cost)r  r÷  )r+  r  r!  Úhidden_paramss       r  Ú!_set_stream_builder_response_costr#  ²!  s,   € Ü8¸À;ÓO€MØÐØØ#×2Ñ2€MØ%2€M�/Ò"r	  c                 ó  — 	 | €t        j                  dddd¬«      ‚| sy t        | |«      }|j                  } t	        | «      dk(  ry t        d„ | D «       d «      }|�7t        |d   d   t         j                  j                  «      rt        | |¬«      S | d   d	   }|j                  | «      }g }	d
}
| D �]]  }|j                  d«      sŒ|d   d   }t        |t        «      r|j                  di «      nt        |di «      }t        |t        «      r|}n:t        |d«      r,t        t        t         t"        f   |j%                  «       «      }ni }|j                  d«      €w|j                  d«      €f|j                  d«      €U|j                  d«      €D|j                  d«      €3|j                  d«      €"|j                  d«      €|j                  d«      �d}
 n;|j                  d«      }t        |t         «      s�ŒI|s�ŒM|	j'                  |«       �Œ` |
�r!|	rdj)                  |	«      |d   d   d   d<   t+        |«      }|j-                  | |||d¬«      }t/        |d|«       t1        | «      D ]v  }t        |t        «      r|j                  d«      }nt        |dd «      }t        |t        «      sŒCd|v sŒH|j2                  j5                  di «      j7                  |d   «        n t         j8                  r|�t/        |d|j;                  |¬«      «       t=        ||«       |j?                  || |«       |S | D �cg c]0  }|j                  d«      rd|d   d   d   v r|d   d   d   d   �|‘Œ2 }}t	        |«      dkD  rP|jA                  |«      }t        tB        |jD                  d   «      }d |jF                  _$        ||jF                  _%        | D �cg c]0  }|j                  d«      rd|d   d   d   v r|d   d   d   d   �|‘Œ2 }}t	        |«      dkD  rNt        tB        |jD                  d   «      }d |jF                  _$        |jM                  |«      |jF                  _'        | D �cg c]0  }|j                  d«      rd|d   d   d   v r|d   d   d   d   �|‘Œ2 }}t	        |«      dkD  r|jQ                  |«      |d   d   d   d<   | D �cg c]0  }|j                  d«      rd|d   d   d   v r|d   d   d   d   �|‘Œ2 }}t	        |«      dkD  r|jS                  |«      |d   d   d   d<   | D �cg c]0  }|j                  d«      rd|d   d   d   v r|d   d   d   d   �|‘Œ2 }}t	        |«      dkD  r|jU                  |«      |d   d   d   d<   | D �cg c]0  }|j                  d«      rd|d   d   d   v r|d   d   d   d   �|‘Œ2 }}t	        |«      dkD  r4g }|D ]  }|jW                  |d   d   d   d   «       Œ! ||d   d   d   d<   | D �cg c]0  }|j                  d«      rd|d   d   d   v r|d   d   d   d   �|‘Œ2 }}t	        |«      dkD  r=t        tB        |jD                  d   «      }|jY                  |«      |jF                  _-        | D �cg c]0  }|j                  d«      rd|d   d   d   v r|d   d   d   d   �|‘Œ2 }}t	        |«      dkD  r4g }|D ]  }|jW                  |d   d   d   d   «       Œ! ||d   d   d   d<   | D �cg c]0  }|j                  d«      rd|d   d   d   v r|d   d   d   d   �|‘Œ2 } }t	        | «      dkD  ršt]        d„ | D «       «      }!t]        d„ |!D «       «      }"|"rdt_        |"«      ini }#|#g|!¢­D �$�%�&ci c]"  }$|$ja                  «       D ]  \  }%}&|%d k7  r|%|&“Œ Œ$ }'}%}$}&|'r.t        tB        |jD                  d   «      }|'|jF                  _1        t+        |«      }|je                  |«      }(|j-                  | ||||(¬«      }t/        |d|«       t1        | «      D ]v  }t        |t        «      r|j                  d«      }nt        |dd «      }t        |t        «      sŒCd|v sŒH|j2                  j5                  di «      j7                  |d   «        n t         j8                  r|�t/        |d|j;                  |¬«      «       t=        ||«       |j?                  || |«       |S c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}&}%}$w # tf        $ r4})ti        jj                  d!|)«       t        j                  dddd¬«      ‚d })~)ww xY w)"Nr»  z=Error building chunks for logging/streaming usage calculationr
  )rº  rÁ  r½  r#  r   c              3   óD   K  — | ]  }|j                  d «      sŒ|–— Œ y­w)rð  NrM  )r  Úcs     r  r  z'stream_chunk_builder.<locals>.<genexpr>Ó!  s   è ø€ Ò/V°aÀQÇUÁUÈ9ÕEU´Ñ/Vùs   ‚ ™ rð  )r  r%  r#  TÚdeltary  rõ  r3  Úreasoning_contentÚthinking_blocksÚannotationsr=  ÚimagesÚprovider_specific_fieldsFrä  rÁ  )r  r#  Úcompletion_outputr%  Úreasoning_tokensrç  r÷  r  )rO  c              3   ó\   K  — | ]$  }|d    d   d   d   }t        |t        «      r|–— Œ& y­w)rð  r   r'  r,  N)rŽ  rœ  )r  r
  Úfieldss      r  r  z'stream_chunk_builder.<locals>.<genexpr>œ"  s<   è ø€ ò 0àØ$ YÑ/°Ñ2°7Ñ;Ð<VÑW�FÜ˜f¤dÔ+ô ñ0ùs   ‚*,c              3   óJ   K  — | ]  }|j                  d «      €Œ|d    –— Œ y­w)r  NrM  )r  r0  s     r  r  z'stream_chunk_builder.<locals>.<genexpr>¢"  s)   è ø€ ò .Ø'-ÈÏÉÐT^ÓI_ÑIk��zÕ"ñ.ùs   ‚#™
#Ú	citationsr  zAlitellm.main.py::stream_chunk_builder() - Exception occurred - %s)6r  rÅ  r†   r  r’  ÚnextrŽ  rò  rT   r  Úbuild_base_responser  rœ  rÇ  r§  r   r  r   ry  ró  r  r7   Úcalculate_usagerö  Úreversedr÷  rE  rð  Úinclude_cost_in_streaming_usageÚ_response_cost_calculatorr#  Ú+apply_provider_assembled_streaming_metadataÚget_combined_tool_contentrN   rð  rÁ  rä  rõ  Ú"get_combined_function_call_contentr3  Úget_combined_contentÚget_combined_thinking_contentÚget_combined_reasoning_contentÚextendÚget_combined_audio_contentr=  Útupler  r&  r,  Úcount_reasoning_tokensr–  rv   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Úprovider_field_dictsr  Úcitation_fieldsr0  rI  rH  Úcombined_provider_fieldsr.  r©  s*                                             r  Ústream_chunk_builderrY  º!  sB  € ð^
Øˆ>Ü×"Ñ"ØØWØØô	ð ñ Øä)¨&°(Ó;ˆ	Ø×!Ñ!ˆô ˆv‹;˜!ÒØä*.Ñ/V¸6Ô/VÐX\Ó*]Ð Ø#Ð/´JØ$ YÑ/°Ñ2´G·M±M×4MÑ4Mô5
ô 8¸vÐPXÔYÐYà˜a‘y Ñ)ˆà#×7Ñ7¸Ó?ˆð 24ÐØ $ÐØó 	5ˆEØ—9‘9˜YÔ'Øà˜9Ñ% aÑ(ˆFÜ3=¸fÄdÔ3K˜Ÿ
™
 7¨BÔ/ÔQXÐY_ÐahÐjlÓQmˆIÜ˜)¤TÔ*Ø!‘Ü˜ LÔ1ÜœT¤#¤s (™^¨Y×-AÑ-AÓ-CÓD‘à�ð —	‘	˜,Ó'Ð3Ø—9‘9˜_Ó-Ð9Ø—9‘9Ð0Ó1Ð=Ø—9‘9Ð.Ó/Ð;Ø—9‘9˜]Ó+Ð7Ø—9‘9˜WÓ%Ð1Ø—9‘9˜XÓ&Ð2Ø—9‘9Ð7Ó8ÐDà(-Ð%Ùà—i‘i 	Ó*ˆGÜ˜'¤3Ö'«GØ$×+Ñ+¨GÖ4ð9	5ò< !Ù#Ø?A¿w¹wÐG[Ó?\�˜Ñ# AÑ& yÑ1°)Ñ<Ü ?ÀÓ IÐØ×-Ñ-ØØØ"3Ø!Ø!"ð .ó ˆEô �H˜g uÔ-ô " &Ó)ò 	�Ü˜e¤TÔ*Ø"ŸY™YÐ'7Ó8‘Fä$ UÐ,<¸dÓC�FÜ˜f¤dÕ+Ð0JÈfÒ0TØ×+Ñ+×6Ñ6Ð7QÐSUÓV×]Ñ]ØÐ9Ñ:ôñ ð	ô ×6Ò6¸;Ð;RÜØØØ×9Ñ9ÀÐ9ÓJôô
 .¨h¸ÔDà×AÑAÀ(ÈFÐT_Ô`ØˆOð  ö#
àØ�y‰y˜Ô#Ø  iÑ 0°Ñ 3°GÑ <Ñ<Ø�iÑ  Ñ# GÑ,¨\Ñ:ÐFò	 ð#
Ðð #
ô ÐÓ  1Ò$Ø%.×%HÑ%HÐIYÓ%ZˆOÜœ7 H×$4Ñ$4°QÑ$7Ó8ˆGØ&*ˆG�O‰OÔ#Ø)8ˆG�O‰OÔ&ð  ö'
àØ�y‰y˜Ô#Ø 5¨Ñ#3°AÑ#6°wÑ#?Ñ?Ø�iÑ  Ñ# GÑ,¨_Ñ=ÐIò	 ð'
Ðð '
ô Ð#Ó$ qÒ(Üœ7 H×$4Ñ$4°QÑ$7Ó8ˆGØ&*ˆG�O‰OÔ#Ø,5×,XÑ,XÐYmÓ,nˆG�O‰OÔ)ð  ö!
àØ�y‰y˜Ô#Ø˜U 9Ñ-¨aÑ0°Ñ9Ñ9Ø�iÑ  Ñ# GÑ,¨YÑ7ÐCò	 ð!
ˆð !
ô ˆ~Ó Ò"Ø;D×;YÑ;YÐZhÓ;iˆH�YÑ Ñ" 9Ñ-¨iÑ8ð  ö"
àØ�y‰y˜Ô#Ø! U¨9Ñ%5°aÑ%8¸Ñ%AÑAØ�iÑ  Ñ# GÑ,Ð->Ñ?ÐKò	 ð"
ˆð "
ô ˆÓ !Ò#ØCL×CjÑCjØóDˆH�YÑ Ñ" 9Ñ-Ð.?Ñ@ð  ö#
àØ�y‰y˜Ô#Ø# u¨YÑ'7¸Ñ':¸7Ñ'CÑCØ�iÑ  Ñ# GÑ,Ð-@ÑAÐMò	 ð#
Ðð #
ô ÐÓ  1Ò$ØEN×EmÑEmØ óFˆH�YÑ Ñ" 9Ñ-Ð.AÑBð  ö$
àØ�y‰y˜Ô#Ø  yÑ!1°!Ñ!4°WÑ!=Ñ=Ø�iÑ  Ñ# GÑ,¨]Ñ;ÐGò	 ð$
Ðð $
ô Ð Ó! AÒ%ð ,.ˆOØ'ò Q�Ø×&Ñ& r¨)¡}°QÑ'7¸Ñ'@ÀÑ'OÕPðQà?NˆH�YÑ Ñ" 9Ñ-¨mÑ<ð  ö
àØ�y‰y˜Ô#Ø˜5 Ñ+¨AÑ.¨wÑ7Ñ7Ø�iÑ  Ñ# GÑ,¨WÑ5ÐAò	 ð
ˆð 
ô ˆ|Ó˜qÒ Üœ7 H×$4Ñ$4°QÑ$7Ó8ˆGØ$-×$HÑ$HÈÓ$VˆG�O‰OÔ!ð  ö
àØ�y‰y˜Ô#Ø˜E )Ñ,¨QÑ/°Ñ8Ñ8Ø�iÑ  Ñ# GÑ,¨XÑ6ÐBò	 ð
ˆð 
ô ˆ|Ó˜qÒ à "ˆJØ%ò J�Ø×!Ñ! %¨	Ñ"2°1Ñ"5°gÑ">¸xÑ"HÕIðJà:DˆH�YÑ Ñ" 9Ñ-¨hÑ7ð  ö+
àØ�y‰y˜Ô#Ø*¨e°IÑ.>¸qÑ.AÀ'Ñ.JÑJØ�iÑ  Ñ# GÑ,Ð-GÑHÐTò	 ð+
Ð ð +
ô Ð'Ó(¨1Ò,Ü*/ñ 0à5ô0ó +Ð ô ).ñ .Ø1Eô.ó )Ðñ
 &ð Ô8Ð9KÓLÑMàð ð  /ÐFÐ1EÑF÷/ð /àØ"(§,¡,£.ò/ñ �C˜Ø˜*Ò$ð �U‘
ð/Øð/Ð$ò /ñ (Üœw¨×(8Ñ(8¸Ñ(;Ó<�Ø;S�—‘Ô8ä;¸HÓEÐà"+×"BÑ"BÀ8Ó"LÐà×)Ñ)ØØØ/ØØ-ð *ó 
ˆô 	�˜' 5Ô)ô ˜fÓ%ò 		ˆEÜ˜%¤Ô&ØŸ™Ð#3Ó4‘ä  Ð(8¸$Ó?�Ü˜&¤$Õ'Ð,FÈ&Ò,PØ×'Ñ'×2Ñ2Ð3MÈrÓR×YÑYØÐ5Ñ6ôñ ð		ô ×2Ò2°{Ð7NÜ�E˜6 ;×#HÑ#HÐPXÐ#HÓ#YÔZä)¨(°KÔ@à×=Ñ=¸hÈÐP[Ô\Øˆùòi#
ùò'
ùò!
ùò"
ùò#
ùò$
ùò"
ùò
ùò"+
ùô./øô\ ò 
Ü× Ñ Ð!dÐfgÔhÜ×ÑØØSØØô	
ð 	
ûð
úsÜ   ‚e  &e ÁAe ÂE&e Ç;e Ç?B1e Ê1e Ê6B e Ì7e Ì;5dÍ0A$e Ï5dÐ	A"e Ñ+5dÒ 1e Ó5dÔ1e Ô75d#Õ,1e Ö5d(×Ae Ø5d-ÙAe Ú 5d2ÛAe Ü5d7ÝAe Þ!'d<ßC e â	e âB e ä4e å	f å/e;å;f Úsystemr%   c           	   ƒ   ó"  K  — ddl m} ddlm}m} ddlm}	  || ||¬«      \  }
}}}|€|}|€|}d| ||dœi}	  ||«      } |	j                  | |¬	«      }|�S|j                  «       }|�A|j                  |«      r0|j                  |
|d|| ||¬
«      ƒ d{  –—† }|�|j                  s|S |xs g }|r|r	d|dœg|z   }t        j                   | ||¬«      } ||| |
d¬«      S 7 ŒK# t        $ r!}t        j                  d| |«       Y d}~Œ^d}~ww xY w­w)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%   )rS   )r#  rj  rù   Nrq  )r#  rù   rj  r«  )Úmodel_to_user%  ÚcontentsÚ
deploymentÚrequest_modelrD  rZ  zFProvider token counting failed for model=%s, falling back to local: %srZ  rH  )r#  r%  rD  Úlocal_tokenizer)rë  r_  Ú
model_usedÚtokenizer_type)Ú1litellm.litellm_core_utils.get_llm_provider_logicr`   Úlitellm.types.utilsrÍ   r%   Úlitellm.utilsrS   Úget_provider_model_infoÚget_token_counterÚshould_use_token_counting_apiÚcount_tokensrå  r–  rv   r“  r  ro   )r#  r%  rD  rZ  rù   rj  r`   rÍ   r%   rS   Úresolved_modelrc  r¿  Údynamic_api_baser^  Úllm_provider_enumÚprovider_model_infoÚtoken_counter_instancerO  r©  Úfallback_messagesÚlocal_counts                         r  Úacount_tokensrq  å"  sŒ  è ø€ õ2 SßDÝ3ñ 	ØØØô	ñØØØØð €Ø!ˆØÐØ#ˆð 	ØØØ ñ
ð,€JðqÙ#/Ð0CÓ#DÐØKÐ3×KÑKÐRWÐbsÔtÐàÐ*Ø,?×,QÑ,QÓ,SÐ"Ø%Ð1Ð6L×6jÑ6jØ#ô7ð '=×&IÑ&IØ!/Ø%Ø!Ø)Ø"'ØØ!ð 'Jó '÷ !�ð Ð%¨f¯lªlØ!�Mð
 !š BÐÙÑ#Ø&.¸6ÑBÐCÐFWÑWÐÜ ×.Ñ.ØØ"Øô€Kñ Ø ØØ!Ø(ô	ð ð1!ùô ò qÜ×ÑÐeÐglÐno×pÑpûðqüsA   ‚5D¸AC" ÂC ÂC" Â(8DÃ C" Ã"	DÃ+DÄDÄDÄDÚ_encoding_cachec                  óD   — dd l } | j                  t           j                  S )Nr   )r  r  r
  rŠ  )r  s    r  Ú_load_module_encodingrt  K#  s   € Ûà�;‰;”xÑ ×)Ñ)Ð)r	  c                  ó.   — t         €
t        «       a t         S )z*Get encoding, loading it lazily if needed.)rr  rt  r  r	  r  rŽ  rŽ  Q#  s   € ô Ðä/Ó1ˆÜÐr	  c                  ó   — ddl m}   | «       S )Nr   ©Ú_get_default_encoding)Úlitellm._lazy_importsrx  rw  s    r  Ú_load_default_encodingrz  Z#  s   € Ý;á Ó"Ð"r	  r¿  c                 óš   — | dk(  r2t        «       }ddl}||j                  t           j                  d<   |a|S t        dt        ›d| ›�«      ‚)z#Lazy import handler for main modulerŠ  r   Nzmodule z has no attribute )rz  r  r  r
  Ú__dict__rr  ÚAttributeError)r¿  Ú	_encodingr  s      r  Ú__getattr__r  `#  sT   € àˆzÒô 2Ó3ˆ	ãà5>ˆ�‰”HÑ×&Ñ& zÑ2à#ˆØÐÜ
˜7¤8 ,Ð.@ÀÀÐIÓ
JÐJr	  r  )FNrÞ  NFNNN)NNNNN)NNNNNNNNNNNNNNNNNNNNN)NN)NNN)NNNNNNrø   NNNNN)NNNNNNNNNNNNNNNN)r  NN)r  ztuple[object, ...]r_  zlist[object])NNNN(  r‡  r˜  rë  rp  r  r  Úrandomr  rÙ  rñ  Úcollections.abcr   r   r   r   r   rR  r   rI  r	   r
   r   r.  r   Ú	functoolsr   Útypesr   Útypingr   r   r   r   r   r   r   r   r   Úlitellm._loggingr   Úlitellm._uuidr   Úaiohttpr   ÚdotenvrÈ  r�  rJ  Úpydanticr   Útyping_extensionsr   r  r   re  r   r    r!   r"   r#   Ú*litellm.litellm_core_utils.litellm_loggingr$   rd  r%   Úlitellm.constantsr&   r'   Úlitellm.exceptionsr(   Ú"litellm.integrations.custom_loggerr)   Ú#litellm.litellm_core_utils.asyncifyr*   Ú,litellm.litellm_core_utils.audio_utils.utilsr+   r,   Ú7litellm.litellm_core_utils.chat_completion_agentic_loopr-   Ú-litellm.litellm_core_utils.completion_timeoutr.   Ú%litellm.litellm_core_utils.dd_tracingr/   Ú-litellm.litellm_core_utils.get_litellm_paramsr0   r1   Ú8litellm.litellm_core_utils.get_provider_specific_headersr2   Ú-litellm.litellm_core_utils.health_check_utilsr3   r4   r�  Ú)litellm.litellm_core_utils.mock_functionsr5   r6   Ú8litellm.litellm_core_utils.prompt_templates.common_utilsr7   Ú3litellm.litellm_core_utils.request_timeout_resolverr8   Úlitellm.llms.base_llmr9   r:   Ú)litellm.llms.base_llm.base_model_iteratorr;   Ú!litellm.llms.bedrock.common_utilsr<   Ú litellm.llms.cohere.common_utilsr=   Ú&litellm.llms.custom_httpx.http_handlerr>   r?   Ú-litellm.llms.openai.chat.gpt_5_transformationr@   Ú$litellm.llms.openai_like.json_loaderrA   Ú#litellm.llms.vertex_ai.common_utilsrB   rC   Úlitellm.realtime_api.mainrD   Úlitellm.secret_managers.mainrE   rF   Úlitellm.types.completionrG   rH   Úlitellm.types.routerrI   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   rp   rq   rr   rs   rt   Ú_loggingrv   Úcaching.cachingrw   rx   ry   Úlitellm_core_utils.core_helpersrz   Ú!litellm_core_utils.fallback_utilsr{   r|   Ú0litellm_core_utils.prompt_templates.common_utilsr}   r~   r   Ú+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�   Ú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.gdc.chat.transformationrž   Úllms.gemini.common_utilsrŸ   Úllms.groq.chat.handlerr    Úllms.heroku.chat.transformationr¡   Ú"llms.huggingface.embedding.handlerr¢   Ú!llms.lemonade.chat.transformationr£   Úllms.nlp_cloud.chat.handlerr¤   r  Ú,llms.nvidia_riva.audio_transcription.handlerr¥   Ú3llms.nvidia_riva.audio_transcription.transformationr¦   Úllms.oci.chat.transformationr§   Úllms.ollama.completionrØ  Úllms.oobabooga.chatr¨   Úllms.openai.completion.handlerr©   Ú$llms.openai.image_variations.handlerrª   Úllms.openai.openair«   Ú"llms.openai.transcriptions.handlerr¬   Úllms.openai_like.chat.handlerr­   Ú"llms.openai_like.embedding.handlerr®   Ú!llms.ovhcloud.chat.transformationr¯   Úllms.petals.completionrê  Úllms.predibase.chat.handlerr°   Úllms.replicate.chat.handlerr  Úllms.sagemaker.chat.handlerr±   Ú!llms.sagemaker.completion.handlerr²   Úllms.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Ð   ró  rÑ   Ú__annotations__rÒ   rÓ   Úopenai_image_variationsrÔ   rÕ   rÖ   r×   rØ   rÙ   r�  rÚ   rÛ   rÜ   rÝ   rÞ   rß   rà   rá   Úbedrock_image_generationÚbedrock_image_editrâ   rã   rä   rå   ræ   rç   rè   ré   rê   rë   rì   rí   rî   rï   r�  r×  rð   rñ   rò   ró   rô   rõ   r  r–  rœ  ÚMOCK_RESPONSE_TYPEr÷   r  r  r  ÚwraprŒ  r  r  r�  r  r  rA  rŸ  r�  r³  r¸  rÏ  rÓ  rÕ  r†  rÒ  r×  r  r  r  rA  r#  r+  r0  r3  r5  r:  r=  r@  rJ  rP  rX  r[  r]  rx  ry  r`  rw  r  rb  rƒ  r†  r�  r¥  r«  r¯  r±  r³  r¶  r¸  rÀ  rÅ  rÌ  rÑ  rÔ  rØ  rß  rä  rç  rù  rý  r  r  r  r  r!  r+  r1  r6  r<  r@  rE  rG  rO  rQ  rc  ro  r  r‹  r”  r˜  rž  r   r£  r½  rÀ  rÎ  rÒ  rÚ  rß  rá  rç  rì  rî  rñ  r÷  rü  r   r  ÚResponser  r  r  r#  r'  rÚ  rÝ  rà  rã  rå  ræ  r3  r5  rF  r¨  rf  rk  rn  rr  r}  rˆ  r‹  r�  r¬  r­  rú  rµ  r  r  r  r  r  r#  rY  rq  rr  ÚEncodingrt  rŽ  rz  r  r  r	  r  ú<module>rò     sI!  ðô Û Û Û Û Û 	Û Û 
Û Û ß QÕ QÝ ß HÑ HÝ Ý Ý "ß `× `Õ `å +Ý áÝ%ã Û Û Û Ý Ý &ã õ ÷õ ñ ÝBÝ6÷õ 6Ý ;Ý B÷õõ LÝ 8÷õ÷õ T÷õõ÷ Hõõ ?Ý <ß PÝ JÝ E÷õ =ß H÷õ 6÷ó ÷(÷ (÷ (÷ (÷ (÷ (÷ (÷ (÷ (÷ (ñ (õT %ß FÑ FÝ ;÷÷ñ ÷
÷ õ MÝ 8Ý Dß NÝ IÝ >Ý IÝ 1Ý 1Ý :Ý =Ý OÝ ;Ý =Ý FÝ 6Ý DÝ Bß >Ý Eß 8Ý 9Ý :Ý 6Ý =Ý DÝ AÝ Põ÷÷ 8Ð 7ß 5ß *Ð *ß @Ð @ß NÐ Nß 4Ð 4ß HÐ 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Ñ Ú!5Ó!7Ñ ˜Ô 7Ú%=Ó%?Ñ ˜UÔ ?Ù*FÓ*HÑ   %Ô HÚ6Ó8Ñ Ù1Ó3Ñ �uÔ 3Ú)>Ó)@Ñ  Ô @Ú1Ó3Ñ �EÔ 3Ù,Ó.Ñ �EÔ .Ù$;Ó$=Ñ ˜EÔ =Ù*FÓ*HÑ   %Ô HÙ,Ó.Ñ Ù#>Ó#@Ñ ˜5Ô @Ù 3Ó 5Ñ ˜Ô 5Ù$;Ó$=Ñ ˜EÔ =Ù/Ó1Ñ �5Ô 1Ú$;Ó$=Ñ ˜EÔ =Ù$;Ó$=Ñ ˜EÔ =Ù*<Ó*>Ñ   %Ô >Ù+Ó-Ñ �5Ô -Ù1Ó3Ñ Ù%Ó'Ñ Ú )£Ñ ˜Ô +Ú)Ó+Ñ �%Ô +Ú%>Ó%@Ñ ˜UÔ @Ú!6Ó!8Ñ ˜Ô 8Ú!6Ó!8Ñ ˜Ô 8Ú/DÓ/FÑ % uÔ FÚ&9Ó&;Ñ ˜eÔ ;Ú-FÓ-HÑ # UÔ HÙ+Ó-Ñ �EÔ -â#“~�ˆuÔ %Ú!3Ó!5Ñ ˜Ô 5Ú9Ó;Ñ �uÔ ;Ú%:Ó%<Ñ ˜UÔ <Ù8Ó:Ñ �eÔ :Ù*Ó,Ñ Ù0Ó2Ñ Ú#7Ó#9Ñ ˜5Ô 9Ù-Ó/Ñ �eÔ /Ù/Ó1Ñ �uÔ 1Ú)›OÑ �EÔ +Ú!3Ó!5Ñ ˜Ô 5Ù!3Ó!5Ñ ˜Ô 5á™9‘_¡tÑ+¨mÑ;Ð>QÑQÑ ÷7ò 7÷Oò O÷ò ÷ ò ð  €‡‚ƒØð Ø!Ø $Ø Ø $ØØØØ"&Ø	Ø!Ø(,Ø6:Ø>BØ-1Ø%)Ø&*Ø"Øà59ØØØ%)Ø'+Ø Ø#ØØnrØ9=Ø$(Ø#ØØ#'àØ"ØØ"Ø!%à.2Ø8<Ø8<à04à15ñe}
Ùð}
ñ ð}
ñ �d‰{ð	}
ñ
 ˜‘:ð}
ñ �T‰\ð}
ñ ˜‘ð}
ñ �4‰<ð}
ñ ˆT�zð}
ñ �4‰Kð}
ñ ˜4‘Kð}
ñ �d‘
ð}
ñ  ™:ð}
ñ Ñ+Ñ,¨tÑ3ð}
ñ  5°tÑ;ð!}
ñ" $ dÑ*ð#}
ñ$ ˜d‘lð%}
ñ& ˜t‘|ð'}
ñ( �t‘ð)}
ñ* �‰*ð+}
ñ. ™D ™OÑ+¨dÑ2ð/}
ñ0 �‰*ð1}
ñ2 �$‰;ð3}
ñ4 ‘t‘˜dÑ"ð5}
ñ6  ™ð7}
ñ8 �T‰kð9}
ñ: ˜‘*ð;}
ð> ÐcÑdÐgkÑkð?}
ð@ Ð.Ñ/°$Ñ6ðA}
ñB ˜T‘zðC}
ñD ˜‘*ðE}
ñF �$‰;ðG}
ñH ˜D‘jðI}
ñL �D‰jðM}
ñN �t‘ðO}
ñP �4‰ZðQ}
ñR �t‘ðS}
ñT ˜$‘;ðU}
ñX % tÑ+ðY}
ñZ /°Ñ5ð[}
ñ\ +/°©+ð]}
ð` ˜_Ñ-ða}
ñd $(¨$¡;ðe}
ðh Ð(Ñ(òi}
ó ó ñ}
ð@
Ø‘v™v }Ð7JÑ'JÐJÑKðàÐ(Ñ(ôð1¸7Á3ÉÀ;Ñ;Oð 1ÐTaô 1ð9À7É3ÑPVÈ;ÑCWð 9Ð\qô 9ó
ð( '+ò(
Ù™‘?ð(
áð(
ñ ˜t™ô(
ðV
Ù˜‘+ð
á‘S‰[˜5Ÿ=š=Ñ(¨4Ñ/ð
ñ ô
ð
Ù˜‘+ð
á‘S‰[˜5Ÿ=š=Ñ(¨4Ñ/ð
ñ ô
ð$¡©¡¨e¯mªmÑ ;ô $ð-©E±C©K¸%¿-º-Ñ,Gô -ð  ØØ/GØ#'Ø %ØØØ26ò[BÙð[Báð[Bñ �4‰Kð[Bñ ˆT�zð	[Bñ
 &¨Ñ,ð[Bñ ˜D‘[ð[Bñ ˜‘+ð[Bñ ‘S‰[˜5Ÿ=š=Ñ(¨4Ñ/ô[Bð| #>Ñ ˜%Ô =ð¡s¨T¡zð ±cô ð" 9=Ø37Ø:>Ø'+Øò_Ùð_áð_ñ /°Ñ5ð_ð �G™C¡˜KÑ(Ñ)¨DÑ0ð	_ñ
 ˜G¡C© KÑ0Ñ0°4Ñ7ð_ñ  ‘}ð_ñ �D‰jð_ñ ‰4‘ˆ9Ñô_ðD±c¸D±jð Éð ÑQUô ð©ð ±$ô ðÙ‘‰:˜Ñðá	‰$�Z�$Ñôô9 õ 9ð)Ñ$=ð )À'É#ÉsÈ(ÑBSô )ð 7©3±¨;Ñ#7ð ¸HÁUÉ3ÑPVÈ;ÑEWÑ<Xô ð˜W¡S©& [Ñ1ð °g¹cÁ6¸kÑ6Jô ð #òÙðáðñ �t‘ðñ 
ô	ð4¡dð ©s°T©zô ð!Ùð!áð!ñ ð!ñ �t‘ð	!ð
 
ô!ðHÐ6ð ¸7Á3ÉÀ;Ñ;OÐRVÑ;Vô ðÐ9ð ¸kÐL\Ñ>\Ð_cÑ>cô ðØ	#ðà×Ò˜&×1Ò1Ñ1°KÑ?ÐBRÑRÐUYÑYôðÐ!;ð ÀÇÂÐPV×PbÒPbÑ@bÐeiÑ@iô ðCÐ3ð CÐ8Qô CðL[Ð8ð [Ð=Vô [ð|0Ð6ð 0Ð;Tô 0ðfWÐ6ð WÐ;Tô WðtOØ	#ðOàôOðd6Ø	#ð6àô6ðr/Ð9ð /Ð>Wô /ðd/Ð4ð /Ð9Rô /ðd/Ð5ð /Ð:Sô /ðd0Ð1ð 0Ð6Oõ 0ðf;Ð2ð ;Ð7Põ ;ð|+Ø	#ð+àõ+ð\<Ð1ð <Ð6Oõ <ð~;Ð6ð ;Ð;Tõ ;ð|+Ð1ð +Ð6Oõ +ð\6Ø	#ð6àõ6ðr.Ð6ð .Ð;Tõ .ðb+Ð5ð +Ð:Sõ +ð\)Ð9ð )Ð>Wõ )ðXJØ	#ðJàõJðZ'Ð5ð 'Ð:Sõ 'ðT3Ð7ð 3Ð<Uõ 3ðl4Ø	#ð4àõ4ðn?Ð7ð ?Ð<Uõ ?ðD/Ð7ð /Ð<Uõ /ðd.Ð9ð .Ð>Wõ .ðb>Ð9ð >Ð>Wõ >ðBÐ6ð Ð;Tõ ðB!Ð9ð !Ð>Wõ !ðH(Ð9ð (Ð>Wõ (ðV Ð1ð  Ð6Oõ  ðF'Ð9ð 'Ð>Wõ 'ðTÐ7ð Ð<Uõ ðDEÐ8ð EÐ=Võ EðP"Ð7ð "Ð<Uõ "ðJJÐ8ð JÐ=Võ JðZKØ	#ðKàõKð\AØ	#ðAàõAðHvÐ7ð vÐ<Uõ vðr8Ð7ð 8Ð<Uõ 8ðv/Ø	#ð/àõ/ðd=Ø	#ð=àõ=ð@"Ø	#ð"àõ"ðJÐ7ð Ð<Uõ ð8yÐ5ð yÐ:Sõ yðx"Ð5ð "Ð:Sõ "ðJJØ	#ðJàõJðZ"Ð2ð "Ð7Põ "ðJ%Ð4ð %Ð9Rõ %ðP'Ð9ð 'Ð>Wõ 'ðT!Ð4ð !Ð9Rõ !ðH$Ð8ð $Ð=Võ $ðN%Ð4ð %Ð9Rõ %ðP2Ð7ð 2Ð<Uõ 2ðj Ð9ð  Ð>Wõ  ðF$Ð1ð $Ð6Oõ $ðN%Ð3ð %Ð8Qõ %ðP%Ð6ð %Ð;Tõ %ðP,Ð6ð ,Ð;Tõ ,ñ^/ 5§>¢>°DÑ#8ð /¹Sõ /ðBÐ4ð BÐ9Rõ BðJ<Ø	#ð<àõ<ð~.Ð7ð .Ð<Uõ .ðb.Ð6ð .Ð;Tõ .ðb €‡‚ƒØð Ø26Ø $ØØØØ"&Ø	Ø(,Ø!Ø6:Ø>BØ-1Ø%)Ø&*Ø"ØànrØ9=Ø59ØØØ%)Ø Ø#Ø'+Ø8<Ø8<ØØ!%Ø$(Ø#ØØ#'à!Ø $àØ"ØØ"à.2à04à15ñgx
Ùðx
ñ ðx
ñ ‘S‰[˜5Ÿ=š=Ñ(¨4Ñ/ð	x
ñ
 ˜‘ðx
ñ �4‰<ðx
ñ ˆT�zðx
ñ �4‰Kðx
ñ ˜4‘Kðx
ñ  ™:ðx
ñ �d‘
ðx
ñ Ñ+Ñ,¨tÑ3ðx
ñ 5°tÑ;ðx
ñ $ dÑ*ðx
ñ  ˜d‘lð!x
ñ" ˜t‘|ð#x
ñ$ �t‘ð%x
ñ& �‰*ð'x
ð* ÐcÑdÐgkÑkð+x
ð, Ð.Ñ/°$Ñ6ð-x
ñ. ™D ™OÑ+¨dÑ2ð/x
ñ0 �‰*ð1x
ñ2 �$‰;ð3x
ñ4 ‘t‘˜dÑ"ð5x
ñ6 �T‰kð7x
ñ8 ˜‘*ð9x
ñ:  ™ð;x
ñ< /°Ñ5ð=x
ñ> +/°©+ð?x
ñB ˜$‘;ðCx
ñD ˜T‘zðEx
ñF ˜‘*ðGx
ñH �$‰;ðIx
ñJ ˜D‘jðKx
ñN �d‰{ðOx
ñP ˜‘:ðQx
ñT �D‰jðUx
ñV �t‘ðWx
ñX �4‰ZðYx
ñZ �t‘ð[x
ñ^ % tÑ+ð_x
ðb ˜_Ñ-ðcx
ñf $(¨$¡;ðgx
ðj Ð(Ñ(ókx
ó ó ðx
ôv7ô8=ô47ô<=ð8 ð6
Ð):ó 6
ó ñ6
ðx 
ð à!Ø"&ÙàØ"ØØØØØØØò!ñ �d‘
ñ	ñ
 ˜4‘Zðñ ðñ �D‰jðñ �t‘ðñ �4‰Zññ �D‰jññ ðñ �‰*ñð$ ™‘ð%ð( ‰v‘vÐ0Ð0Ñ1ó)ó 
ñð2 
ð à!Ø"&ÙàØ"ØØØØØØØð!ð$ "'ô%ñ �d‘
ñ	ñ
 ˜4‘Zðñ ðñ �D‰jðñ �t‘ðñ �4‰Zññ �D‰jññ ðñ �‰*ñð$ ˜‘ð%ð( ó)ó 
ñð4 ð à!Ø"&ÙàØ"ØØØØØØØò!R
ñ �d‘
ñ	R
ñ
 ˜4‘ZðR
ñ ðR
ñ �D‰jðR
ñ �t‘ðR
ñ �4‰ZñR
ñ �D‰jñR
ñ ðR
ñ �‰*ðR
ð$ ˜¡6©6Ð3DÐ#DÑEÑEó%R
ó ñR
ðl ØÙÙØ Ñ.Ð1DÑDÐGbÑbð	dñðð ˜mÑ+Ð.AÑAÐD_Ñ_õð°)¹FÁFÈMÐ<YÑ2Zð Ð_lõ ð ðB
Ð/EÐHcÑ/có B
ó ñB
ðJ ð ØØØ&*Ø(,ØØ!ØàØ#'ØØ"&ØØ $ØØàØ"ØØ"à&*ó3f$Ù‘$‘s™T¡#©©S©	¡/Ñ2Ñ2Ñ3Ñ3ðf$á�‰:ñf$ñ �4‰Zñf$ñ �‰+ð	f$ñ
 ˜t‘|ðf$ñ ‘S™#�X‘ Ñ%ðf$ñ �D‰jðf$ñ �d‘
ðf$ñ ˆT�zðf$ñ Ø
ññf$ñ ‘‘S‘	‰/˜DÑ
 ðf$ñ �4‰Kðf$ñ ˜4‘Kñf$ñ �$‰Jðf$ñ  ˜‘ð!f$ñ" �4‰<ð#f$ñ$ �‰*ð%f$ñ( �D‰jð)f$ñ* �t‘ð+f$ñ, �4‰Zð-f$ñ. �t‘ð/f$ñ2 ˜t™ó3f$ó ñf$ñX©Sð ¸yÑKiÑ?iÐlpÑ?põ ð>	á	‰#‰vˆ+Ñ˜¡uÑ-Ñ-õ	ñ¡cð ¸	ÑDbÑ8bÐeiÑ8iõ ó4‘cð ¡#¨¡*ð ¹cÀD¹jð Ñ^võ ð2 ð ØØ&*ó	GÙðGá�‰:ðGñ �4‰ZðGñ ˜t™ð	Gñ óGó ñGðZ ð:
Ð-Bó :
ó ñ:
ðz ð
  ØØTXØGKØ"àØØØØ"Ø"Øò!@Ùñ@á
ñ@ñ �D‰jñ	@ñ
 �$‰Jð@ð ÑIÑJÈTÑQñ@ñ " 'Ñ*;Ñ"<Ñ=ÀÑDð@ñ �t‘ð@ñ �‰*ð@ñ �4‰Zð@ñ �D‰jð@ñ �t‘ñ@ñ �t‘ð@ð$ ˜Y¡v©vÐ7LÐ'LÑMÑMó%@ó ñ@ðF ð#
Ñ&@ó #
ó ñ#
ðL ð  $ØØØ"Ø#ØØ"Ø Ø,0Ø"&ØØ#ØØØ&*Øò%lÙñláñlñ ‘‰:˜Ñðlñ �4‰Zð	lñ
 �D‰jðlñ �t‘ñlñ ˜‘*ñlñ �4‰Zñlñ �t‘ñlñ �T‰kðlñ �U—]’]Ñ" TÑ)ðlñ ˜4‘Zñlñ �‰:ñlñ ˜‘*ñlñ  �D‰[ð!lñ" ˜t™ñ#lñ$ �D‰[ð%lñ(   )©F±FÑ<VÐ,VÑ"WÑWó)ló ñlðh ØØó	j
Ùñj
á
�‰*ñj
ñ �$‰Jñj
ñ �$‰;õ	j
ô^ô
ó3.±ð 3.ÁÈÁð 3.ÐXnõ 3.ñl8¨Mñ 8ÈÑQZÑH[ð 8Ñ`eÐhlÑ`lõ 8ö&ñ	¨]ð 	¹uÀt¹|õ 	ñ3°ñ 3ÈHÑU^ÑL_ð 3Ðdhõ 3ð !ØØØ'+óe
Ùðe
á�T‰kñe
ð
 ™)Ñ$ðe
ð Ð+Ñ+¨dÑ2õe
ðZ	 04Ø)-ØØØò_Ùð_á‘4™™V˜Ñ$Ñ%¨Ñ,ð_ñ ‘‘S˜#�X‘Ñ $Ñ&ñ_ñ �$‰Jð	_ñ
 �4‰Zð_ñ �D‰jð_ñ õ_ðF -1��×"Ò" TÑ)Õ 0ð*˜x×0Ò0õ *ð�x×(Ò(õ ð# × 1Ò 1õ #ñK‘cð K˜h×/Ò/ö Kr	  