
    iS                         d dl Z d dlmZmZmZmZmZmZmZ d dl	Z	d dl
Z
d dlmZ d dlmZmZmZmZ d dlmZ d dlmZ d dlmZ dd	lmZ dd
lmZ ddlmZ erd dlm Z  neZ  G d de      Z!y)    N)TYPE_CHECKINGAnyDictListOptionalUnioncast)Logging)AsyncHTTPHandlerHTTPHandler_get_httpx_clientget_async_httpx_client)BedrockPreparedRequest)RerankRequest)RerankResponse   )
BaseAWSLLM)BedrockError   )BedrockRerankConfig)AWSPreparedRequestc                    R   e Zd Z	 	 ddedeeeej                  f      dee	   fdZ
	 	 	 	 	 	 	 	 	 ddededeeeeeef   f      d	ed
edee   deee      dee   dee   dee   deeeej                  f      dee   dee   deeee	f      defdZdedee   dee   ded	edefdZy)BedrockRerankHandlerNprepared_requesttimeoutclientc                   K   |$t        t        j                  j                        }	 |j	                  |d   t        |d   j                        |d   |       d {   }|j                          t               j!                  |j#                               S 7 ;# t        j                  $ r<}|j                  j                  }t        ||j                  j                        d }~wt        j                  $ r t        dd      w xY ww)	N)llm_providerendpoint_urlpreppedbodyurlheadersdatar   status_codemessage  Timeout error occurred.)r   litellmLlmProvidersBEDROCKpostdictr$   raise_for_statushttpxHTTPStatusErrorresponser'   r   textTimeoutExceptionr   _transform_responsejson)selfr   r   r   r3   err
error_codes          t/Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/llms/bedrock/rerank/handler.pyarerankzBedrockRerankHandler.arerank   s      >+9M9M9U9UVF	S#[[$^4-i8@@A%f-	 )  H %%' #$88II $$ 	R11J:s||?P?PQQ%% 	S38QRR	Ss:   'D4B BB 3'DB D
/7C&&$D

Dmodelquery	documentsoptional_paramslogging_objtop_nrank_fieldsreturn_documentsmax_chunks_per_doc	_is_asyncapi_baseextra_headersreturnc           
         t        ||||||      }t               j                  |      }| j                  ||||t	        t
        |            }|j                  |d||d   t        |d   j                        d       |
r-| j                  |||t        |t              r|      S d       S |t        |t              s
t               }	 |j                  |d   t        |d   j                        |d	   |
      }|j                          |j-                  |j(                  d       |j/                         }t               j1                  |      S # t        j                   $ r<}|j"                  j$                  }t'        ||j"                  j(                        d }~wt        j*                  $ r t'        dd      w xY w)N)r=   r>   r?   rB   rC   rD   )r=   r@   rG   rH   r%    r   r    )complete_input_dictrG   r$   )inputapi_keyadditional_args)r   r   r!   r"   r&   r)   r*   )original_responserN   )r   r   _transform_request_prepare_requestr	   r/   pre_callr$   r<   
isinstancer   r   r   r.   r0   r1   r2   r3   r'   r   r4   r5   	post_callr7   r6   )r8   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r   rG   rH   r   request_datar%   r   r3   r9   r:   response_jsons                         r;   rerankzBedrockRerankHandler.rerank5   s   " %#-
 #$77E00+'dD! 1 
 	'+,^< 0 ; C CD 	 	
 << 0'TZTfkuv|  O  lP&<  [  [  VZ<  [  [>FK!@&(F	S{{$^4-i8@@A%f-	 # H %%' 	&mm 	 	

 !"$88GG $$ 	R11J:s||?P?PQQ%% 	S38QRR	Ss   AE G&7F$Gr%   c                 8   	 ddl m} ddlm} | j                  ||      }| j                  ||j                  |j                        \  }	}
|
j                  dd      }
|
 d}
 ||j                  d	|j                        }t        j                  |      j                  d
      }ddi}|ddi|} |d|
||      }|j                  |       |d|v r|d   |j                  d<   |j!                         }t#        |
|||      S # t        $ r t	        d      w xY w)Nr   )	SigV4Auth)
AWSRequestz7Missing boto3 to call bedrock. Run 'pip install boto3'.)rG   aws_bedrock_runtime_endpointaws_region_namezbedrock-runtimezbedrock-agent-runtimez/rerankbedrockzutf-8zContent-Typezapplication/jsonPOST)methodr#   r%   r$   Authorization)r   r    r!   r%   )botocore.authrZ   botocore.awsrequestr[   ImportError*_get_boto_credentials_from_optional_paramsget_runtime_endpointr\   r]   replacecredentialsr7   dumpsencodeadd_authr$   preparer   )r8   r=   rG   rH   r%   r@   rZ   r[   boto3_credentials_info_proxy_endpoint_urlsigv4r!   r$   requestr    s                   r;   rR   z%BedrockRerankHandler._prepare_request~   sc   	Y/6 "&!P!PU"

 !% 9 9)?)\)\2BB !: !

 0776
 !337;".."22
 zz$&&w/!#56$%'9K]KG1g
 	w%/]*J/<_/MGOOO,//#%+	
 	
K  	YWXX	Ys   D D)NN)	NNTNFNNNN)__name__
__module____qualname__r   r   r   floatr1   Timeoutr   r<   strr   r   r   r/   LitellmLoggingintboolr   r   rX   rR        r;   r   r      s    :>-1	J0J %u}} 456J )*	J>  $+/+/,0$)9="&(,AEGHGH GH c4S>123	GH
 GH $GH }GH d3i(GH #4.GH %SMGH D>GH %u}} 456GH 3-GH  ~GH {,<<=>GH  
!GHR5
5
 3-5
  ~	5

 5
 5
 
 5
r|   r   )"r7   typingr   r   r   r   r   r   r	   r1   r+   *litellm.litellm_core_utils.litellm_loggingr
   rx   &litellm.llms.custom_httpx.http_handlerr   r   r   r   litellm.types.llms.bedrockr   litellm.types.rerankr   litellm.types.utilsr   base_aws_llmr   common_utilsr   transformationr   rc   r   r   r{   r|   r;   <module>r      sR     H H H   P  > . . % ' /6W
: W
r|   