
    g                         d Z ddlZddlmZmZ ddlmZmZmZm	Z	m
Z
mZmZ ddlZddlmZ ddlmZ er	ddlmZ eZneZ G d d	e      Z G d
 de      Zy)z*
Common base config for all LLM providers
    N)ABCabstractmethod)TYPE_CHECKINGAnyAsyncIteratorIteratorListOptionalUnion)AllMessageValues)ModelResponse)Loggingc                        e Zd Z	 	 	 ddededeeeej                  f      deej                     deej                     f
 fdZ xZS )BaseLLMExceptionstatus_codemessageheadersrequestresponsec                    || _         || _        || _        |r|| _        nt	        j
                  dd      | _        |r|| _        n&t	        j                  || j                        | _        t        | %  | j                         y )NPOSTzhttps://docs.litellm.ai/docs)methodurl)r   r   )
r   r   r   r   httpxRequestr   Responsesuper__init__)selfr   r   r   r   r   	__class__s         ^/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/base_llm/chat/transformation.pyr   zBaseLLMException.__init__   sv     '#"DL ==#ADL $DM!NN'DM 	LL	
    )NNN)__name__
__module____qualname__intstrr
   r   dictr   Headersr   r   r   __classcell__)r    s   @r!   r   r      sm    
 9=+/-1

 
 %emm 345	

 %--(
 5>>*
 
r"   r   c                   z   e Zd Zd Zed        Z	 d'dee   dee   dee   defdZ	d	e
j                  d
edefdZd	e
j                  dedefdZedefd       Zededefd       Zedededededef
d       Ze	 	 d(dededee   dedee   dee   defd       Z	 d'dedededee   def
dZededee   ded
ededefd       Ze	 	 d(dede
j6                  dedededee   ded
ededee   dee   defd        Zed!ed"ede ee
jB                  f   de"fd#       Z#	 d)d$e e$e   e%e   ef   d%edee   defd&Z&y)*
BaseConfigc                      y N r   s    r!   r   zBaseConfig.__init__4   s    r"   c                    | j                   j                         D ci c]`  \  }}|j                  d      sJ|j                  d      s9t        |t        j
                  t        j                  t        t        f      s|||b c}}S c c}}w )N___abc)	__dict__items
startswith
isinstancetypesFunctionTypeBuiltinFunctionTypeclassmethodstaticmethod)clskvs      r!   
get_configzBaseConfig.get_config7   s     **,
,1<<%LL(&&-- 	  qD,
 	
 
s   A%BNmodelstreamcustom_llm_providerreturnc                      y)zG
        Returns True if the model/provider should fake stream
        Fr/   )r   rA   rB   rC   s       r!   should_fake_streamzBaseConfig.should_fake_streamJ   s     r"   elitellm_paramsc                      y)z
        Returns True if the model/provider should retry the LLM API on UnprocessableEntityError

        Overriden by azure ai - where different models support different parameters
        Fr/   )r   rG   rH   s      r!   9should_retry_llm_api_inside_llm_translation_on_http_errorzDBaseConfig.should_retry_llm_api_inside_llm_translation_on_http_errorU   s     r"   request_datac                     |S )zH
        Transform the request data on UnprocessableEntityError
        r/   )r   rG   rK   s      r!   /transform_request_on_unprocessable_entity_errorz:BaseConfig.transform_request_on_unprocessable_entity_error_   s
     r"   c                      y)z
        Returns the max retry count for UnprocessableEntityError

        Used if `should_retry_llm_api_inside_llm_translation_on_http_error` is True
        r   r/   r0   s    r!   'max_retry_on_unprocessable_entity_errorz2BaseConfig.max_retry_on_unprocessable_entity_errorg   s     r"   c                      y r.   r/   )r   rA   s     r!   get_supported_openai_paramsz&BaseConfig.get_supported_openai_paramsp   s    r"   non_default_paramsoptional_paramsdrop_paramsc                      y r.   r/   )r   rR   rS   rA   rT   s        r!   map_openai_paramszBaseConfig.map_openai_paramst   s     	r"   r   messagesapi_keyapi_basec                      y r.   r/   )r   r   rA   rW   rS   rX   rY   s          r!   validate_environmentzBaseConfig.validate_environment~   s     	r"   c                     |S )z{
        OPTIONAL

        Get the complete url for the request

        Some providers need `model` in `api_base`
        r/   )r   rY   rA   rS   rB   s        r!   get_complete_urlzBaseConfig.get_complete_url   s	     r"   c                      y r.   r/   )r   rA   rW   rS   rH   r   s         r!   transform_requestzBaseConfig.transform_request   s     	r"   raw_responsemodel_responselogging_objencoding	json_modec                      y r.   r/   )r   rA   r`   ra   rb   rK   rW   rS   rH   rc   rX   rd   s               r!   transform_responsezBaseConfig.transform_response   s     	r"   error_messager   c                      y r.   r/   )r   rg   r   r   s       r!   get_error_classzBaseConfig.get_error_class   s     	r"   streaming_responsesync_streamc                      y r.   r/   )r   rj   rk   rd   s       r!   get_model_response_iteratorz&BaseConfig.get_model_response_iterator   s     	r"   r.   )NN)F)'r#   r$   r%   r   r;   r@   r
   r'   boolrF   r   HTTPStatusErrorr(   rJ   rM   propertyr&   rO   r   listrQ   rV   r	   r   r[   r]   r_   r   r   LiteLLMLoggingObjr   rf   r   r)   r   ri   r   r   rm   r/   r"   r!   r,   r,   3   sM    
 
, .2		}	 	 &c]		
 
	&&8<	&&6:	           	
  
   "&"&		 	 '(		
 	 #	 3-	 
	 	  "&  	
  
   '( 	
   
   "&$( nn &	
 '  '(    # D> 
    /2=B4CV=W	  %*	!(3-s1C]"RS  D>	
 
r"   r,   )__doc__r8   abcr   r   typingr   r   r   r   r	   r
   r   r   litellm.types.llms.openair   litellm.types.utilsr   *litellm.litellm_core_utils.litellm_loggingr   _LiteLLMLoggingObjrr   	Exceptionr   r,   r/   r"   r!   <module>r{      sP     # U U U  6 -X*
y 
:O Or"   