
    ^h\                        S r SSKrSSKrSSKJr  SSKJrJrJr  SSK	r	SSK
r
SSKJr   " S S\5      r " S S	5      r " S
 S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S\5      r " S S5      r " S S5      rS r           S+S\\   S\\   S\\   S\\   S\\   S \\   S!\\   S"\\   S#\\   S$\\\\	R8                  4      4S% jjr " S& S'5      rS(\S)\4S* jrg),zF
Common utilities used across bedrock chat/embedding/image generation
    N)Enum)ListOptionalUnion)
get_secretc                   (   ^  \ rS rSrU 4S jrSrU =r$ )BedrockError   c                    > Xl         X l        [        R                  " SSS9U l        [        R
                  " XR                  S9U l        [        TU ]!  U R                  5        g )NPOSTz0https://us-west-2.console.aws.amazon.com/bedrock)methodurl)status_coderequest)	r   messagehttpxRequestr   Responseresponsesuper__init__)selfr   r   	__class__s      [/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/bedrock/common_utils.pyr   BedrockError.__init__   sN    &}}Q
 ;ULL	
    )r   r   r   r   )__name__
__module____qualname____firstlineno__r   __static_attributes____classcell__)r   s   @r   r	   r	      s    	
 	
r   r	   c                   b    \ rS rSrS rS\4S jrS\S\4S jrS\\	   4S jr
S\\	   4S	 jrS
rg)AmazonBedrockGlobalConfig   c                     g N r   s    r   r   "AmazonBedrockGlobalConfig.__init__   s    r   returnc                 
    SS0$ )zC
Mapping of common auth params across bedrock/vertex/azure/watsonx
region_nameaws_region_namer(   r)   s    r   get_mapped_special_auth_params8AmazonBedrockGlobalConfig.get_mapped_special_auth_params!   s     011r   non_default_paramsoptional_paramsc                 r    U R                  5       nUR                  5        H  u  pEXC;   d  M  XRX4   '   M     U$ r'   )r/   items)r   r1   r2   mapped_paramsparamvalues         r   map_special_auth_params1AmazonBedrockGlobalConfig.map_special_auth_params'   s>    ;;=.446LE%8= 45 7 r   c                 
    / SQ$ )4
