
    hi                     N    d dl mZmZmZ d dlZd dlmZ d dlmZ  G d de      Z	y)    )OptionalTupleUnionN)OpenAIGPTConfigget_secret_strc                       e Zd ZU dZdZee   ed<   dZee	e
ef      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
ef      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	e
ef      dee   dee   dee   dee   d	ee   d
ee	e
ef      dee   dee   dee   dee
   dee   ddfdZe fd       Zde
fdZdedede
dedef
dZdee
   dee
   deee
   ee
   f   fdZ	 	 d!dede
dedededee
   dee
   defdZ  xZ!S )"FeatherlessAIConfigz
    Reference: https://featherless.ai/docs/completions

    The class `FeatherlessAI` provides configuration for the FeatherlessAI's Chat Completions API interface. Below are the parameters:
    Nfrequency_penaltyfunction_call	functions
logit_bias
max_tokensnpresence_penaltystoptemperaturetop_presponse_formattool_choicetoolsreturnc                     t               j                         }|j                         D ]%  \  }}|dk7  s|t        | j                  ||       ' y )Nself)localscopyitemssetattr	__class__)r   r   r   r   r   r   r   r   r   r   r   r   r   r   locals_keyvalues                    k/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/featherless_ai/chat/transformation.py__init__zFeatherlessAIConfig.__init__   sA      (--/!--/JCf}!2U3 *    c                      t         |          S )N)super
get_config)clsr   s    r#   r(   zFeatherlessAIConfig.get_config2   s    w!##r%   modelc                 
    g dS )N)streamr   r   r   r   r   max_completion_tokensr   r   r   r   r    )r   r*   s     r#   get_supported_openai_paramsz/FeatherlessAIConfig.get_supported_openai_params6   s    
 	
r%   non_default_paramsoptional_paramsdrop_paramsc                 N   | j                  |      }|j                         D ]  \  }}|dk(  s|dk(  rX|dk(  r|dk(  s|dk(  r|||<   %t        j                  du s|du rd }>d| d| d	}t        j                  j                  |d
      |dk(  r||d<   s||v sx|{|||<    |S )N)r*   r   r   autononeTzFeatherless AI doesn't support =zS. To drop unsupported openai params from the call, set `litellm.drop_params = True`i  )messagestatus_coder-   r   )r/   r   litellmr2   utilsUnsupportedParamsError)	r   r0   r1   r*   r2   supported_openai_paramsparamr"   error_messages	            r#   map_openai_paramsz%FeatherlessAIConfig.map_openai_paramsF   s     #'"B"B"B"O.446LE5%')9M)u%6/-2OE* **d2kT6I $*I%PQRWQX  Yl  )m%mmBB$1(+ C   1105-11$-2OE*' 7( r%   api_baseapi_keyc                 N    |xs t        d      xs d}|xs t        d      }||fS )NFEATHERLESS_API_BASEzhttps://api.featherless.ai/v1FEATHERLESS_API_KEYr   )r   r@   rA   dynamic_api_keys       r#   $_get_openai_compatible_provider_infoz8FeatherlessAIConfig._get_openai_compatible_provider_infod   s?    
  /45/. 	
 "J^4I%J((r%   headersmessageslitellm_paramsc                 :    |st        d      d| |d<   d|d<   |S )NzMissing Featherless AI API KeyzBearer Authorizationzapplication/jsonzContent-Type)
ValueError)r   rG   r*   rH   r1   rI   rA   r@   s           r#   validate_environmentz(FeatherlessAIConfig.validate_environmentp   s3     =>>%,WI#6 "4r%   )NNNNNNNNNNNNN)NN)"__name__
__module____qualname____doc__r   r   int__annotations__r   r   strdictr   listr   r   r   r   r   r   r   r   r   r   r$   classmethodr(   r/   boolr?   r   rF   rM   __classcell__)r   s   @r#   r
   r
      s    (,x}+04M8E#t),-4 $Ix~$!%J% $J$Ax}&*hsm*'+D(5d#
$+!%K#%E8C=&*OXd^*!%K#% E8D>  ,048$(%)$(*.+/%)#*.%) $4#C=4  c4i 014 D>	4
 TN4 SM4 C=4 #3-4 uS$Y'(4 c]4 }4 "$4 c]4 ~4 
4* $ $
 
    	
  
<
) 
)08
)	x}hsm+	,
)& "&"&  	
   # 3- 
r%   r
   )
typingr   r   r   r9   +litellm.llms.openai.chat.gpt_transformationr   litellm.secret_managers.mainr   r
   r.   r%   r#   <module>r]      s"    ) )  G 7x/ xr%   