
    g:                         d dl Z d dlZd dlmZmZmZmZ d dlZd dlZd dl	m
Z
mZmZmZ d dlmZ d dlmZmZ ddlmZ ddlmZ d	d
lmZmZmZ 	 	 ddee   dedededededee   defdZ G d de      Z y)    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	                    | 
t               } | j                  ||||       }	|	j                  dk7  r%t        |	j                  |	j	                               |rjt        j                         j                  ||	t        j                         d|i d||t
        j                  t
        j                        }
t        |
|      }n-t        |      }|j                  |	j                  d	
            }|j                  |ddd|i       |S )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                _/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/bedrock/chat/converse_handler.pymake_sync_callr:      s"    ~"${{	  H s"x';';X]]_UU ((*>>"002#!//%% ? 
 	 "6)Y"
 (e4#..x/B/Bd/B/ST :.5	       c                       e Zd Zd fdZdedefdZddi dd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	e   dede	e   defdZ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	e   de
eef   fdZ	 	 	 ddeded	e	e   ded
edededede	e
eej                  f      dede	e   de	e
eef      fdZ xZS )BedrockConverseLLMreturnNc                 "    t         |           y )N)super__init__)self	__class__s    r9   rA   zBedrockConverseLLM.__init__Q   s    r;   model_idc                 D    t         j                  j                  |d      S )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)rB   rD   s     r9   encode_model_idz"BedrockConverseLLM.encode_model_idT   s     ||!!(!44r;   Fr   r   r   r%   r)   r   timeoutr'   r   r   r   c                 h   K   t        |||||||	||	       d {   }t        ||d|	      }|S 7 w)N)	r   r   r   r   r   r   r&   r   r   bedrockr7   r   custom_llm_providerr&   )r   r   )rB   r   r   r   r%   r)   r   rK   r*   r&   r   r'   litellm_params	logger_fnr   r   r   r   r7   streaming_responses                       r9   async_streamingz"BedrockConverseLLM.async_streaming^   sY     * #,##
#
 

 1/ )#	
 "!#

s   202c                   K   |t        |t              sdi }|:t        |t              st        |t              rt	        j
                  |      }||d<   t        |t        j                  j                        }n|}	 |j                  |||       d {   }|j                          t        j$                         j'                  |||t        |
t(              r|
nd|	d|||||	      S 7 T# t        j                  $ r<}|j                  j                  }t        ||j                  j                         d }~wt        j"                  $ r t        dd      w xY ww)
NrK   )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)rB   r   r   r   r%   r)   r   rK   r*   r&   r   r'   rP   rQ   r   r   _paramsr$   err
error_codes                       r9   async_completionz#BedrockConverseLLM.async_completion   sH    $ >F4D!EG"gu-GS1I#mmG4G%,	"+W-A-A-I-IF F	S#[[XwT[RRH%%' ++-AA)'565#'+ B 
 	
 S$$ 	R11J:s||?P?PQQ%% 	S38QRR	Ss=   A9E<C* C(C* (A E(C* *E=7D44$EEcustom_prompt_dictacompletionrP   extra_headersc                 .	   	 ddl m} ddlm} ddlm} |	j                  dd       }|	j                  dd       }|	j                  dd	      }|	j                  d
d	      }|| j                  |      }n|}|du rd|v r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       }|	j                  dd       } |Dt        dd       }!|!t        |!t              r|!}t        dd       }"|"t        |"t              r|"}|d}| j                  ||||||||| 	      }#| j                  |||      \  }$}%||du r|s|$ d| d}$|% d| d}%n|$ d| d}$|% d| d}% ||#d |      }&t        j                          j#                  |||	|!      }'t%        j&                  |'      }(d"d#i})|d"d#i|}) |d$|$|(|)%      }*|&j)                  |*       |d&|v r|d&   |*j*                  d&<   |*j-                         }+|j/                  |d'|(|%|+j*                  d()       |
rlt        |t0              rd }|du r,| j3                  |||(|%|||||	d|||+j*                  ||||*      S | j5                  |||(|%|||||	||||+j*                  ||+      S |t        |t6              rJi },|:t        |t8              st        |t:              rt=        j>                  |      }||,d,<   tA        |,      }n|}|G|du rCtC        |t        |t0              r|nd |%|+j*                  |(|||||-	      }-tE        |-|d |.      }.|.S 	 |jG                  |%|+j*                  |(/      }/|/jI                          t        j                          jW                  ||/|t        |tX              r|nd	|d'|(|||	|3      S # t        $ r t        d      w xY w# t<        jJ                  $ r<}0|0jL                  jN                  }1tQ        |1|0jL                  jR                  0      d }0~0wt<        jT                  $ r tQ        d1d20      w xY w)4Nr   )	SigV4Auth)
AWSRequest)Credentialsz7Missing boto3 to call bedrock. Run 'pip install boto3'.r   rD   r   Fr   )rD   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)	ru   rt   rv   rw   ry   rz   rx   r|   r}   )r   r{   rw   z/model/z/converse-streamz	/converserM   )r   r   r'   rP   zContent-Typezapplication/jsonPOST)methodrX   r   r   Authorizationr#   )r,   r   r   )r-   r(   r/   )r   r   r   r   r%   r)   r*   r&   r'   r   rP   rQ   r   rK   r   r   r   )r   r   r   r   r%   r)   r*   r&   r'   r   rP   rQ   r   rK   r   rK   )	r   r   r   r   r   r   r&   r   r   rN   rW   r    rY   rZ   r[   )-botocore.authrp   botocore.awsrequestrq   botocore.credentialsrr   ImportErrorpopgetrJ   r   r\   strget_credentialsget_runtime_endpointr2   r3   _transform_requestjsondumpsadd_authr   preparepre_callr   rS   rk   r   r]   r^   r_   r`   r	   r:   r   r0   rc   rd   r$   r!   r   re   rf   r4   rg   )2rB   r   r   r   rl   r%   r)   r*   r&   r'   rm   rK   rP   rQ   rn   r   rp   rq   rr   r   modelIdr   r   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   litellm_aws_region_namestandard_aws_region_namecredentialsendpoint_urlproxy_endpoint_urlsigv4_datar   r   requestpreppedrh   r7   rR   r$   ri   rj   s2                                                     r9   
completionz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 #:'1,'E$'3
(#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G"gu-GS1I#mmG4G%,	"&w/FF&D. . )j.M +!'#'! "5"3$-'	" &%	S{{'97??Y]{^H%%' ++-AA)'565#'+ B 
 	
S  	YWXX	YF $$ 	R11J:s||?P?PQQ%% 	S38QRR	Ss#   P  .P& P#&R97Q00$R)r>   N)NNN)__name__
__module____qualname__rA   r   rJ   listr   r   r   r   r]   r_   r`   dictr   rg   r   rS   rk   r   r   __classcell__)rC   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
r;   r=   )FF)!r   rG   typingr   r   r   r   r_   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   rg   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;   