Source: https://www.aws-services.info/bedrock.html
)z	eu-west-1z	eu-west-3zeu-central-1r(   r)   s    r   get_eu_regions(AmazonBedrockGlobalConfig.get_eu_regions.   s    
 	
r   c                 
    / SQ$ )r;   )z	us-east-2z	us-east-1z	us-west-2zus-gov-west-1r(   r)   s    r   get_us_regions(AmazonBedrockGlobalConfig.get_us_regions8   s    
 	
r   r(   N)r   r   r   r    r   dictr/   r8   r   strr<   r?   r!   r(   r   r   r$   r$      sG    2 2$ QU 
S	 
	
S	 	
r   r$   c                       \ rS rSr% SrSr\\   \S'   Sr	\\
   \S'   Sr\\   \S'   Sr\\   \S'       SS\\   S\\
   S\\   S\\   SS4
S	 jjr\S
 5       rSrg)AmazonTitanConfigD   a[  
Reference: https://us-west-2.console.aws.amazon.com/bedrock/home?region=us-west-2#/providers?model=titan-text-express-v1

Supported Params for the Amazon Titan models:

- `maxTokenCount` (integer) max tokens,
- `stopSequences` (string[]) list of stop sequence strings
- `temperature` (float) temperature for model,
- `topP` (int) top p for model
NmaxTokenCountstopSequencestemperaturetopPr+   c                     [        5       nUR                  5        H(  u  pgUS:w  d  M  Uc  M  [        U R                  Xg5        M*     g Nr   localsr4   setattrr   )r   rF   rG   rH   rI   locals_keyr7   s           r   r   AmazonTitanConfig.__init__U   s7     (!--/JCf}!23 *r   c                    U R                   R                  5        VVs0 s H_  u  pUR                  S5      (       a  M  [        U[        R
                  [        R                  [        [        45      (       a  MX  Uc  M]  X_Ma     snn$ s  snnf N__	__dict__r4   
startswith
isinstancetypesFunctionTypeBuiltinFunctionTypeclassmethodstaticmethodclskvs      r   
get_configAmazonTitanConfig.get_configa        **,
,<<%  &&-- 	   AD,
 	
 
   B7B9B>Br(   )NNNN)r   r   r   r    __doc__rF   r   int__annotations__rG   listrH   floatrI   r   r\   rb   r!   r(   r   r   rD   rD   D   s    	 $(M8C='$(M8D>(#'K%'D(3- (,(,'+"
4}
4  ~
4 e_	
4
 sm
4 

4 
 
r   rD   c                       \ 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S\\   S\\
   SS4S jjr\S 5       rS rS\S\4S jrSrg)AmazonAnthropicClaude3Configt   aN  
Reference:
    https://us-west-2.console.aws.amazon.com/bedrock/home?region=us-west-2#/providers?model=claude
    https://docs.anthropic.com/claude/docs/models-overview#model-comparison

Supported Params for the Amazon / Anthropic Claude 3 models:

- `max_tokens` Required (integer) max tokens. Default is 4096
- `anthropic_version` Required (string) version of anthropic for bedrock - e.g. "bedrock-2023-05-31"
- `system` Optional (string) the system prompt, conversion from openai format to this is handled in factory.py
- `temperature` Optional (float) The amount of randomness injected into the response
- `top_p` Optional (float) Use nucleus sampling.
- `top_k` Optional (int) Only sample from the top K options for each subsequent token
- `stop_sequences` Optional (List[str]) Custom text sequences that cause the model to stop generating
i   
max_tokenszbedrock-2023-05-31anthropic_versionNsystemrH   top_ptop_kstop_sequencesr+   c                     [        5       nUR                  5        H(  u  pEUS:w  d  M  Uc  M  [        U R                  XE5        M*     g rK   rL   )r   rn   ro   rO   rP   r7   s         r   r   %AmazonAnthropicClaude3Config.__init__   s7    
 (!--/JCf}!23 *r   c                    U R                   R                  5        VVs0 s H_  u  pUR                  S5      (       a  M  [        U[        R
                  [        R                  [        [        45      (       a  MX  Uc  M]  X_Ma     snn$ s  snnf rS   rU   r^   s      r   rb   'AmazonAnthropicClaude3Config.get_config   rd   re   c                 
    / SQ$ )N)	rn   max_completion_tokenstoolstool_choicestreamstoprH   rq   extra_headersr(   r)   s    r   get_supported_openai_params8AmazonAnthropicClaude3Config.get_supported_openai_params   s    

 
	
r   r1   r2   c                     UR                  5        HI  u  p4US:X  d  US:X  a  XBS'   US:X  a  XBS'   US:X  a  XBS'   US:X  a  XBS'   US:X  a  XBS'   US:X  d  ME  XBS'   MK     U$ )	Nrn   ry   rz   r|   r}   rs   rH   rq   r4   r   r1   r2   r6   r7   s        r   map_openai_params.AmazonAnthropicClaude3Config.map_openai_params   s    .446LE$1H(H05-+0( ,1)49 01%16.+0( 7 r   r(   )NN)r   r   r   r    rf   rn   r   rg   rh   ro   rB   rp   rH   rj   rq   rr   rs   r   r   r\   rb   r   rA   r   r!   r(   r   r   rl   rl   t   s      !%J$';x}; FHSM #'K%'!E8E?!E8C=*.NHT#Y'. %)+/4SM4 $C=4 
	4 
 
"
D 4 r   rl   c                   (   \ rS rSr% Sr\R                  r\\	   \
S'   Sr\\   \
S'   Sr\\   \
S'   Sr\\	   \
S'   Sr\\	   \
S'   Sr\\   \
S	'         SS\\	   S\\   S\\   S\\	   S\\	   S	\\   S
S4S jjr\S 5       rS rS\S\4S jrSrg)AmazonAnthropicConfig   a  
Reference: https://us-west-2.console.aws.amazon.com/bedrock/home?region=us-west-2#/providers?model=claude

Supported Params for the Amazon / Anthropic models:

- `max_tokens_to_sample` (integer) max tokens,
- `temperature` (float) model temperature,
- `top_k` (integer) top k,
- `top_p` (integer) top p,
- `stop_sequences` (string[]) list of stop sequences - e.g. ["\n\nHuman:"],
- `anthropic_version` (string) version of anthropic for bedrock - e.g. "bedrock-2023-05-31"
max_tokens_to_sampleNrs   rH   rr   rq   ro   r+   c                     [        5       nUR                  5        H(  u  pUS:w  d  M  U	c  M  [        U R                  X5        M*     g rK   rL   )
r   r   rs   rH   rr   rq   ro   rO   rP   r7   s
             r   r   AmazonAnthropicConfig.__init__   s7     (!--/JCf}!23 *r   c                    U R                   R                  5        VVs0 s H_  u  pUR                  S5      (       a  M  [        U[        R
                  [        R                  [        [        45      (       a  MX  Uc  M]  X_Ma     snn$ s  snnf rS   rU   r^   s      r   rb    AmazonAnthropicConfig.get_config   rd   re   c                 
    / SQ$ )N)rn   ry   rH   r}   rq   r|   r(   r)   s    r   r   1AmazonAnthropicConfig.get_supported_openai_params   s    
 	
r   r1   r2   c                     UR                  5        HF  u  p4US:X  d  US:X  a  XBS'   US:X  a  XBS'   US:X  a  XBS'   US:X  a  XBS'   US:X  d  M;  US	L d  MB  XBS'   MH     U$ )
Nrn   ry   r   rH   rq   r}   rs   r|   Tr   r   s        r   r   'AmazonAnthropicConfig.map_openai_params  s~    .446LE$1H(H:? 67%16.+0(49 01 Ud],1) 7 r   r(   )NNNNNN)r   r   r   r    rf   litellmrn   r   r   rg   rh   rs   ri   rH   rj   rr   rq   ro   rB   r   r\   rb   r   rA   r   r!   r(   r   r   r   r      s    +2*<*<(3-<%)NHTN)#'K%'E8C=E8C='+x}+ /3)-'+##+/4&sm4 !4 e_	4
 }4 }4 $C=4 
4 
 
"

D 4 r   r   c            	           \ rS rSr% SrSr\\   \S'   Sr	\\
   \S'   Sr\\   \S'      SS\\   S\\
   S\\   SS4S jjr\S	 5       rS
rg)AmazonCohereConfigi  a  
Reference: https://us-west-2.console.aws.amazon.com/bedrock/home?region=us-west-2#/providers?model=command

Supported Params for the Amazon / Cohere models:

- `max_tokens` (integer) max tokens,
- `temperature` (float) model temperature,
- `return_likelihood` (string) n/a
Nrn   rH   return_likelihoodr+   c                     [        5       nUR                  5        H(  u  pVUS:w  d  M  Uc  M  [        U R                  XV5        M*     g rK   rL   )r   rn   rH   r   rO   rP   r7   s          r   r   AmazonCohereConfig.__init__&  7     (!--/JCf}!23 *r   c                    U R                   R                  5        VVs0 s H_  u  pUR                  S5      (       a  M  [        U[        R
                  [        R                  [        [        45      (       a  MX  Uc  M]  X_Ma     snn$ s  snnf rS   rU   r^   s      r   rb   AmazonCohereConfig.get_config1  rd   re   r(   NNN)r   r   r   r    rf   rn   r   rg   rh   rH   rj   r   rB   r   r\   rb   r!   r(   r   r   r   r     s     !%J$#'K%''+x}+ %)'++/		4SM	4 e_	4 $C=		4
 
	4 
 
r   r   c                      \ 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S\\   S\\
   S\\
   S\\   S\\   S	\\   S
\\   SS4S jjr\S 5       rSrg)AmazonAI21ConfigiD  a#  
Reference: https://us-west-2.console.aws.amazon.com/bedrock/home?region=us-west-2#/providers?model=j2-ultra

Supported Params for the Amazon / AI21 models:

- `maxTokens` (int32): The maximum number of tokens to generate per result. Optional, default is 16. If no `stopSequences` are given, generation stops after producing `maxTokens`.

- `temperature` (float): Modifies the distribution from which tokens are sampled. Optional, default is 0.7. A value of 0 essentially disables sampling and results in greedy decoding.

- `topP` (float): Used for sampling tokens from the corresponding top percentile of probability mass. Optional, default is 1. For instance, a value of 0.9 considers only tokens comprising the top 90% probability mass.

- `stopSequences` (array of strings): Stops decoding if any of the input strings is generated. Optional.

- `frequencyPenalty` (object): Placeholder for frequency penalty object.

- `presencePenalty` (object): Placeholder for presence penalty object.

- `countPenalty` (object): Placeholder for count penalty object.
N	maxTokensrH   rI   rG   frequencePenaltypresencePenaltycountPenaltyr+   c                     [        5       nUR                  5        H(  u  pU	S:w  d  M  U
c  M  [        U R                  X5        M*     g rK   rL   )r   r   rH   rI   rG   r   r   r   rO   rP   r7   s              r   r   AmazonAI21Config.__init__a  s7     (!--/JCf}!23 *r   c                    U R                   R                  5        VVs0 s H_  u  pUR                  S5      (       a  M  [        U[        R
                  [        R                  [        [        45      (       a  MX  Uc  M]  X_Ma     snn$ s  snnf rS   rU   r^   s      r   rb   AmazonAI21Config.get_configp  rd   re   r(   )NNNNNNN)r   r   r   r    rf   r   r   rg   rh   rH   rj   rI   rG   ri   r   rA   r   r   r   r\   rb   r!   r(   r   r   r   r   D  s   (  $Ix}##'K%' D(5/ $(M8D>('+htn+&*OXd^*#'L(4.' $('+ $(,+/*.'+4C=4 e_4 uo	4
  ~4 #4.4 "$4 tn4 
4 
 
r   r   c                       \ rS rSrSrSrSrg)AnthropicConstantsi  z	

Human: z

Assistant: r(   N)r   r   r   r    HUMAN_PROMPT	AI_PROMPTr!   r(   r   r   r   r     s     L!Ir   r   c            	           \ rS rSr% SrSr\\   \S'   Sr	\\
   \S'   Sr\\
   \S'      SS\\   S\\
   S\\   SS4S	 jjr\S
 5       rSrg)AmazonLlamaConfigi  a*  
Reference: https://us-west-2.console.aws.amazon.com/bedrock/home?region=us-west-2#/providers?model=meta.llama2-13b-chat-v1

Supported Params for the Amazon / Meta Llama models:

- `max_gen_len` (integer) max tokens,
- `temperature` (float) temperature for model,
- `top_p` (float) top p for model
Nmax_gen_lenrH   rI   rF   r+   c                     [        5       nUR                  5        H(  u  pVUS:w  d  M  Uc  M  [        U R                  XV5        M*     g rK   rL   )r   rF   rH   rI   rO   rP   r7   s          r   r   AmazonLlamaConfig.__init__  r   r   c                    U R                   R                  5        VVs0 s H_  u  pUR                  S5      (       a  M  [        U[        R
                  [        R                  [        [        45      (       a  MX  Uc  M]  X_Ma     snn$ s  snnf rS   rU   r^   s      r   rb   AmazonLlamaConfig.get_config  rd   re   r(   r   )r   r   r   r    rf   r   r   rg   rh   rH   rj   rI   r   r\   rb   r!   r(   r   r   r   r     s     "&K#%#'K%' D(5/  (,'+"		4}	4 e_	4 sm		4
 
	4 
 
r   r   c                       \ rS rSr% SrSr\\   \S'   Sr	\\
   \S'   Sr\\
   \S'   Sr\\
   \S'   Sr\\\      \S'        SS\\   S\\
   S\\   S\\
   S\\\      S	S4S
 jjr\S 5       rSrg)AmazonMistralConfigi  a  
Reference: https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-mistral.html
Supported Params for the Amazon / Mistral models:

- `max_tokens` (integer) max tokens,
- `temperature` (float) temperature for model,
- `top_p` (float) top p for model
- `stop` [string] A list of stop sequences that if generated by the model, stops the model from generating further output.
- `top_k` (float) top k for model
Nrn   rH   rq   rr   r}   r+   c                     [        5       nUR                  5        H(  u  pxUS:w  d  M  Uc  M  [        U R                  Xx5        M*     g rK   rL   )	r   rn   rH   rq   rr   r}   rO   rP   r7   s	            r   r   AmazonMistralConfig.__init__  s7     (!--/JCf}!23 *r   c                    U R                   R                  5        VVs0 s H_  u  pUR                  S5      (       a  M  [        U[        R
                  [        R                  [        [        45      (       a  MX  Uc  M]  X_Ma     snn$ s  snnf rS   rU   r^   s      r   rb   AmazonMistralConfig.get_config  rd   re   r(   )NNNNN)r   r   r   r    rf   rn   r   rg   rh   rH   rj   rq   rr   r}   r   rB   r   r\   rb   r!   r(   r   r   r   r     s    	 !%J$#'K%'!E8E?!!E8E?! $D(49
$ %)'+#!%$(4SM4 e_4 }	4
 4 tCy!4 
4 
 
r   r   c                    ^  U 4S jnU$ )z,Closure to capture the headers and add them.c                 n   > TR                  5        H   u  p#U R                  R                  X#5        M"     g)z.Actual callback function that Boto3 will call.N)r4   headers
add_header)r   kwargsheader_nameheader_valuer   s       r   callback#add_custom_header.<locals>.callback  s(    )0%KOO&&{A *9r   r(   )r   r   s   ` r   add_custom_headerr     s    B
 Or   aws_access_key_idaws_secret_access_keyr.   aws_bedrock_runtime_endpointaws_session_nameaws_profile_nameaws_role_nameaws_web_identity_tokenr~   timeoutc                    [        SS 5      n[        SS 5      nUUUUUUUU/n[        U5       H3  u  pU(       d  M  UR                  S5      (       d  M&  [        U5      X'   M5     Uu  nnnnnnnn[        R                  " S[
        R                  5      nU (       a  O(U(       a  Un OU(       a  Un OU(       a  Un O
[        SSS9e[        S5      nU(       a  UnOU(       a  UnOS	U  S
3nSS Kn[        U
[        5      (       a  UR                  R                  XS9nOh[        U
[        R                  5      (       a/  UR                  R                  U
R                  U
R                   S9nOUR                  R                  5       nUbj  Ubg  Ubd  [        U5      nUc
  [        SSS9eUR#                  S5      nUR%                  UUUSS9nUR#                  SUS   S   US   S   US   S   U UUUS9nOUbL  UbI  UR#                  SUUS9nUR'                  XuS9nUR#                  SUS   S   US   S   US   S   U UUUS9nOPUb  UR#                  SUUU UUUS9nO7Ub!  UR)                  US9R#                  SU UUUS9nOUR#                  SU UUUS9nU	(       a/  UR*                  R,                  R/                  S[1        U	5      5        U$ )NAWS_REGION_NAME
AWS_REGIONzos.environ/
SSL_VERIFYzRAWS region not set: set AWS_REGION_NAME or AWS_REGION env variable or in .env filei  )r   r   AWS_BEDROCK_RUNTIME_ENDPOINTzhttps://bedrock-runtime.z.amazonaws.comr   )connect_timeoutread_timeoutz6OIDC token could not be retrieved from secret manager.stsi  )RoleArnRoleSessionNameWebIdentityTokenDurationSecondszbedrock-runtimeCredentialsAccessKeyIdSecretAccessKeySessionToken)service_namer   r   aws_session_tokenr-   endpoint_urlconfigverify)r   r   )r   r   )r   r   r   r-   r   r   r   )profile_name)r   r-   r   r   r   zbefore-sign.bedrock-runtime.*)r   	enumeraterW   osgetenvr   
ssl_verifyr	   boto3rX   rj   sessionConfigr   Timeoutconnectreadclientassume_role_with_web_identityassume_roleSessionmetaeventsregisterr   )r-   r   r   r.   r   r   r   r   r   r~   r   litellm_aws_region_namestandard_aws_region_nameparams_to_checkir6   r    env_aws_bedrock_runtime_endpointr   r   r   
oidc_token
sts_clientsts_responser   s                            r   init_bedrock_clientr     s    )):DA),= 	$	O o.5U%%m44!+E!2O / 		$ <););<J 	%	 -	!.h
 	
 (22P'Q$#3	)71+nM'5!!%%g%T	GU]]	+	+%%#OO',, & 
 %%' 	*%( 67
P 
 \\%(
 "??!,' 	 @ 
 **=9-H".}"=>O"P*=9.I#%  	
 
	"'7'C\\/"7 " 

 "--! . 
 **=9-H".}"=>O"P*=9.I#%  	
 
	& */"7#%  
 
	% ,<=DD*#% E 
 *#%  
 ##+->}-M	
 Mr   c                   2    \ rS rSrS rS rS rS rS rSr	g)	ModelResponseIteratori  c                     Xl         SU l        g )NF)model_responseis_done)r   r   s     r   r   ModelResponseIterator.__init__  s    ,r   c                     U $ r'   r(   r)   s    r   __iter__ModelResponseIterator.__iter__      r   c                 V    U R                   (       a  [        eSU l         U R                  $ NT)r   StopIterationr   r)   s    r   __next__ModelResponseIterator.__next__  s"    <<"""r   c                     U $ r'   r(   r)   s    r   	__aiter__ModelResponseIterator.__aiter__  r  r   c                 ^   #    U R                   (       a  [        eSU l         U R                  $ 7fr  )r   StopAsyncIterationr   r)   s    r   	__anext__ModelResponseIterator.__anext__  s%     <<$$"""s   +-)r   r   N)
r   r   r   r    r   r   r  r	  r  r!   r(   r   r   r   r     s    
##r   r   response_tool_namer+   c                 |    U [         R                  R                  ;   a  [         R                  R                  U    n U $ )z
If litellm formatted the input tool name, we need to convert it back to the original name.

Args:
    response_tool_name (str): The name of the tool as received from the response.

Returns:
    str: The original name of the tool.
)r   bedrock_tool_name_mappings
cache_dict)r  s    r   get_bedrock_tool_namer    s:     W??JJJ$??JJ
 r   )NNNNNNNNNNN) rf   r   rY   enumr   typingr   r   r   r   r   litellm.secret_managers.mainr   	Exceptionr	   r$   rD   rl   r   r   r   r   r   r   r   rB   rA   rj   r   r   r   r  r(   r   r   <module>r     s   
   ( (   3

9 

$
 $
N-
 -
`P PfM M`*
 *
Z<
 <
~" "
*
 *
Z/
 /
d '++/%)26&*&*#',0$(59s}s $C=s c]	s
 #+3-s sms sms C=s %SMs D>s eE5==012sl# #4c c r   