o
    ưiS                     @   s   d 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 ddlmZ ddlmZ ddlmZ er=dd	lmZ eZneZG d
d de	eZdS )a  
Databricks Responses API configuration.

Inherits from OpenAIResponsesAPIConfig since Databricks' Responses API
is compatible with OpenAI's for GPT models.

Reference: https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/api-reference
    N)TYPE_CHECKINGAnyDictOptionalUnion)DatabricksBase)OpenAIResponsesAPIConfig)ResponseInputParam)GenericLiteLLMParams)LlmProviders)Loggingc                       s   e Zd ZdZedefddZdedede	e
 defdd	Zd
e	e dedefddZdedeeef dede
dedef fddZdefddZ  ZS )DatabricksResponsesAPIConfiga  
    Configuration for Databricks Responses API.

    Inherits from OpenAIResponsesAPIConfig since Databricks' Responses API
    is largely compatible with OpenAI's for GPT models.

    Note: The Responses API on Databricks is only compatible with OpenAI GPT models.
    returnc                 C   s   t jS )N)r   Z
DATABRICKSself r   g/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/databricks/responses/transformation.pycustom_llm_provider%   s   z0DatabricksResponsesAPIConfig.custom_llm_providerheadersmodellitellm_paramsc                 C   sN   |pt  }|jptd}|jptd}| j||dd|d\}}d|d< |S )NZDATABRICKS_API_KEYDATABRICKS_API_BASEZchat_completionsF)api_keyapi_baseZendpoint_typeZcustom_endpointr   zapplication/jsonzContent-Type)r
   r   osgetenvr   Zdatabricks_validate_environment)r   r   r   r   r   r   _r   r   r   validate_environment)   s   

z1DatabricksResponsesAPIConfig.validate_environmentr   c                 C   s,   |pt d}| |}|d}| dS )Nr   /z
/responses)r   r   Z_get_api_baserstrip)r   r   r   r   r   r   get_complete_urlB   s   


z-DatabricksResponsesAPIConfig.get_complete_urlinput$response_api_optional_request_paramsc                    s0   | dr|tdd }t j|||||dS )z
        Transform request for Databricks Responses API.

        Strips the 'databricks/' prefix from model name if present,
        then delegates to OpenAI's transformation.
        zdatabricks/N)r   r!   r"   r   r   )
startswithlensupertransform_responses_api_request)r   r   r!   r"   r   r   	__class__r   r   r&   L   s   
z<DatabricksResponsesAPIConfig.transform_responses_api_requestc                 C   s   dS )z>Databricks does not support native WebSocket for Responses APIFr   r   r   r   r   supports_native_websocketf   s   z6DatabricksResponsesAPIConfig.supports_native_websocket)__name__
__module____qualname____doc__propertyr   r   dictstrr   r
   r   r    r   r	   r   r&   boolr)   __classcell__r   r   r'   r   r      sD    	



r   )r-   r   typingr   r   r   r   r   Z$litellm.llms.databricks.common_utilsr   Z,litellm.llms.openai.responses.transformationr   Zlitellm.types.llms.openair	   Zlitellm.types.routerr
   Zlitellm.types.utilsr   Z*litellm.litellm_core_utils.litellm_loggingr   Z_LiteLLMLoggingObjZLiteLLMLoggingObjr   r   r   r   r   <module>   s    	