
    g'                     z    d Z ddlmZmZmZmZm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mZ  G d d	e	      Zy)
zY
Re rank api

LiteLLM supports the re rank API format, no paramter transformation occurs
    )AnyDictListOptionalUnionN)BaseLLM)_get_httpx_clientget_async_httpx_client)TogetherAIRerankConfig)RerankRequestRerankResponsec                       e Zd Z	 	 	 	 	 ddedededeeeeeef   f      dee	   deee      dee
   d	ee	   d
ee
   defdZdeeef   dedefdZy)TogetherAIRerankNmodelapi_keyquery	documentstop_nrank_fieldsreturn_documentsmax_chunks_per_doc	_is_asyncreturnc
                 n   t               }
t        ||||||      }|j                  d      }|t        d      |	r| j	                  ||      S |
j                  dddd| d|	      }|j                  d
k7  rt        |j                        |j                         }t               j                  |      S )N)r   r   r   r   r   r   T)exclude_nonez.TogetherAI does not support max_chunks_per_doc"https://api.together.xyz/v1/rerankapplication/jsonBearer acceptzcontent-typeauthorizationheadersjson   )r	   r   dict
ValueErrorasync_rerankpoststatus_code	Exceptiontextr$   r   _transform_response)selfr   r   r   r   r   r   r   r   r   clientrequest_datarequest_data_dictresponse_json_responses                  \/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/together_ai/rerank/handler.pyrerankzTogetherAIRerank.rerank   s     #$$#-
 )--4-@)MNN$$%6@@;;0, 2#*7)!4
 #  
 3&HMM**!%';;NKK    r1   c                 6  K   t        t        j                  j                        }|j	                  dddd| d|       d {   }|j
                  dk7  rt        |j                        |j                         }t               j                  |      S 7 Qw)N)llm_providerr   r   r   r   r"   r%   )r
   litellmLlmProvidersTOGETHER_AIr)   r*   r+   r,   r$   r   r-   )r.   r1   r   r/   r2   r3   s         r4   r(   zTogetherAIRerank.async_rerankD   s     
 ( --99
  0, 2#*7)!4
 # % 
 
 3&HMM**!%';;NKK
s   ABBAB)NNTNF)__name__
__module____qualname__strr   r   r   r   r   intboolr   r5   r(    r6   r4   r   r      s      $+/+/,0$).L.L .L 	.L
 c4S>123.L }.L d3i(.L #4..L %SM.L D>.L 
.L`LS>L L 
	Lr6   r   )__doc__typingr   r   r   r   r   r9   litellm.llms.baser   &litellm.llms.custom_httpx.http_handlerr	   r
   .litellm.llms.together_ai.rerank.transformationr   litellm.types.rerankr   r   r   rB   r6   r4   <module>rI      s6    4 3  % R >ILw ILr6   