
    h                         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                       e Zd Z	 dde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   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clientc                 
  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   r   r1   err
error_codes         _/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/bedrock/rerank/handler.pyarerankzBedrockRerankHandler.arerank   s     
 >+9M9M9U9UVF	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 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   |d   j                  d       |
r,| j                  ||t        |t              r|      S d       S |t        |t              s
t               }	 |j                  |d   |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=   r@   rA   rB   )r;   r>   rE   rF   r$    r   r   )complete_input_dictrE   r#   )inputapi_keyadditional_args)r   r    r!   r%   r(   r)   )original_responserL   )r   r   _transform_request_prepare_requestr	   dictpre_callr#   r:   
isinstancer   r   r   r-   r.   r/   r0   r1   r&   r   r2   r3   	post_callr5   r4   )r6   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r   request_datar$   r   r1   r7   r8   response_jsons                        r9   rerankzBedrockRerankHandler.rerank/   s     %#-
 #$77E00+'dD! 1 
 	'+,^<+I6>> 	 	
 << 06CUZdekm}Z~<  J  J  EI<  J  J>FK!@&(F	S{{'7'GQabkQlQtQt  |L  MS  |T{  UH%%' 	&mm 	 	

 !"$88GG $$ 	R11J:s||?P?PQQ%% 	S38QRR	Ss   7D? ?F-7F		$F-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'.)rE   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.authrY   botocore.awsrequestrZ   ImportError*_get_boto_credentials_from_optional_paramsget_runtime_endpointr[   r\   replacecredentialsr5   dumpsencodeadd_authr#   preparer   )r6   r;   rE   rF   r$   r>   rY   rZ   boto3_credentials_info_proxy_endpoint_urlsigv4r    r#   requestr   s                   r9   rP   z%BedrockRerankHandler._prepare_requestr   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)N)NNTNFNNN)__name__
__module____qualname__r   r   r   r:   strr   r   r   r   rQ   LitellmLoggingintboolr   r   rW   rP        r9   r   r      s~    .2J0J )*J2  $+/+/,0$)"&(,AEAHAH AH c4S>123	AH
 AH $AH }AH d3i(AH #4.AH %SMAH D>AH 3-AH  ~AH {,<<=>AH 
AHF5
5
 3-5
  ~	5

 5
 5
 
 5
ry   r   )"r5   typingr   r   r   r   r   r   r	   r/   r*   *litellm.litellm_core_utils.litellm_loggingr
   ru   &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   rb   r   r   rx   ry   r9   <module>r      sR     H H H   P  > . . % ' /6K
: K
ry   