
    ^h$                         S SK JrJrJrJr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  \(       a	  S S
KJr  \rO\r " S S\5      rg)    )TYPE_CHECKINGAnyDictListOptionalUnionN)BaseLLMException)AllMessageValues)ModelResponse   )
BaseConfig   WatsonXAIError)Loggingc            !         ^  \ rS rSr% SrSr\\   \S'   Sr	\\
   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S	'   Sr\\\      \S
'   Sr\\   \S'   Sr\\
   \S'   Sr\\
   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\\\4      \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'                  S5S\\   S\\
   S\\   S\\   S	\\   S
\\\      S\\   S\\
   S\\
   S\\   S\\   S\\   S\\   S\\   S\\   SS4 S jjr\U 4S j5       rS\S\4S jr S\4S jr!S\S\S\S\S\4
S 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&\'\\(RR                  4   S\*4S' jr+S\S(\\,   S\S)\S&\S\4S* jr-  S6S\S+\(R\                  S,\/S-\0S.\S(\\,   S\S)\S/\S0\\   S1\\   S\/4S2 jjr1 S7S&\S\S(\\,   S\S0\\   S\4S3 jjr2S4r3U =r4$ )8IBMWatsonXAIConfig   ag  
Reference: https://cloud.ibm.com/apidocs/watsonx-ai#text-generation
(See ibm_watsonx_ai.metanames.GenTextParamsMetaNames for a list of all available params)

Supported params for all available watsonx.ai foundational models.

- `decoding_method` (str): One of "greedy" or "sample"

- `temperature` (float): Sets the model temperature for sampling - not available when decoding_method='greedy'.

- `max_new_tokens` (integer): Maximum length of the generated tokens.

- `min_new_tokens` (integer): Maximum length of input tokens. Any more than this will be truncated.

- `length_penalty` (dict): A dictionary with keys "decay_factor" and "start_index".

- `stop_sequences` (string[]): list of strings to use as stop sequences.

- `top_k` (integer): top k for sampling - not available when decoding_method='greedy'.

- `top_p` (integer): top p for sampling - not available when decoding_method='greedy'.

- `repetition_penalty` (float): token repetition penalty during text generation.

- `truncate_input_tokens` (integer): Truncate input tokens to this length.

- `include_stop_sequences` (bool): If True, the stop sequence will be included at the end of the generated text in the case of a match.

- `return_options` (dict): A dictionary of options to return. Options include "input_text", "generated_tokens", "input_tokens", "token_ranks". Values are boolean.

- `random_seed` (integer): Random seed for text generation.

- `moderations` (dict): Dictionary of properties that control the moderations, for usages such as Hate and profanity (HAP) and PII filtering.

- `stream` (bool): If True, the model will return a stream of responses.
sampledecoding_methodNtemperaturemax_new_tokensmin_new_tokenslength_penaltystop_sequencestop_ktop_prepetition_penaltytruncate_input_tokensFinclude_stop_sequencesreturn_optionsrandom_seedmoderationsstreamreturnc                     [        5       nUR                  5        H*  u  nnUS:w  d  M  Uc  M  [        U R                  UU5        M,     g )Nself)localsitemssetattr	__class__)r'   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   kwargslocals_keyvalues                       h/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/watsonx/completion/transformation.py__init__IBMWatsonXAIConfig.__init__J   s;    & (!--/JCf}!2U3 *    c                     > [         TU ]  5       $ N)super
get_config)clsr+   s    r0   r7   IBMWatsonXAIConfig.get_configb   s    w!##r3   paramc                     / SQnX;   $ )z@
Determine if user passed in a watsonx.ai text generation param
)r   r   r   r   r   r   r   r   r    r!   r"   r#   r   
min_tokens )r'   r:   text_generation_paramss      r0   is_watsonx_text_param(IBMWatsonXAIConfig.is_watsonx_text_paramf   s    "
" ..r3   modelc                 
    / SQ$ )N)r   
max_tokensr   frequency_penaltystopseedr$   r=   )r'   rA   s     r0   get_supported_openai_params.IBMWatsonXAIConfig.get_supported_openai_params}   s    
 	
