
    h                     T    d Z ddlZddlmZmZ ddlmZmZmZm	Z	m
Z
mZ  G d d      Zy)z
Transformation logic from Cohere's /v1/rerank format to Together AI's  `/v1/rerank` format. 

Why separate file? Make it easy to see how transformation works
    N)ListOptional)RerankBilledUnitsRerankResponseRerankResponseDocumentRerankResponseMetaRerankResponseResultRerankTokensc                       e Zd ZdedefdZy)TogetherAIRerankConfigresponsereturnc           	        
 t        di |j                  di       }t        di |j                  di       }t        ||      }|j                  d      }|t	        d|       g }|D ]  
t        
fddD              st	        d
       
j                  di       }|r%t        t        |j                  d	d
                  nd }t        t        
d         t        
d               }	|r||	d<   |j                  |	        t        |j                  d      xs t        t        j                               ||      S )Nusage)billed_unitstokensresultsz!No results found in the response=c              3   &   K   | ]  }|v  
 y w)N ).0keyresults     j/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/together_ai/rerank/transformation.py	<genexpr>z=TogetherAIRerankConfig._transform_response.<locals>.<genexpr>#   s     Msf}Ms   )indexrelevance_scorez&Missing required fields in the result=documenttext )r   r   r   id)r    r   metar   )r   getr
   r   
ValueErrorallr   strr	   intfloatappendr   uuiduuid4)selfr   _billed_units_tokensrerank_meta_resultsrerank_resultsdocument_datar   rerank_resultr   s             @r   _transform_responsez*TogetherAIRerankConfig._transform_response   sF   )FHLL",EF;gr!:;(mGT)1i)@@
KLL57FM0LMM #I&!RSS #JJz26M ! 'C0A0A&"0M,NO  1&/* %f->&? @M ,4j)!!-0/ 2 ||D!6S%6"
 	
    N)__name__
__module____qualname__dictr   r3   r   r4   r   r   r      s    )
D )
^ )
r4   r   )__doc__r)   typingr   r   litellm.types.rerankr   r   r   r   r	   r
   r   r   r4   r   <module>r<      s&     ! *
 *
r4   