o
    ưi[                     @   sp   d Z ddlmZ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 ddlmZ G dd	 d	eZd
S )zV
Translates from OpenAI's `/v1/chat/completions` to DeepSeek's `/v1/chat/completions`
    )Any	CoroutineListLiteralOptionalTupleUnionoverload)3handle_messages_with_content_list_to_str_conversionget_secret_str)AllMessageValues   )OpenAIGPTConfigc                       sN  e Zd Zdedef fddZdededededef
 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 fddZdee dee deee ee f fddZ	ddee dee dedededee defddZ  ZS )DeepSeekChatConfigmodelreturnc                    s   t  |}|ddg |S )zF
        DeepSeek reasoner models support thinking parameter.
        thinkingreasoning_effort)superget_supported_openai_paramsextend)selfr   params	__class__ `/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/deepseek/chat/transformation.pyr      s   z.DeepSeekChatConfig.get_supported_openai_paramsnon_default_paramsoptional_paramsdrop_paramsc                    sz   t  ||||}|dd}|dd}|dur-t|tr+|ddkr+ddi|d< |S |dur;|dkr;ddi|d< |S )a2  
        Map OpenAI params to DeepSeek params.

        Handles `thinking` and `reasoning_effort` parameters for DeepSeek reasoner models.
        DeepSeek only supports `{"type": "enabled"}` - no budget_tokens like Anthropic.

        Reference: https://api-docs.deepseek.com/guides/thinking_mode
        r   Nr   typeenablednone)r   map_openai_paramspop
isinstancedictget)r   r   r   r   r    Zthinking_valuer   r   r   r   r$      s   z$DeepSeekChatConfig.map_openai_paramsmessagesis_asyncTc                 C      d S Nr   r   r)   r   r*   r   r   r   _transform_messagesA   s   z&DeepSeekChatConfig._transform_messagesFc                 C   r+   r,   r   r-   r   r   r   r.   G   s   c                    s0   t |}|rt j||ddS t j||ddS )zC
        DeepSeek does not support content in list format.
        T)r)   r   r*   F)r
   r   r.   r-   r   r   r   r.   P   s   api_baseapi_keyc                 C   s$   |pt dpd}|pt d}||fS )NZDEEPSEEK_API_BASEhttps://api.deepseek.com/betaZDEEPSEEK_API_KEYr   )r   r/   r0   Zdynamic_api_keyr   r   r   $_get_openai_compatible_provider_info`   s   z7DeepSeekChatConfig._get_openai_compatible_provider_infoNlitellm_paramsstreamc                 C   s    |sd}| ds| d}|S )zc
        If api_base is not provided, use the default DeepSeek /chat/completions endpoint.
        r1   z/chat/completions)endswith)r   r/   r0   r   r   r3   r4   r   r   r   get_complete_urlk   s
   

z#DeepSeekChatConfig.get_complete_url)Fr,   )__name__
__module____qualname__strlistr   r'   boolr$   r	   r   r   r   r   r   r.   r   r   r   r2   r6   __classcell__r   r   r   r   r      s    (	
r   N)__doc__typingr   r   r   r   r   r   r   r	   Z8litellm.litellm_core_utils.prompt_templates.common_utilsr
   Zlitellm.secret_managers.mainr   Zlitellm.types.llms.openair   Zopenai.chat.gpt_transformationr   r   r   r   r   r   <module>   s    (