
    g                     ~    d dl Z d dlmZ d dlmZmZmZ d dlZd dlm	Z	 d dl
mZmZ ddlmZ dd	lmZ  G d
 de	      Zy)    N)deepcopy)CallableOptionalUnion)
BaseAWSLLM)ModelResponse
get_secret   )AWSEventStreamDecoder   )SagemakerChatConfigc                       e Zd ZdefdZ	 ddededededee   f
dZdi dd	i fded
ede	de
dededeeeej                  f      dedefdZy)SagemakerChatHandleroptional_paramsc                 p   	 ddl m} |j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  d	d       }|j                  d
d       }	|j                  dd        |j                  dd       }
|j                  dd       }|Dt	        dd       }|t        |t              r|}t	        dd       }|t        |t              r|}|d}| j                  ||||||	||
|	      }||fS # t        $ r t        d      w xY w)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                  X/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/sagemaker/chat/handler.py_load_credentialsz&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 #:'1,'E$'3
(#9 #;&"-#'#7#7/"7/+--'#9- $8 
$
 O++_  	YWXX	Ys   D   D5Nmodeldatar   extra_headersc                    	 ddl m} ddlm}  ||d|      }	|j                  d      du r
d| d	| d
}
n	d| d	| d}
|j                  dd       }||}
t        j                  |      j                  d      }ddi}|ddi|} |d|
||      }|	j                  |       |d|v r|d   |j                  d<   |j                         }|S # t        $ r t	        d      w xY w)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.authr0   botocore.awsrequestr1   r!   getjsondumpsencodeadd_authr8   prepare)r&   r)   r,   r-   r   r   r.   r0   r1   sigv4api_baser4   encoded_datar8   requestprepped_requests                   r*   _prepare_requestz%SagemakerChatHandler._prepare_requestG   s5   	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xlG
 	w%/]*J/<_/MGOOO,!//+9  	YWXX	Ys   C C Fmessagesmodel_responseprint_verboselitellm_paramstimeoutacompletionr8   c                    | j                  |      \  }}t        |      }|j                  dd       }ddlm}  |       }|du rdnd|d<   t               j                  |||||      }| j                  |||||      }t        dd	      }|j                  |||j                  d |
||||||||	||j                  dd
|      S )Nr3   r   )OpenAILikeChatHandlerTF)r,   rH   r   rK   r8   )r,   r-   r   r)   r    )r,   is_messages_apisagemaker_chat)r,   rH   rC   api_keycustom_prompt_dictrI   rJ   logging_objr   rM   rK   	logger_fnrL   encodingr8   custom_endpointcustom_llm_providerstreaming_decoder)r+   r   r"   %litellm.llms.openai_like.chat.handlerrO   r   transform_requestrG   r   
completionr7   r8   )r&   r,   rH   rI   rJ   rW   rU   r   rK   rL   rT   rV   rM   r8   r)   r   inference_paramsr3   rO   openai_like_chat_completions_dataprepared_requestcustom_stream_decoders                          r*   r]   z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__dictr+   r$   r   rG   listr   r   r   floathttpxTimeoutboolr]    rc   r*   r   r      s    5,5,| )-( ( 	(
 ( (  ~(h :>!?
?
 ?
 &	?

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