
    hZ                         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mZ ddlmZ d	d
lmZ  G d de	      Zy)    N)deepcopy)CallableOptionalUnion)
BaseAWSLLM)AsyncHTTPHandlerHTTPHandler)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 dfded
ede	de
dededeeeej                  f      dededeeeef      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                  _/var/www/Befach/backend/env/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.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_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acompletionr:   clientc                    | 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 )Nr5   r   )OpenAILikeChatHandlerTF)r.   rJ   r   rM   r:   )r.   r/   r   r+   r    )r.   is_messages_apisagemaker_chat)r.   rJ   rE   api_keycustom_prompt_dictrK   rL   logging_objr   rO   rM   	logger_fnrN   encodingr:   custom_endpointcustom_llm_providerstreaming_decoderrP   )r-   r   r$   %litellm.llms.openai_like.chat.handlerrR   r   transform_requestrI   r   
completionr9   r:   )r(   r.   rJ   rK   rL   rZ   rX   r   rM   rN   rW   rY   rO   r:   rP   r+   r   inference_paramsr5   rR   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   rI   listr
   r   r   floathttpxTimeoutboolr	   r   r`    rf   r,   r   r      s    5,5,| )-( ( 	(
 ( (  ~(h :>!AE@
@
 @
 &	@

  @
 @
 @
 %u}} 456@
 @
 @
 {,<<=>@
rf   r   )r?   copyr   typingr   r   r   rm   !litellm.llms.bedrock.base_aws_llmr   &litellm.llms.custom_httpx.http_handlerr   r	   litellm.utilsr
   r   common_utilsr   transformationr   r   rp   rf   r,   <module>rx      s1      , ,  8 P 3 0 /b
: b
rf   