
    h                     N    d dl mZmZmZ d dlmZ  G d de      Z G d d      Zy)    )LiteralOptionalTuple)BaseLLMExceptionc                       e Zd Zy)DatabricksExceptionN)__name__
__module____qualname__     `/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/databricks/common_utils.pyr   r      s    r   r   c                       e Zd Zdee   defdZdee   dee   dee   deeef   fdZdee   dee   de	d   d	ee
   dee   deeef   fd
Zy)DatabricksBaseapi_basereturnc                     |-	 ddl m}  |       }|xs |j                  j                   d}|S |S # t        $ r t        dd      w xY w)Nr   WorkspaceClient/serving-endpoints  z~Either set the DATABRICKS_API_BASE and DATABRICKS_API_KEY environment variables, or install the databricks-sdk Python library.status_codemessage)databricks.sdkr   confighostImportErrorr   )selfr   r   databricks_clients       r   _get_api_basezDatabricksBase._get_api_base   ss    :$3$5! T#4#;#;#@#@"AAS T      ) #H s	   +2 A	api_keyheadersc                     |xs ddi}	 ddl m}  |       }|xs |j                  j                   d}| |j                  j	                         }i ||}||fS # t
        $ r t        dd      w xY w)	NContent-Typeapplication/jsonr   r   r   r   a  If the Databricks base URL and API key are not set, the databricks-sdk Python library must be installed. Please install the databricks-sdk, set {LLM_PROVIDER}_API_BASE and {LLM_PROVIDER}_API_KEY environment variables, or provide the base URL and API key as arguments.r   )r   r   r   r   authenticater   r   )r   r"   r   r#   r   r    databricks_auth_headerss          r   _get_databricks_credentialsz*DatabricksBase._get_databricks_credentials!   s     An.@A	6 / 1W&7&>&>&C&C%DDV#WH &,,99; ( A4@@W$$ 		%H 		s   AA A1endpoint_type)chat_completions
embeddingscustom_endpointc                    |*|s(|du rt        dd      | j                  |||      \  }}|&|rt        dd      | j                  |||      \  }}|dj                  |      dd	}n$|"|j                  d
dj                  |      i       |d| |d
<   |dk(  r|durdj                  |      }||fS |dk(  r|durdj                  |      }||fS )NTr   zMissing API Key - A call is being made to LLM Provider but no key is set either in the environment variables ({LLM_PROVIDER}_API_KEY) or via paramsr   )r   r"   r#   zMissing API Base - A call is being made to LLM Provider but no api base is set either in the environment variables ({LLM_PROVIDER}_API_KEY) or via paramsz	Bearer {}r&   )Authorizationr%   r/   zBearer r+   z{}/chat/completionsr,   z{}/embeddings)r   r)   formatupdate)r   r"   r   r*   r-   r#   s         r   databricks_validate_environmentz.DatabricksBase.databricks_validate_environment>   sE    ?7$&) # r 
 %)$D$D%w %E %!' ) # x 
 %)$D$D%w %E %!' ?!,!3!3G!< 2G
 "1C1CG1LMN)0	':GO$..?$3N,33H=H    l*d/J&--h7H  r   N)r	   r
   r   r   strr!   dictr   r)   r   boolr2   r   r   r   r   r   
   s    hsm  ,}08HPQU	sDy	:.!#.! 3-.! ?@	.!
 "$.! $.! 
sDy	.!r   r   N)typingr   r   r   )litellm.llms.base_llm.chat.transformationr   r   r   r   r   r   <module>r8      s'    + + F	* 	b! b!r   