
    ^hj.                         S SK JrJrJrJrJr  S SKJrJr  S SK	r	S SK
Jr  S SKJr  S SKJr  SSKJr  SS	KJrJrJrJrJr  S
SKJr  SSKJr  \(       a	  S SKJr  \rO\r " S S\5      r g)    )TYPE_CHECKINGAnyListOptionalUnion)HeadersResponseN convert_to_azure_openai_messages)BaseLLMException)ModelResponse   )UnsupportedParamsError)AllMessageValues%ChatCompletionToolChoiceFunctionParam#ChatCompletionToolChoiceObjectParamChatCompletionToolParam$ChatCompletionToolParamFunctionChunk   )
BaseConfig   AzureOpenAIError)Loggingc                   0  ^  \ rS rSrSr          S-S\\   S\\\\	4      S\\
   S\\	   S\\   S	\\   S
\\   S\\\\
4      S\\   S\\   SS4S jjr\U 4S j5       rS\S\\   4S jr S.S\	S\	S\S\S\S\	4S jjrS\S\\   S\	S\	S\	S\	4S jr  S/S\S\S\S\S\	S\\   S\	S\	S \S!\\   S"\\   S\4S# jjrS\	4S$ jrS\	S\	4S% jrS\\   4S& jrS\\   4S' jrS(\S)\S\\	\4   S\4S* jr S0S\	S\S\\   S\	S!\\   S\	4S+ jjr S,r!U =r"$ )1AzureOpenAIConfig   a  
Reference: https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#chat-completions

The class `AzureOpenAIConfig` provides configuration for the OpenAI's Chat API interface, for use with Azure. Below are the parameters::

- `frequency_penalty` (number or null): Defaults to 0. Allows a value between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, thereby minimizing repetition.

- `function_call` (string or object): This optional parameter controls how the model calls functions.

- `functions` (array): An optional parameter. It is a list of functions for which the model may generate JSON inputs.

- `logit_bias` (map): This optional parameter modifies the likelihood of specified tokens appearing in the completion.

- `max_tokens` (integer or null): This optional parameter helps to set the maximum number of tokens to generate in the chat completion.

- `n` (integer or null): This optional parameter helps to set how many chat completion choices to generate for each input message.

- `presence_penalty` (number or null): Defaults to 0. It penalizes new tokens based on if they appear in the text so far, hence increasing the model's likelihood to talk about new topics.

- `stop` (string / array / null): Specifies up to 4 sequences where the API will stop generating further tokens.

- `temperature` (number or null): Defines the sampling temperature to use, varying between 0 and 2.

- `top_p` (number or null): An alternative to sampling with temperature, used for nucleus sampling.
Nfrequency_penaltyfunction_call	functions
logit_bias
max_tokensnpresence_penaltystoptemperaturetop_preturnc                     [        5       R                  5       nUR                  5        H(  u  pUS:w  d  M  Uc  M  [        U R                  X5        M*     g )Nself)localscopyitemssetattr	__class__)r*   r   r   r    r!   r"   r#   r$   r%   r&   r'   locals_keyvalues                 d/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/azure/chat/gpt_transformation.py__init__AzureOpenAIConfig.__init__:   s=     (--/!--/JCf}!23 *    c                     > [         TU ]  5       $ N)super
get_config)clsr/   s    r3   r:   AzureOpenAIConfig.get_configL   s    w!##r6   modelc                 
    / SQ$ )N)r&   r#   streamstream_optionsr%   r"   max_completion_tokenstoolstool_choicer$   r   r!   userr   r    rB   rC   r'   logprobstop_logprobsresponse_formatseedextra_headersparallel_tool_calls )r*   r=   s     r3   get_supported_openai_params-AzureOpenAIConfig.get_supported_openai_paramsP   s    
 	
