o
    ưi                     @   s   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 deZ!dS )    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                    @   s  e Zd Z		ddedeeeejf  dee	 fd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dZd	edee dee dededefddZdS )BedrockRerankHandlerNprepared_requesttimeoutclientc              
      s   |d u rt tjjd}z|j|d t|d j|d |dI d H }|  W n& tj	y@ } z|j
j}t||j
jdd }~w tjyM   tdddw t | S )	N)Zllm_providerendpoint_urlpreppedbodyurlheadersdatar   status_codemessage  Timeout error occurred.)r   litellmZLlmProvidersZBEDROCKpostdictr    raise_for_statushttpxHTTPStatusErrorresponser#   r   textTimeoutExceptionr   _transform_responsejson)selfr   r   r   r-   err
error_code r5   Z/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/bedrock/rerank/handler.pyarerank   s   *zBedrockRerankHandler.arerankTFmodelquery	documentsoptional_paramslogging_objtop_nrank_fieldsreturn_documentsmax_chunks_per_doc	_is_asyncapi_baseextra_headersreturnc              
   C   sH  t ||||||d}t |}| j||||tt|d}|j|d||d t|d jdd |
rG| j|||d urCt	|t
rC|dS d dS |d u sPt	|tsSt }z|j|d t|d j|d	 |d
}|  W n& tjy } z|jj}t||jjdd }~w tjy   tdddw |j|jdd | }t |S )N)r8   r9   r:   r=   r>   r?   )r8   r;   rB   rC   r!    r   r   )Zcomplete_input_dictrB   r    )inputapi_keyZadditional_args)r   r   r   r   r"   r%   r&   )original_responserG   )r   r   Z_transform_request_prepare_requestr   r)   Zpre_callr    r7   
isinstancer
   r   r   r(   r*   r+   r,   r-   r#   r   r.   r/   Z	post_callr1   r0   )r2   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   r   rB   rC   r   Zrequest_datar!   r   r-   r3   r4   Zresponse_jsonr5   r5   r6   rerank0   sX   
*$zBedrockRerankHandler.rerankr!   c                 C   s   zddl m} ddlm} W n ty   tdw | ||}| j||j|jd\}	}
|
	dd}
|
 d}
||j
d	|j}t|d
}ddi}|d urUddi|}|d|
||d}|| |d urqd|v rq|d |jd< | }t|
|||dS )Nr   )	SigV4Auth)
AWSRequestz7Missing boto3 to call bedrock. Run 'pip install boto3'.)rB   aws_bedrock_runtime_endpointaws_region_namezbedrock-runtimezbedrock-agent-runtimez/rerankZbedrockzutf-8zContent-Typezapplication/jsonPOST)methodr   r!   r    Authorization)r   r   r   r!   )Zbotocore.authrL   botocore.awsrequestrM   ImportErrorZ*_get_boto_credentials_from_optional_paramsZget_runtime_endpointrN   rO   replacecredentialsr1   dumpsencodeZadd_authr    preparer   )r2   r8   rB   rC   r!   r;   rL   rM   Zboto3_credentials_info_Zproxy_endpoint_urlZsigv4r   r    requestr   r5   r5   r6   rI   t   sP   


z%BedrockRerankHandler._prepare_request)NN)	NNTNFNNNN)__name__
__module____qualname__r   r   r   floatr+   Timeoutr
   r7   strr   r   r   r)   LitellmLoggingintboolr   r   rK   rI   r5   r5   r5   r6   r      s~    

	

Dr   )"r1   typingr   r   r   r   r   r   r   r+   r'   Z*litellm.litellm_core_utils.litellm_loggingr	   rb   Z&litellm.llms.custom_httpx.http_handlerr
   r   r   r   Zlitellm.types.llms.bedrockr   Zlitellm.types.rerankr   Zlitellm.types.utilsr   Zbase_aws_llmr   Zcommon_utilsr   Ztransformationr   rS   r   r   r5   r5   r5   r6   <module>   s     $