
    j9                     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
  G d de      Zy)    )OptionalTupleUnionN)MIN_NON_ZERO_TEMPERATURE)OpenAIGPTConfigget_secret_strc                       e Zd ZU dZedee   fd       Z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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ef      e
d<   	 	 	 	 	 	 	 	 	 	 	 	 	 ddee	   deeeef      dee   dee   d	ee	   d
ee	   dee	   deeeef      dee	   dee	   dee   dee   deeeef      ddfdZe fd       ZdefdZdededededef
dZdee   dee   de ee   ee   f   fdZ! xZ"S )DeepInfraConfigz
    Reference: https://deepinfra.com/docs/advanced/openai_api

    The class `DeepInfra` provides configuration for the DeepInfra's Chat Completions API interface. Below are the parameters:
    returnc                      y)N	deepinfra )selfs    /Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/litellm/llms/deepinfra/chat/transformation.pycustom_llm_providerz#DeepInfraConfig.custom_llm_provider   s        Nfrequency_penaltyfunction_call	functions
logit_bias
max_tokensnpresence_penaltystoptemperaturetop_presponse_formattoolstool_choicec                     t               j                         }|j                         D ]%  \  }}|dk7  s|t        | j                  ||       ' y )Nr   )localscopyitemssetattr	__class__)r   r   r   r   r   r   r   r   r   r   r   r   r   r    locals_keyvalues                    r   __init__zDeepInfraConfig.__init__!   sA      (--/!--/JCf}!2U3 *r   c                      t         |          S )N)super
get_config)clsr&   s    r   r-   zDeepInfraConfig.get_config6   s    w!##r   modelc                 r    g d}t        j                  || j                        r|j                  d       |S )N)streamr   r   r   r   r   max_completion_tokensr   r   r   r   r   r   r   r    )r/   r   reasoning_effort)litellmsupports_reasoningr   append)r   r/   supported_openai_paramss      r   get_supported_openai_paramsz+DeepInfraConfig.get_supported_openai_params:   s=    #
$ %% $ 8 8
 $**+=>&&r   non_default_paramsoptional_paramsdrop_paramsc                 h   | j                  |      }|j                         D ]  \  }}|dk(  r|dk(  r|dk(  rt        }|dk(  rU|dk7  s&|dk7  s,t        j                  du s|du rd }Et        j
                  j                  d	j                  |      d
      |dk(  r||d<   ||v s||||<    |S )N)r/   r   r   z"mistralai/Mistral-7B-Instruct-v0.1r    autononeTz{Deepinfra doesn't support tool_choice={}. To drop unsupported openai params from the call, set `litellm.drop_params = True`i  )messagestatus_coder2   r   )r8   r$   r   r4   r;   utilsUnsupportedParamsErrorformat)r   r9   r:   r/   r;   r7   paramr)   s           r   map_openai_paramsz!DeepInfraConfig.map_openai_paramsT   s     #'"B"B"B"O.446LE5&QJAA0%VO **d2kT6I $%mmBB %b  %i  %i %% ),	 C   1105-11$-2OE*3 74 r   api_baseapi_keyc                 N    |xs t        d      xs d}|xs t        d      }||fS )NDEEPINFRA_API_BASEz#https://api.deepinfra.com/v1/openaiDEEPINFRA_API_KEYr   )r   rF   rG   dynamic_api_keys       r   $_get_openai_compatible_provider_infoz4DeepInfraConfig._get_openai_compatible_provider_infox   s?    
  52354 	
 "H^4G%H((r   )NNNNNNNNNNNNN)#__name__
__module____qualname____doc__propertyr   strr   r   int__annotations__r   r   dictr   listr   r   r   r   r   r   r   r   r   r    r*   classmethodr-   r8   boolrE   r   rL   __classcell__)r&   s   @r   r   r   	   s   
 Xc]   (,x}+04M8E#t),-4 $Ix~$!%J% $J$Ax}&*hsm*'+D(5d#
$+!%K#%E8C=&*OXd^* E8D> .2K%T	*+2 ,048$(%)$(*.+/%)#*. $264#C=4  c4i 014 D>	4
 TN4 SM4 C=4 #3-4 uS$Y'(4 c]4 }4 "$4 ~4 eCI./4 
4* $ $' '4" " " 	"
 " 
"H
) 
)08
)	x}hsm+	,
)r   r   )typingr   r   r   r4   litellm.constantsr   +litellm.llms.openai.chat.gpt_transformationr   litellm.secret_managers.mainr	   r   r   r   r   <module>r^      s%    ) )  6 G 7y)o y)r   