r6   non_default_paramsoptional_paramsdrop_paramsapi_versionc                    U R                  U5      nUR                  S5      nUS   nUS   n	US   n
UR                  5        GHE  u  pUS:X  a   US:  d  US:X  a  U	S:  d  US:X  a7  U	S:X  a1  U
S:  a+  [        R                  S	L d  Ub  US	L a  MN  [        S
SU S3S9eUS:X  a=  US:X  a7  U	S::  a1  [        R                  S	L d  Ub  US	L a  M  [        S
SU SU SU S3S9eXS'   M  US:X  a  [        U[        5      (       ay  S nSnSU;   a  US   nSnOSU;   a  US   S   nUS   S   n UbF  US::  a  U	S:  d  SU;  a4  [        S[        US9S 9n[        S[        XS!9S 9nU/US"'   XS'   S	US#'   GM2  XS'   GM9  X;   d  GMA  XU'   GMH     U$ )$N-r      r   rC   20231201Ti  z6Azure does not support 'tool_choice', for api_version=z. Bump your API version to '2023-12-01-preview' or later. This parameter requires 'api_version="2023-12-01-preview"' or later. Azure API Reference: https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#chat-completions)status_codemessagerequired202405zAzure does not support 'z' as a z param, for api_version=a  . To drop 'tool_choice=required' for calls with this Azure API version, set `litellm.drop_params=True` or for proxy:

`litellm_settings:
 drop_params: true`
Azure API Reference: https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#chat-completionsrG    response_schemajson_tool_calljson_schemaschemaname08zgpt-4ofunction)rb   )typerd   )rb   
parametersrB   	json_mode)rL   splitr-   litellmrP   r   
isinstancedictr   r   r   r   )r*   rN   rO   r=   rP   rQ   supported_openai_paramsapi_version_timesapi_version_yearapi_version_monthapi_version_dayparamr2   r`   schema_name_tool_choice_tools                    r3   map_openai_params#AzureOpenAIConfig.map_openai_paramsl   sJ    #'"B"B5"I'--c2,Q/-a0+A..446LE% %v-(F27H47O(F2-5+d2 **d2#/K44G4(+(^_j^k  lU  %X  j($.3D3L**d2#/K44G4(+&>ugWUGSklwkx  yD  %E 
 6;M2++
5$0G0G.2#%$-"'(9":K"2K"e+"'"6x"@K"'"6v">K *%/4E4Lu,#F'!F!,"$L 4'!E!,"E 16wOG,5AM237OK09>$561).&c 7f r6   messageslitellm_paramsheadersc                 &    [        U5      nUUS.UE$ )N)r=   rw   r
   )r*   r=   rw   rO   rx   ry   s         r3   transform_request#AzureOpenAIConfig.transform_request   s(     4H= 
 
 	
r6   raw_responsemodel_responselogging_objrequest_dataencodingapi_keyrg   c                     [        S5      e)Nz^Azure OpenAI handler.py has custom logic for transforming response, as it uses the OpenAI SDK.NotImplementedError)r*   r=   r}   r~   r   r   rw   rO   rx   r   r   rg   s               r3   transform_response$AzureOpenAIConfig.transform_response   s     "l
 	
r6   c                 
    SS0$ Ntokenazure_ad_tokenrK   r*   s    r3   get_mapped_special_auth_params0AzureOpenAIConfig.get_mapped_special_auth_params   s    )**r6   c                 P    UR                  5        H  u  p4US:X  d  M  XBS'   M     U$ r   )r-   )r*   rN   rO   rq   r2   s        r3   map_special_auth_params)AzureOpenAIConfig.map_special_auth_params   s0    .446LE49 01 7 r6   c                 
    / SQ$ )}
Source: https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models#gpt-4-and-gpt-4-turbo-model-availability
)europeswedenswitzerlandfranceukrK   r   s    r3   get_eu_regions AzureOpenAIConfig.get_eu_regions   s     CBr6   c                 
    / SQ$ )r   )
useastuseastus2eastus2euapeastus3southcentraluswestuswestus2westus3westus4rK   r   s    r3   get_us_regions AzureOpenAIConfig.get_us_regions   s    
 	
r6   error_messagerX   c                     [        XUS9$ )N)rY   rX   ry   r   )r*   r   rX   ry   s       r3   get_error_class!AzureOpenAIConfig.get_error_class  s      !G
 	
r6   c                     [        S5      e)NzTAzure OpenAI has custom logic for validating environment, as it uses the OpenAI SDK.r   )r*   ry   r=   rw   rO   r   s         r3   validate_environment&AzureOpenAIConfig.validate_environment  s     "b
 	
r6   rK   )
NNNNNNNNNN)r]   )NNr8   )#__name__
__module____qualname____firstlineno____doc__r   intr   strrk   listr4   classmethodr:   r   rL   boolru   r   r{   r	   r   LoggingClassr   r   r   r   r   r   r   r   r   r   __static_attributes____classcell__)r/   s   @r3   r   r      s   8 ,048$(%)$(*.+/%)#4#C=4  c4i 014 D>	4
 TN4 SM4 C=4 #3-4 uS$Y'(4 c]4 }4 
4$ $ $
 
c 
D a a a 	a
 a a 
aF

 '(
 	

 
 
 

4 "&$(

 
 &	

 "
 
 '(
 
 
 
 #
 D>
 

$+ +$ QU CS	 C
S	 
"
 
/2
=B4==Q
	
 "&



 

 '(	


 

 #

 


 

r6   r   )!typingr   r   r   r   r   httpx._modelsr   r	   ri   3litellm.litellm_core_utils.prompt_templates.factoryr   )litellm.llms.base_llm.chat.transformationr   litellm.types.utilsr   
exceptionsr   types.llms.openair   r   r   r   r   base_llm.chat.transformationr   common_utilsr   *litellm.litellm_core_utils.litellm_loggingr   LiteLLMLoggingObjr   r   rK   r6   r3   <module>r      sR    < < +  G - 1  7 +W$LLB

 B
r6   