
    AHj&                     f    d Z ddlmZmZ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  G d de      Zy)	z\
Sambanova Chat Completions API

this is OpenAI compatible - no translation needed / occurs
    )Any	CoroutineListLiteralOptionalUnionoverload3handle_messages_with_content_list_to_str_conversion)OpenAIGPTConfig)AllMessageValuesc                   n    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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   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Ze fd       ZdedefdZdededededef
dZedee   deded   de e!e!ee   f   fd       Z"e	 ddee   deded   dee   fd       Z"	 ddee   dededeee   e e!e!ee   f   f   fdZ" xZ#S )SambanovaConfigzb
    Reference: https://docs.sambanova.ai/cloud/api-reference/

    Below are the parameters:
    N
max_tokenstemperaturetop_ptop_kstopstreamstream_optionstool_choiceresponse_format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   locals_keyvalues                 S/root/tools/cai/cai_env/lib/python3.12/site-packages/litellm/llms/sambanova/chat.py__init__zSambanovaConfig.__init__"   sF     (--/!--/ 	4JCf}!2U3	4    c                      t         |          S N)super
get_config)clsr!   s    r%   r+   zSambanovaConfig.get_config4   s    w!##r'   modelc                     ddl m} g d} ||d      r3|j                  d       |j                  d       |j                  d       |S )	zF
        Get the supported OpenAI params for the given model

        r   )supports_function_calling)	max_completion_tokensr   r   r   r   r   r   r   r   	sambanova)custom_llm_providerr   r   parallel_tool_calls)litellm.utilsr/   append)r   r-   r/   paramss       r%   get_supported_openai_paramsz+SambanovaConfig.get_supported_openai_params8   sD    
 	<

 %ULMM'"MM-(MM/0r'   non_default_paramsoptional_paramsdrop_paramsc                     | j                  |      }|j                         D ]  \  }}|dk(  r||d<   ||v s|||<    |S )z?
        map max_completion_tokens param to max_tokens
        )r-   r0   r   )r7   r   )r   r8   r9   r-   r:   supported_openai_paramsparamr$   s           r%   map_openai_paramsz!SambanovaConfig.map_openai_paramsR   sb     #'"B"B"B"O.446 	/LE5//05-11).&		/
 r'   messagesis_asyncTc                      y r)    r   r?   r-   r@   s       r%   _transform_messagesz#SambanovaConfig._transform_messagesd   s     	r'   Fc                      y r)   rB   rC   s       r%   rD   z#SambanovaConfig._transform_messagesj   s     	r'   c                 :    fd}|r |       S t              S )z
        Transform messages to handle content list conversion.

        SambaNova API doesn't support content as a list - only string content.
        This converts content lists like [{"type": "text", "text": "..."}] to strings.
        c                  "   K   t               S wr)   r
   )r?   s   r%   _async_transformz=SambanovaConfig._transform_messages.<locals>._async_transform}   s     FxPPs   r
   )r   r?   r-   r@   rH   s    `   r%   rD   z#SambanovaConfig._transform_messagess   s&    	Q #%%FxPr'   )
NNNNNNNNNN)F)$__name__
__module____qualname____doc__r   r   int__annotations__r   r   r   r   r   strlistr   boolr   dictr   r   r   floatr&   classmethodr+   r7   r>   r	   r   r   r   r   r   rD   __classcell__)r!   s   @r%   r   r      s    !%J$!%K#%E8C=E8C='+D(5d#
$+!FHTN!%)NHTN)!%K#%&*OXd^* E8D>  %)*."!%)-'+!%#%) $4SM4 "$4 sm	4
 4 !4 e_4 4 }4 c]4 ~4 
4$ $ $  4   	
  
$ -.7:FMdm	3T"233	4 
 
 $)	'(  %.	
 
	  NS-.7:FJ	t$%yc4@P;Q1Q'RR	Sr'   r   N)rL   typingr   r   r   r   r   r   r	   8litellm.litellm_core_utils.prompt_templates.common_utilsr   +litellm.llms.openai.chat.gpt_transformationr   litellm.types.llms.openair   r   rB   r'   r%   <module>rZ      s2    L K K H 6so sr'   