r3   non_default_paramsoptional_paramsdrop_paramsc                    0 nUR                  5        H  u  pgUS:X  a  XrS'   M  US:X  a  XrS'   M  US:X  a  XrS'   M)  US:X  a  XrS'   M5  US:X  a  XrS'   MA  US:X  a  XrS	'   MM  US
:X  a  XrS'   MY  US:X  a  XuS'   Me  US:X  a  XuS'   Mq  US:X  a  XuS'   M}  US:X  a  XuS'   M  US:X  a  XuS'   M  US:X  a  XuS'   M  US:X  d  M  XuS'   M     U(       a  XRS'   U$ )NrC   r   r$   r   r   rD   r   rF   r"   rE   r   r   r<   r   r   r   r   
time_limitr!   
extra_body)r)   )r'   rI   rJ   rA   rK   rN   kvs           r0   map_openai_params$IBMWatsonXAIConfig.map_openai_params   s    
&,,.DAL 45 01h,-)m#12.g+,())89 45f12.f45 01''01,-l"/0+,g&'7#--6723&&/0+,l"+,<(&&/0+,9 /< ,6L)r3   c                     SSSS.$ )z;
Common auth params across bedrock/vertex_ai/azure/watsonx
watsonx_projectwatsonx_region_namewatsonx_token)projectregion_nametokenr=   r'   s    r0   get_mapped_special_auth_params1IBMWatsonXAIConfig.get_mapped_special_auth_params   s    
 )0$
 	
r3   c                 r    U R                  5       nUR                  5        H  u  pEXC;   d  M  XRX4   '   M     U$ r5   )r[   r)   )r'   rI   rJ   mapped_paramsr:   r/   s         r0   map_special_auth_params*IBMWatsonXAIConfig.map_special_auth_params   s>    ;;=.446LE%8= 45 7 r3   c                 
    SS/$ )[
Source: https://www.ibm.com/docs/en/watsonx/saas?topic=integrations-regional-availability
zeu-dezeu-gbr=   rZ   s    r0   get_eu_regions!IBMWatsonXAIConfig.get_eu_regions   s    
 
 	
r3   c                     S/$ )rb   zus-southr=   rZ   s    r0   get_us_regions!IBMWatsonXAIConfig.get_us_regions   s    
 
 	
r3   error_messagestatus_codeheadersc                     [        X!US9$ )N)ri   messagerj   r   )r'   rh   ri   rj   s       r0   get_error_class"IBMWatsonXAIConfig.get_error_class   s     #G
 	
r3   messageslitellm_paramsc                     [        S5      e)NzHtransform_request not implemented. Done in watsonx/completion handler.pyNotImplementedError)r'   rA   ro   rJ   rp   rj   s         r0   transform_request$IBMWatsonXAIConfig.transform_request   s     "V
 	
r3   raw_responsemodel_responselogging_objrequest_dataencodingapi_key	json_modec                     [        S5      e)NzItransform_response not implemented. Done in watsonx/completion handler.pyrr   )r'   rA   rv   rw   rx   ry   ro   rJ   rp   rz   r{   r|   s               r0   transform_response%IBMWatsonXAIConfig.transform_response   s     "W
 	
r3   c                 .    SSS.nU(       a  SU 3US'   U$ )Nzapplication/json)zContent-TypeAcceptzBearer Authorizationr=   )r'   rj   rA   ro   rJ   r{   s         r0   validate_environment'IBMWatsonXAIConfig.validate_environment   s,     /(
 )0	':GO$r3   r=   )NNNNNNNNNNNNNNN)NNr5   )5__name__
__module____qualname____firstlineno____doc__r   r   str__annotations__r   floatr   intr   r   dictr   r   r   r   r   r   r    boolr!   r   r"   r#   r$   r1   classmethodr7   r?   rG   rQ   r[   r_   rc   rf   r   httpxHeadersr	   rm   r
   rt   Responser   LiteLLMLoggingObjr~   r   __static_attributes____classcell__)r+   s   @r0   r   r      s
   #J &.OXc]-#'K%'$(NHSM($(NHSM(%)NHTN)*.NHT#Y'.E8C=!E8E?!*..+/8C=/-2HTN204NHT#t)_-4!%K#%"&K$&"FHTN" *.'+(,(,)-.2#!%.2/315)-%)&*!%!4!#4 e_4 !	4
 !4 !4 !c+4 }4 4 %UO4  (}4 !)4 !4 c]4 d^4  !4$ 
%40 $ $/3 /4 /.	
 	
( ( ( 	(
 ( 
(T
 
$ QU 
S	 

S	 

 
/2
=B4CV=W
	




 '(

 	


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

 '
 
 '(
 
 
 
 #
 D>
 

0 "&  '(	
  # 
 r3   r   )typingr   r   r   r   r   r   r   )litellm.llms.base_llm.chat.transformationr	   litellm.types.llms.openair
   litellm.utilsr   base_llm.chat.transformationr   common_utilsr   *litellm.litellm_core_utils.litellm_loggingr   _LiteLLMLoggingObjr   r   r=   r3   r0   <module>r      s=    B B  F 6 ' 6 )X*t tr3   