o
    ưi                     @   s\   d Z ddlmZmZmZ ddlZddlmZ ddlm	Z	 ddl
mZmZ G dd deZdS )	zg
MiniMax OpenAI transformation config - extends OpenAI chat config for MiniMax's OpenAI-compatible API
    )ListOptionalTupleN)OpenAIGPTConfigget_secret_str)AllMessageValuesChatCompletionToolParamc                       s   e Zd ZdZeddee dee fddZe	ddee de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	dd
edee deee  deee eee  f fddZd
edef fddZ  ZS )MinimaxChatConfiga*  
    MiniMax OpenAI configuration that extends OpenAIGPTConfig.
    MiniMax provides an OpenAI-compatible API at:
    - International: https://api.minimax.io/v1
    - China: https://api.minimaxi.com/v1
    
    Supported models:
    - MiniMax-M2.1
    - MiniMax-M2.1-lightning
    - MiniMax-M2
    Napi_keyreturnc                 C   s   | pt dptjS )zE
        Get MiniMax API key from environment or parameters.
        ZMINIMAX_API_KEY)r   litellmr   )r    r   _/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/minimax/chat/transformation.pyget_api_key   s
   zMinimaxChatConfig.get_api_keyapi_basec                 C   s   | pt dpdS )z
        Get MiniMax API base URL.
        Defaults to international endpoint: https://api.minimax.io/v1
        For China, set to: https://api.minimaxi.com/v1
        ZMINIMAX_API_BASEzhttps://api.minimax.io/v1r   r   r   r   r   get_api_base$   s
   
zMinimaxChatConfig.get_api_basemodeloptional_paramslitellm_paramsstreamc                 C   sL   | j |d}|dr|S |dr| dS |dr!| dS | dS )zt
        Get the complete URL for MiniMax OpenAI API.
        Override to ensure we use MiniMax's endpoint.
        r   z/chat/completionsz/v1/zv1/chat/completionsz/v1/chat/completions)r   endswith)selfr   r   r   r   r   r   base_urlr   r   r   get_complete_url3   s   





z"MinimaxChatConfig.get_complete_urlmessagestoolsc                 C   s   ||fS )zz
        Override to preserve cache_control for MiniMax.
        MiniMax supports cache_control - don't strip it.
        r   )r   r   r   r   r   r   r   1remove_cache_control_flag_from_messages_and_toolsM   s   zCMinimaxChatConfig.remove_cache_control_flag_from_messages_and_toolsc                    sZ   t  j|d}dg}ztj|ddr|d W || S W || S  ty,   Y || S w )z
        Get supported OpenAI parameters for MiniMax.
        Adds reasoning_split and thinking to the list of supported params.
        )r   Zreasoning_splitZminimax)r   Zcustom_llm_providerZthinking)superget_supported_openai_paramsr   Zsupports_reasoningappend	Exception)r   r   Zbase_paramsZadditional_params	__class__r   r   r!   Z   s   z-MinimaxChatConfig.get_supported_openai_params)N)__name__
__module____qualname____doc__staticmethodr   strr   r   dictboolr   r   r   r	   r   r   listr!   __classcell__r   r   r$   r   r
      sL    



r
   )r)   typingr   r   r   r   Z+litellm.llms.openai.chat.gpt_transformationr   Zlitellm.secret_managers.mainr   Zlitellm.types.llms.openair   r	   r
   r   r   r   r   <module>   s    