
    ^h                     ~    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J	r	  S SK
JrJr  SSKJr  SS	KJr   " S
 S\	5      rg)    N)deepcopy)CallableOptionalUnion)
BaseAWSLLM)ModelResponse
get_secret   )AWSEventStreamDecoder   )SagemakerChatConfigc                       \ rS rSrS\4S jr SS\S\S\S\S\\   4
S	 jjrS0 SS
0 4S\S\	S\
S\S\S\S\\\\R                  4      S\S\4S jjrSrg)SagemakerChatHandler   optional_paramsc                     SSK Jn  UR                  SS 5      nUR                  SS 5      nUR                  SS 5      nUR                  SS 5      nUR                  SS 5      nUR                  S	S 5      nUR                  S
S 5      n	UR                  SS 5        UR                  SS 5      n
UR                  SS 5      nUcQ  [	        SS 5      nUb  [        U[        5      (       a  Un[	        SS 5      nUb  [        U[        5      (       a  UnUc  SnU R                  UUUUUU	UU
US9	nX4$ ! [         a    [        S5      ef = f)Nr   )Credentials7Missing boto3 to call bedrock. Run 'pip install boto3'.aws_secret_access_keyaws_access_key_idaws_session_tokenaws_region_nameaws_role_nameaws_session_nameaws_profile_nameaws_bedrock_runtime_endpointaws_web_identity_tokenaws_sts_endpointAWS_REGION_NAME
AWS_REGIONz	us-west-2)	r   r   r   r   r   r   r   r   r   )botocore.credentialsr   ImportErrorpopr	   
isinstancestrget_credentials)selfr   r   r   r   r   r   r   r   r   r   r   litellm_aws_region_namestandard_aws_region_namecredentialss                  ]/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/sagemaker/chat/handler.py_load_credentials&SagemakerChatHandler._load_credentials   s   	Y8
 !0 3 34KT R+//0CTJ+//0CTJ)--.?F'++OTB*../A4H*../A4H*D	
 "1!4!45Mt!T*../A4H "&01BD&I#&2z'8 8 #:'1,'E$'3
(#9 9 #;&"-#'#7#7/"7/+--'#9- $8 
$
 ++_  	YWXX	Ys   D* *E Nmodeldatar   extra_headersc                     SSK Jn  SSKJn  U" USU5      n	UR                  S5      SL a
  SU S	U S
3n
O	SU S	U S3n
UR                  SS 5      nUb  Un
[        R                  " U5      R                  S5      nSS0nUb  SS0UEnU" SXUS9nU	R                  U5        Ub  SU;   a  US   UR                  S'   UR                  5       nU$ ! [         a    [	        S5      ef = f)Nr   )	SigV4Auth)
AWSRequestr   	sagemakerstreamTzhttps://runtime.sagemaker.z.amazonaws.com/endpoints/z/invocations-response-streamz/invocationssagemaker_base_urlzutf-8zContent-Typezapplication/jsonPOST)methodurlr/   headersAuthorization)botocore.authr2   botocore.awsrequestr3   r"   getjsondumpsencodeadd_authr:   prepare)r'   r*   r.   r/   r   r   r0   r2   r3   sigv4api_baser6   encoded_datar:   requestprepped_requests                   r+   _prepare_request%SagemakerChatHandler._prepare_requestG   s3   	Y/6 +{ODx(D03O3DD]^c]d  eA  BH3O3DD]^c]ddpqH,001EtL))Hzz$'..w7!#56$%'9K]KGxG
 	w%/]*J/<_/MGOOO,!//+9  	YWXX	Ys   C C$Fmessagesmodel_responseprint_verboselitellm_paramstimeoutacompletionr:   c                 l   U R                  U5      u  p[        U5      nUR                  SS 5      nSSKJn  U" 5       nUSL a  SOSUS'   [        5       R                  UUUUUS9nU R                  UUUUUS9n[        SSS	9nUR                  UUUR                  S U
UUUUUUUU	UUR                  SS
US9$ )Nr5   r   )OpenAILikeChatHandlerTF)r.   rK   r   rN   r:   )r.   r/   r   r*   r    )r.   is_messages_apisagemaker_chat)r.   rK   rE   api_keycustom_prompt_dictrL   rM   logging_objr   rP   rN   	logger_fnrO   encodingr:   custom_endpointcustom_llm_providerstreaming_decoder)r,   r   r#   %litellm.llms.openai_like.chat.handlerrR   r   transform_requestrI   r   
completionr9   r:   )r'   r.   rK   rL   rM   rZ   rX   r   rN   rO   rW   rY   rP   r:   r*   r   inference_paramsr5   rR   openai_like_chat_completions_dataprepared_requestcustom_stream_decoders                          r+   r`   SagemakerChatHandler.completionq   s   $ (,'='=o'N$#O4!%%h5O'<'>$-3t^T"#%77,) 8 
  00+#+ 1 
 !6BPT U+66%))1)'#,#)$,,  03% 7 
 	
     )N)__name__
__module____qualname____firstlineno__dictr,   r%   r   rI   listr   r   r   floathttpxTimeoutboolr`   __static_attributes__rh   rg   r+   r   r      s    5,5,| )-( ( 	(
 ( (  ~(h :>!?
?
 ?
 &	?

  ?
 ?
 ?
 %u}} 456?
 ?
 ?
 ?
rg   r   )r?   copyr   typingr   r   r   rp   !litellm.llms.bedrock.base_aws_llmr   litellm.utilsr   r	   common_utilsr   transformationr   r   rh   rg   r+   <module>rz      s.      , ,  8 3 0 /b
: b
rg   