
    hB
                     v    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	e      Zy
)zW
Translates from OpenAI's `/v1/chat/completions` to DashScope'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                   D    e Z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 fd	Z
d
ee   dee   deee   ee   f   fdZ	 dd
ee   dee   dedededee   defdZ xZS )DashScopeChatConfigmessagesmodelis_asyncTreturnc                      y N selfr   r   r   s       f/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/dashscope/chat/transformation.py_transform_messagesz'DashScopeChatConfig._transform_messages   s     	    Fc                      y r   r   r   s       r   r   z'DashScopeChatConfig._transform_messages   s     	r   c                 f    t        |      }|rt        | 	  ||d      S t        | 	  ||d      S )zD
        DashScope does not support content in list format.
        T)r   r   r   F)r   superr   )r   r   r   r   	__class__s       r   r   z'DashScopeChatConfig._transform_messages    sQ     GxP7.! /   7.! /  r   api_baseapi_keyc                 N    |xs t        d      xs d}|xs t        d      }||fS )NDASHSCOPE_API_BASEz6https://dashscope-intl.aliyuncs.com/compatible-mode/v1DASHSCOPE_API_KEYr   )r   r#   r$   dynamic_api_keys       r   $_get_openai_compatible_provider_infoz8DashScopeChatConfig._get_openai_compatible_provider_info0   sA      H23HG 	
 "H^4G%H((r   optional_paramslitellm_paramsstreamc                 :    |sd}|j                  d      s| d}|S )zd
        If api_base is not provided, use the default DashScope /chat/completions endpoint.
        z1https://dashscope.aliyuncs.com/compatible-mode/v1z/chat/completions)endswith)r   r#   r$   r   r*   r+   r,   s          r   get_complete_urlz$DashScopeChatConfig.get_complete_url;   s-     JH  !45"#45Hr   )Fr   )__name__
__module____qualname__r
   r   r   strr   r   r   r   boolr	   r   r   r)   dictr/   __classcell__)r"   s   @r   r   r      s   -.7:FMdm	3T"233	4 
 
 $)	'(  %.	
 
	  NS-.7:FJ	t$%yc4@P;Q1Q'RR	S 	) 	)08	)	x}hsm+	,	)$ "&3- # 	
    
r   r   N)__doc__typingr   r   r   r   r   r   r	   r
   8litellm.litellm_core_utils.prompt_templates.common_utilsr   litellm.secret_managers.mainr   litellm.types.llms.openair   openai.chat.gpt_transformationr   r   r   r   r   <module>r=      s2    S R R 8 6 ==/ =r   