
    g                         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 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)_get_httpx_clientget_async_httpx_client)BedrockPreparedRequest)RerankRequest)RerankResponse   )
BaseAWSLLM)BedrockError   )BedrockRerankConfig)AWSPreparedRequestc                       e Zd Zd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   dee
   defdZdee   dee
   de
de
def
dZy)BedrockRerankHandlerprepared_requestc                   K   t        t        j                  j                        }	 |j	                  |d   |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datastatus_codemessage  Timeout error occurred.)r   litellmLlmProvidersBEDROCKpostr    raise_for_statushttpxHTTPStatusErrorresponser#   r   textTimeoutExceptionr   _transform_responsejson)selfr   clientr.   err
error_codes         X/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/bedrock/rerank/handler.pyarerankzBedrockRerankHandler.arerank   s      (W5I5I5Q5QR	S#[[-=n-MWghqWrWzWz  BR  SY  BZ[  [  [H%%' #$88II [$$ 	R11J:s||?P?PQQ%% 	S38QRR	Ss:   %D*B BB ''DB C>#7C$C>>DN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   |d   j                  d       |
r| j                  |      S t               }	 |j                  |d   |d   j                  |d   	      }|j                          t               j'                  |j)                               S # t        j                  $ r<}|j                  j                  }t!        ||j                  j"                  
      d }~wt        j$                  $ r t!        dd
      w xY w)N)r9   r:   r;   r>   r?   r@   )r<   rC   rD   r!    r   r   )complete_input_dictrC   r    )inputapi_keyadditional_argsr   r   r"   r%   r&   )r   r   _transform_request_prepare_requestr	   dictpre_callr    r8   r   r*   r+   r,   r-   r.   r#   r   r/   r0   r1   r2   )r3   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   request_datar!   r   r4   r.   r5   r6   s                       r7   rerankzBedrockRerankHandler.rerank+   s|    %#-
 #$77E00+'dD!	 1 
 	'+,^<+I6>> 	 	
 << 011"$	S{{'7'GQabkQlQtQt  |L  MS  |T{  UH%%' #$88II $$ 	R11J:s||?P?PQQ%% 	S38QRR	Ss   7C2 2E 7D<<$E r!   c                 6   	 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'.)rC   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.authrS   botocore.awsrequestrT   ImportError*_get_boto_credentials_from_optional_paramsget_runtime_endpointrU   rV   replacecredentialsr2   dumpsencodeadd_authr    preparer   )r3   rC   rD   r!   r<   rS   rT   boto3_credentials_info_proxy_endpoint_urlsigv4r   r    requestr   s                  r7   rM   z%BedrockRerankHandler._prepare_requestd   sa   	Y/6 "&!P!P"

 !% 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)NNTNFNN)__name__
__module____qualname__r   r8   strr   r   r   r   rN   LitellmLoggingr   intboolr   rQ   rM        r7   r   r      s1   J0J.  $+/+/,0$)"&(,7J7J 7J c4S>123	7J
 7J $7J }7J d3i(7J #4.7J %SM7J D>7J 3-7J  ~7J 
7Jr4
3-4
  ~4
 	4

 4
 
 4
rs   r   ) r2   typingr   r   r   r   r   r   r	   r,   r'   *litellm.litellm_core_utils.litellm_loggingr
   ro   &litellm.llms.custom_httpx.http_handlerr   r   litellm.types.llms.bedrockr   litellm.types.rerankr   litellm.types.utilsr   base_aws_llmr   common_utilsr   transformationr   r\   r   r   rr   rs   r7   <module>r}      sM     H H H   P > . . % ' /6~
: ~
rs   