
    ^h:                         S SK r S SKrS SKJrJrJrJr  S SKrS SKrS SK	J
r
JrJrJ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
KJrJrJr    SS\\   S\S\S\S\S\S\\   S\4S jjr " S S\5      r g)    N)AnyCallableOptionalUnion)AsyncHTTPHandlerHTTPHandler_get_httpx_clientget_async_httpx_client)ModelResponse)CustomStreamWrapper
get_secret   )
BaseAWSLLM)BedrockError   )AWSEventStreamDecoderMockResponseIterator	make_callclientapi_baseheadersdatamodelmessages	json_modefake_streamc	                     U c
  [        5       n U R                  UUUU(       + S9n	U	R                  S:w  a"  [        U	R                  U	R	                  5       S9eU(       ae  [
        R                  " 5       R                  UU	[
        R                  " 5       SU0 SUU[
        R                  [
        R                  S9n
[        XS9nO'[        US9nUR                  U	R                  S	S
95      nUR                  USSSU0S9  U$ )N)r   r   stream   status_codemessageT )r   responsemodel_responser   logging_objoptional_paramsapi_keyr   r   print_verboseencoding)r%   r   )r   i   )
chunk_sizezfirst stream response receivedcomplete_input_dict)inputr(   original_responseadditional_args)r	   postr!   r   readlitellmAmazonConverseConfig_transform_responser   r)   r*   r   r   
iter_bytes	post_call)r   r   r   r   r   r   r&   r   r   r$   r%   completion_streamdecoders                d/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/bedrock/chat/converse_handler.pymake_sync_callr:      s     ~"${{	  H s"x';';X]]_UU ((*>>"002#!//%% ? 
 	 "6)"
 (e4#..x/B/Bd/B/ST :.5	       c                     ^  \ rS rSrSU 4S jjrS\S\4S jrSS0 SSS4S\S	\S
\S\S\	S\S\
\\\R                  4      S\S\
\   S\S\
\   S\4S jjrSS0 S4S\S	\S
\S\S\	S\S\
\\\R                  4      S\S\
\   S\\\4   4S jjr   SS\S	\S
\
\   S\S\S\	S\S\S\
\\\R                  4      S\S\
\   S\
\\\4      4S jjrSrU =r$ )BedrockConverseLLMP   returnNc                 "   > [         TU ]  5         g )N)super__init__)self	__class__s    r9   rB   BedrockConverseLLM.__init__Q   s    r;   model_idc                 >    [         R                  R                  USS9$ )z
Double encode the model ID to ensure it matches the expected double-encoded format.
Args:
    model_id (str): The model ID to encode.
Returns:
    str: The double-encoded model ID.
r#   )safe)urllibparsequote)rC   rF   s     r9   encode_model_id"BedrockConverseLLM.encode_model_idT   s     ||!!(!44r;   Fr   r   r   r%   r)   r   timeoutr'   r   r   r   c                 \   #    [        UUUUUUU	UUS9	I S h  vN n[        UUSU	S9nU$  N7f)N)	r   r   r   r   r   r   r&   r   r   bedrockr7   r   custom_llm_providerr&   )r   r   )rC   r   r   r   r%   r)   r   rN   r*   r&   r   r'   litellm_params	logger_fnr   r   r   r   r7   streaming_responses                       r9   async_streaming"BedrockConverseLLM.async_streaming^   sX     * #,##
#
 

 1/ )#	
 "!#

s   ,*,c                   #    Ub  [        U[        5      (       dm  0 nUbE  [        U[        5      (       d  [        U[        5      (       a  [        R
                  " U5      nUUS'   [        U[        R                  R                  S9nOUn UR                  X>US9I S h  vN nUR                  5         [        R$                  " 5       R'                  UUU[        U
[(        5      (       a  U
OSU	SUUUUUS	9$  NW! [        R                   a9  nUR                  R                  n[        UUR                  R                   S9eS nAf[        R"                   a    [        SSS9ef = f7f)
NrN   )paramsllm_providerurlr   r   r      Timeout error occurred.Fr#   r   r$   r%   r   r&   r(   r   r   r)   r'   r*   )
isinstancer   floatinthttpxTimeoutr
   r2   LlmProvidersBEDROCKr0   raise_for_statusHTTPStatusErrorr$   r!   r   textTimeoutExceptionr3   r4   bool)rC   r   r   r   r%   r)   r   rN   r*   r&   r   r'   rS   rT   r   r   _paramsr$   err
error_codes                       r9   async_completion#BedrockConverseLLM.async_completion   sQ    $ >F4D!E!EG"gu--GS1I1I#mmG4G%,	"+W-A-A-I-IF F	S#[[XT[RRH%%' ++-AA)'5565#'+ B 
 	
 S$$ 	R11J:s||?P?PQQ%% 	S38QRR	Ss=   BE%C8 C6C8 3AE%6C8 8E"4E  "E""E%custom_prompt_dictacompletionrS   extra_headersc                 t	    SSK Jn  SSKJn  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b  U R                  US9nOUnUSL a  SU;   a  S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      n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#U R                  UUUS9u  n$n%Ub  USL a  U(       d  U$ SU S3n$U% SU S3n%OU$ SU S3n$U% SU S3n%U" U#S U5      n&[        R                   " 5       R#                  UUU	US!9n'[$        R&                  " U'5      n(S"S#0n)Ub  S"S#0UEn)U" S$U$U(U)S%9n*U&R)                  U*5        Ub  S&U;   a  US&   U*R*                  S&'   U*R-                  5       n+UR/                  US'U(U%U+R*                  S(.S)9  U
(       al  [        U[0        5      (       a  S nUSL a)  U R3                  UUU(U%UUUUU	SUUU+R*                  UUUUS*9$ U R5                  UUU(U%UUUUU	UUUU+R*                  UUS+9$ Ub  [        U[6        5      (       aV  0 n,UbE  [        U[8        5      (       d  [        U[:        5      (       a  [<        R>                  " U5      nUU,S,'   [A        U,5      nOUnUbH  USL aC  [C        Ub  [        U[0        5      (       a  UOS U%U+R*                  U(UUUUUS-9	n-[E        U-US US.9n.U.$  URG                  U%U+R*                  U(S/9n/U/RI                  5         [        R                   " 5       RW                  UU/U[        U[X        5      (       a  UOS	US'U(UUU	US39$ ! [         a    [        S5      ef = f! [<        RJ                   a9  n0U0RL                  RN                  n1[Q        U1U0RL                  RR                  S09eS n0A0f[<        RT                   a    [Q        S1S2S09ef = f)4Nr   )	SigV4Auth)
AWSRequest)Credentialsz7Missing boto3 to call bedrock. Run 'pip install boto3'.r   rF   r   Fr   )rF   Tai21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)	rz   ry   r{   r|   r~   r   r}   r   r   )r   r   r|   z/model/z/converse-streamz	/converserP   )r   r   r'   rS   zContent-Typezapplication/jsonPOST)methodr\   r   r   Authorizationr#   )r,   r   r   )r-   r(   r/   )r   r   r   r   r%   r)   r*   r&   r'   r   rS   rT   r   rN   r   r   r   )r   r   r   r   r%   r)   r*   r&   r'   r   rS   rT   r   rN   r   rN   )	r   r   r   r   r   r   r&   r   r   rQ   r[   r    r]   r^   r_   )-botocore.authru   botocore.awsrequestrv   botocore.credentialsrw   ImportErrorpopgetrL   r   r`   strget_credentialsget_runtime_endpointr2   r3   _transform_requestjsondumpsadd_authr   preparepre_callr   rV   ro   r   ra   rb   rc   rd   r	   r:   r   r0   rg   rh   r$   r!   r   ri   rj   r4   rk   )2rC   r   r   r   rq   r%   r)   r*   r&   r'   rr   rN   rS   rT   rs   r   ru   rv   rw   r   modelIdr   r   ry   rz   r{   r|   r}   r~   r   r   r   r   litellm_aws_region_namestandard_aws_region_namecredentialsendpoint_urlproxy_endpoint_urlsigv4_datar   r   requestpreppedrl   r7   rU   r$   rm   rn   s2                                                     r9   
completionBedrockConverseLLM.completion   s   $	Y/68
 !$$Xt4!%%j$7%))-?#''U;	**G*<GGT>f/K !0 3 34KT R+//0CTJ+//0CTJ)--.?F'++OTB*../A4H*../A4H'6':':*D(
$ "1!4!45Mt!T*../A4H "&01BD&I#&2z'8 8 #:'1,'E$'3
(#9 9 #;&"-#'#7#7/"7/+--'#9- $8 
$
 ,0+D+D)E+ ,E ,
((
 6T>;*^77);KLL$6#7wwiGW!X*^77)9EL$6#7wwiy!Q+y/B ,,.AA+)	 B 
 zz%  "#56$%'9K]KG|$
 	w%/]*J/<_/MGOOO,//# 	'+."?? 	 	
 &+..~++%/#1"/% +$3#1'#OO#!' +# ,  ( ((!+-+!' /-# )  $ >Z0@AAG"gu--GS1I1I#mmG4G%,	"&w/FF&D. . )j.M.M +!'#'! "5"3$-'	" &%	S{{'97??Y]{^H%%' ++-AA)'5565#'+ B 
 	
S  	YWXX	YF $$ 	R11J:s||?P?PQQ%% 	S38QRR	Ss#   P4 +Q 4Q
R7!4R"R7 )r?   N)NNN)__name__
__module____qualname____firstlineno__rB   r   rL   listr   r   r   r   ra   rc   rd   dictr   rk   r   rV   ro   r   r   __static_attributes____classcell__)rD   s   @r9   r=   r=   P   s&   5 5 5. -1!$)%&"&" &" 	&"
 &&"  &" &" %u}} 456&" &"  )*!&"" #&"$ D>%&"& 
'&"j -1!3
3
 3
 	3

 &3
  3
 3
 %u}} 4563
 3
  )*!3
" 
}11	2#3
F (,AE!k
k
 k
 3-	k

 !k
 &k
  k
 k
 k
 %u}} 456k
 k
  ~k
  /<=>!k
 k
r;   r=   )FF)!r   rI   typingr   r   r   r   rc   r2   &litellm.llms.custom_httpx.http_handlerr   r   r	   r
   litellm.types.utilsr   litellm.utilsr   r   base_aws_llmr   common_utilsr   invoke_handlerr   r   r   r   r   r   rk   r:   r=   r   r;   r9   <module>r      s      1 1    . 9 % ' R R !&7[!77 7 	7
 7 7 ~7 7tV
 V
r;   