o
    ưi7                     @   s,   d dl mZ d dlmZ G dd deZdS )    )Optional)OpenAIGPTConfigc                       s  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d< 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d< dZee	 ed< 													d%dee dee	 dee dee dee dee dee dee d	ee d
ee dee dee dee	 ddfddZe fddZdedefddZde	de	dedede	f
ddZdededefdd Zededefd!d"Zededefd#d$Z   Z!S )&BasetenConfigzS
    Reference: https://inference.baseten.co/v1

    Below are the parameters:
    N
max_tokensresponse_formatseedstreamtop_ptool_choicetoolsuserpresence_penaltyfrequency_penaltystream_optionsstoptemperaturereturnc                 C   s>   t   }| D ]\}}|dkr|d urt| j|| q	d S )Nself)localscopyitemssetattr	__class__)r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   Zlocals_keyvalue r   P/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/baseten/chat.py__init__   s   
zBasetenConfig.__init__c                    s
   t   S )N)super
get_config)clsr   r   r   r   -   s   
zBasetenConfig.get_configmodelc                 C   s   g dS )zE
        Get the supported OpenAI params for the given model
        )r   max_completion_tokensr   r   r   r   r   r	   r
   r   r   r   r   r   r   )r   r"   r   r   r   get_supported_openai_params1   s   z)BasetenConfig.get_supported_openai_paramsnon_default_paramsoptional_paramsdrop_paramsc                 C   sD   | j |d}| D ]\}}|dkr||d< q
||v r|||< q
|S )N)r"   r#   r   )r$   r   )r   r%   r&   r"   r'   Zsupported_openai_paramsparamr   r   r   r   map_openai_paramsF   s   
zBasetenConfig.map_openai_paramsapi_baseapi_keyc                 C   s   d}|pd}||fS )zE
        Get the OpenAI compatible provider info for Baseten
        https://inference.baseten.co/v1ZBASETEN_API_KEYr   )r   r*   r+   Zdefault_api_baseZdefault_api_keyr   r   r   $_get_openai_compatible_provider_infoU   s   z2BasetenConfig._get_openai_compatible_provider_infoc                 C   s$   |  dd}ddl}t|d|S )zZ
        Check if the model is a dedicated deployment (8-digit alphanumeric code)
        baseten/ r   Nz^[a-zA-Z0-9]{8}$)replacereboolmatch)r"   model_idr1   r   r   r   is_dedicated_deployment_   s   z%BasetenConfig.is_dedicated_deploymentc                 C   s&   t | r| dd}d| dS dS )zF
        Get the appropriate API base URL for the given model
        r.   r/   zhttps://model-z/.api.baseten.co/environments/production/sync/v1r,   )r   r5   r0   )r"   r4   r   r   r   get_api_base_for_modelk   s   
z$BasetenConfig.get_api_base_for_model)NNNNNNNNNNNNN)"__name__
__module____qualname____doc__r   r   int__annotations__r   dictr   r   r2   r	   r
   strr   listr   r   r   r   floatr   classmethodr   r$   r)   tupler-   staticmethodr5   r6   __classcell__r   r   r!   r   r      s   
 	



r   N)typingr   Z+litellm.llms.openai.chat.gpt_transformationr   r   r   r   r   r   <module>   s    