o
    ưi                     @   s   d dl mZmZmZmZmZmZ d dl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 erCd d	lmZ eZneZG d
d deZdS )    )TYPE_CHECKINGAnyListLiteralOptionalUnion)HeadersResponse)DEFAULT_MAX_TOKENS)
BaseConfigBaseLLMException)AllMessageValues)ModelResponse   PredibaseError)Loggingc                       s  e Zd ZU dZdZee ed< dZee	d  ed< dZ
ee ed< dZee ed< dZeed	< eZ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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< 														d8dee dee d	ee d
ee dee dee dee de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fddZ de!de!ded ede!f
d!d"Z"		d9ded#e#d$e$d%e%d&e!d'ee& de!d(e!d)ed*ee d+ee de$fd,d-Z'ded'ee& de!d(e!d.e!de!fd/d0Z(d1ed2ed.e)e!e*f de+fd3d4Z,		d9d.e!ded'ee& de!d(e!d*ee d5ee de!fd6d7Z-  Z.S ):PredibaseConfigzN
    Reference:  https://docs.predibase.com/user-guide/inference/rest_api
    N
adapter_id)ZpbaseZhubZs3adapter_sourcebest_ofdecoder_input_detailsTdetailsmax_new_tokensrepetition_penaltyFreturn_full_textseedstoptemperaturetop_ktop_ptruncate	typical_p	watermark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"   r#   Zlocals_keyvalue r-   a/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/predibase/chat/transformation.py__init__.   s   
zPredibaseConfig.__init__c                    s
   t   S )N)super
get_config)clsr*   r-   r.   r1   D   s   
zPredibaseConfig.get_configmodelc                 C   s   g dS )N)streamr   max_completion_tokens
max_tokensr    r   nresponse_formatr-   )r%   r4   r-   r-   r.   get_supported_openai_paramsH   s   z+PredibaseConfig.get_supported_openai_paramsnon_default_paramsoptional_paramsdrop_paramsc                 C   s   |  D ]\\}}|dkr|dks|dkrd}||d< |dkr"||d< |dkr.||d< d|d	< |d
kr6||d
< |dkr>||d< |dksF|dkrP|dkrLd}||d< |dkrXd|d< |dkr`||d< q|S )Nr   g        r   g{Gz?r    r8   r   TZ	do_sampler5   r   r7   r6      r   Zechor   r9   )r(   )r%   r;   r<   r4   r=   paramr,   r-   r-   r.   map_openai_paramsT   s6   z!PredibaseConfig.map_openai_paramsraw_responsemodel_responselogging_objrequest_datamessageslitellm_paramsencodingapi_key	json_modec                 C      t dNzTPredibase transformation currently done in handler.py. Need to migrate to this file.NotImplementedError)r%   r4   rA   rB   rC   rD   rE   r<   rF   rG   rH   rI   r-   r-   r.   transform_response|   s   z"PredibaseConfig.transform_responseheadersc                 C   rJ   rK   rL   )r%   r4   rE   r<   rF   rO   r-   r-   r.   transform_request   s   z!PredibaseConfig.transform_requesterror_messagestatus_codec                 C   s   t |||dS )N)rR   messagerO   r   )r%   rQ   rR   rO   r-   r-   r.   get_error_class   s   zPredibaseConfig.get_error_classapi_basec           	      C   sB   |d u rt ddd|d}|d urt|tri ||}|S )NzMissing Predibase API Key - A call is being made to predibase but no key is set either in the environment variables or via paramszapplication/jsonz	Bearer {})zcontent-typeAuthorization)
ValueErrorformat
isinstancedict)	r%   rO   r4   rE   r<   rF   rH   rU   default_headersr-   r-   r.   validate_environment   s   
z$PredibaseConfig.validate_environment)NNNNNNNNNNNNNN)NN)/__name__
__module____qualname____doc__r   r   str__annotations__r   r   r   intr   boolr   r
   r   r   floatr   r   r   r   r   r   r    r!   r"   r#   r/   classmethodr1   r:   rZ   r@   r	   r   LiteLLMLoggingObjr   rN   rP   r   r   r   rT   r\   __classcell__r-   r-   r3   r.   r      s*  
 

	


3	




	r   N)typingr   r   r   r   r   r   Zhttpxr   r	   Zlitellm.constantsr
   Z)litellm.llms.base_llm.chat.transformationr   r   Zlitellm.types.llms.openair   Zlitellm.types.utilsr   Zcommon_utilsr   Z*litellm.litellm_core_utils.litellm_loggingr   Z_LiteLLMLoggingObjrg   r   r-   r-   r-   r.   <module>   s     