Ë
    Ýªg@  ã                   ór   — d Z ddlmZmZmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZ ddlmZ  G d	„ d
e«      Zy)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                   óz  ‡ — e Zd ZU dZdZee   ed<   dZee   ed<   dZ	ee   ed<   dZ
ee   ed<   dZeeee   ef      ed<   dZee   ed<   	 	 	 	 	 	 ddee   dee   dee   dee   deeee   ef      dee   d	dfd
„Zeˆ fd„«       Zd	ee   fd„Zddee   d	efd„Zded	efd„Zdee   ded	ee   fˆ fd„Zˆ xZS )ÚDatabricksConfigzv
    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                 óˆ   — t        «       }|j                  «       D ]%  \  }}	|dk7  sŒ|	€Œt        | j                  ||	«       Œ' y )NÚself)ÚlocalsÚitemsÚsetattrÚ	__class__)
r   r   r   r   r   r   r   Úlocals_ÚkeyÚvalues
             ú`/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/databricks/chat/transformation.pyÚ__init__zDatabricksConfig.__init__   s;   € ô “(ˆØ!Ÿ-™-ž/‰JˆCØf‹} Ñ!2Ü˜Ÿ™¨¨UÕ3ñ *ó    c                 ó    •— t         ‰|   «       S ©N)ÚsuperÚ
get_config)Úclsr   s    €r    r&   zDatabricksConfig.get_config-   s   ø€ ä‰wÑ!Ó#Ð#r"   c                 ó>   — t        dddd¬«      t        dddd¬«      gS )	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_paramsz$DatabricksConfig.get_required_params1   s8   € ô Ø$Ø#Ø"<Ø%ô	ô Ø%Ø#Ø"=Ø,ô	ð
ð 	
r"   Úmodelc                 ó
   — g d¢S )N)Ústreamr   r   r   r   Úmax_completion_tokensr   Úresponse_format© )r   r1   s     r    Úget_supported_openai_paramsz,DatabricksConfig.get_supported_openai_paramsB   s   € ò	
ð 		
r"   Úoptional_paramsc                 ó(   — |j                  d«      yy)zN
        Databricks doesn't support 'response_format' while streaming
        r5   TF)Úget)r   r8   s     r    Ú_should_fake_streamz$DatabricksConfig._should_fake_streamN   s   € ð ×ÑÐ0Ó1Ð=Øàr"   Úmessagesc                 óè   •— g }t        |«      D ];  \  }}t        |t        «      r|j                  d¬«      }n|}|j	                  |«       Œ= t        |«      }t        |«      }t        ‰| !  ||¬«      S )zr
        Databricks does not support:
        - content in list format.
        - 'name' in user message.
        T)Úexclude_none)r<   r1   )	Ú	enumerateÚ
isinstancer   Ú
model_dumpÚappendr   r   r%   Ú_transform_messages)r   r<   r1   Únew_messagesÚidxÚmessageÚ_messager   s          €r    rC   z$DatabricksConfig._transform_messagesW   sy   ø€ ð ˆÜ% hÖ/‰LˆCÜ˜'¤9Ô-Ø"×-Ñ-¸4Ð-Ó@‘à"Ø×Ñ Õ)ð 0ô KÈ<ÓXˆÜ/°Ó=ˆÜ‰wÑ*°LÈÐ*ÓNÐNr"   )NNNNNNr$   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚintÚ__annotations__r   r   r   r   r   r   Ústrr   r!   Úclassmethodr&   r   r0   Úlistr7   ÚdictÚboolr;   r	   rC   Ú__classcell__)r   s   @r    r   r      sq  ø… ñð !%€J˜‘Ó$Ø!%€K˜#‘Ó%Ø€Eˆ8C‰=ÓØ€Eˆ8C‰=ÓØ,0€Dˆ(5˜˜c™ C˜Ñ(Ñ
)Ó0Ø€A€x}Óð %)Ø%)Ø#Ø#Ø04Øñ4à˜S‘Mð4ð ˜c‘]ð4ð ˜‰}ð	4ð
 ˜‰}ð4ð u˜T #™Y¨˜^Ñ,Ñ-ð4ð C‰=ð4ð 
ó4ð ó$ó ð$ð
 T¨-Ñ%8ó 
ñ"

°¸#±ð 

È$ó 

ð°4ð ¸Dó ðOØÐ-Ñ.ðOØ7:ðOà	ÐÑ	÷Oñ Or"   r   N)rK   Ú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   r6   r"   r    Ú<module>rZ      s6   ðñ÷ )Ñ (å ÷õ 7Ý -å CôUOÐ+õ UOr"   