
    ^h@                     r    S r SSKJrJrJr  SSKJr  SSKJrJ	r	  SSK
Jr  SSKJr  SSKJr   " S	 S
\5      rg)zT
Translates from OpenAI's `/v1/chat/completions` to Databricks' `/chat/completions`
    )ListOptionalUnion)	BaseModel)3handle_messages_with_content_list_to_str_conversionstrip_name_from_messages)AllMessageValuesProviderField   )OpenAILikeChatConfigc                     ^  \ rS rSr% SrSr\\   \S'   Sr	\\   \S'   Sr
\\   \S'   Sr\\   \S'   Sr\\\\   \4      \S'   Sr\\   \S	'         SS\\   S\\   S\\   S\\   S\\\\   \4      S	\\   S
S4S jjr\U 4S j5       rS
\\   4S jrSS\\   S
\4S jjrS\S
\4S jrS\\   S\S
\\   4U 4S jjrSrU =r$ )DatabricksConfig   zn
Reference: https://docs.databricks.com/en/machine-learning/foundation-models/api-reference.html#chat-request
N
max_tokenstemperaturetop_ptop_kstopnreturnc                     [        5       nUR                  5        H(  u  pUS:w  d  M  U	c  M  [        U R                  X5        M*     g )Nself)localsitemssetattr	__class__)
r   r   r   r   r   r   r   locals_keyvalues
             e/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/databricks/chat/transformation.py__init__DatabricksConfig.__init__   s7     (!--/JCf}!23 *    c                     > [         TU ]  5       $ N)super
get_config)clsr   s    r!   r(   DatabricksConfig.get_config-   s    w!##r$   c                 2    [        SSSSS9[        SSSSS9/$ )	zDFor a given provider, return it's required fields with a descriptionapi_keystringzYour Databricks API Key.zdapi...)
field_name
field_typefield_descriptionfield_valueapi_basezYour Databricks API Base.zhttps://adb-..r
   )r   s    r!   get_required_params$DatabricksConfig.get_required_params1   s8     $#"<%	 %#"=,	
 	
r$   modelc                 
    / SQ$ )N)streamr   r   r   r   max_completion_tokensr   response_format )r   r5   s     r!   get_supported_openai_params,DatabricksConfig.get_supported_openai_paramsB   s    	
 		
r$   optional_paramsc                 *    UR                  S5      b  gg)z>
Databricks doesn't support 'response_format' while streaming
r9   TF)get)r   r=   s     r!   _should_fake_stream$DatabricksConfig._should_fake_streamN   s     01=r$   messagesc                    > / n[        U5       H=  u  pE[        U[        5      (       a  UR                  SS9nOUnUR	                  U5        M?     [        U5      n[        U5      n[        TU ]!  X2S9$ )zR
Databricks does not support:
- content in list format.
- 'name' in user message.
T)exclude_none)rB   r5   )		enumerate
isinstancer   
model_dumpappendr   r   r'   _transform_messages)r   rB   r5   new_messagesidxmessage_messager   s          r!   rI   $DatabricksConfig._transform_messagesW   sx     %h/LC'9--"--4-@") 0 K<X/=w*L*NNr$   r:   )NNNNNNr&   )__name__
__module____qualname____firstlineno____doc__r   r   int__annotations__r   r   r   r   r   r   strr   r"   classmethodr(   r   r3   listr;   dictboolr@   r	   rI   __static_attributes____classcell__)r   s   @r!   r   r      sq    !%J$!%K#%E8C=E8C=,0D(5cC(
)0Ax} %)%)##044SM4 c]4 }	4
 }4 uT#Y^,-4 C=4 
4 $ $
T-%8 
"

# 

$ 

4 D O-.O7:O		O Or$   r   N)rS   typingr   r   r   pydanticr   8litellm.litellm_core_utils.prompt_templates.common_utilsr   r   litellm.types.llms.openair	   litellm.types.utilsr   openai_like.chat.transformationr   r   r:   r$   r!   <module>rc      s6    ) (  7 - CUO+ UOr$   