o
    ưi-                     @   s`   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 deZdS )	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                       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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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edee deded de e!e!ee f fddZ"e	d#dee deded dee fd dZ"	d#dee dededeee e e!e!ee f f fd!dZ"  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                 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   Zlocals_keyvalue r!   R/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/sambanova/chat.py__init__"   s   
zSambanovaConfig.__init__c                    s
   t   S N)super
get_config)clsr   r!   r"   r&   4   s   
zSambanovaConfig.get_configmodelc                 C   sB   ddl m} g d}||ddr|d |d |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   Z	sambanova)Zcustom_llm_providerr   r   Zparallel_tool_calls)Zlitellm.utilsr*   append)r   r)   r*   paramsr!   r!   r"   get_supported_openai_params8   s   


z+SambanovaConfig.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 )z?
        map max_completion_tokens param to max_tokens
        )r)   r+   r   )r.   r   )r   r/   r0   r)   r1   Zsupported_openai_paramsparamr    r!   r!   r"   map_openai_paramsR   s   

z!SambanovaConfig.map_openai_paramsmessagesis_asyncTc                 C      d S r$   r!   r   r4   r)   r5   r!   r!   r"   _transform_messagesd   s   z#SambanovaConfig._transform_messagesFc                 C   r6   r$   r!   r7   r!   r!   r"   r8   j   s   c                    s"    fd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                      s
   t  S r$   r	   r!   r4   r!   r"   _async_transform|   s   z=SambanovaConfig._transform_messages.<locals>._async_transformr	   )r   r4   r)   r5   r:   r!   r9   r"   r8   s   s
   	)
NNNNNNNNNN)F)$__name__
__module____qualname____doc__r   r   int__annotations__r   r   r   r   r   strlistr   boolr   dictr   r   r   floatr#   classmethodr&   r.   r3   r   r   r   r   r   r   r8   __classcell__r!   r!   r(   r"   r      s   
 	


	r   N)r>   typingr   r   r   r   r   r   r   Z8litellm.litellm_core_utils.prompt_templates.common_utilsr
   Z+litellm.llms.openai.chat.gpt_transformationr   Zlitellm.types.llms.openair   r   r!   r!   r!   r"   <module>   s    $