Ë
    uPêjˆ  ã                   ó€   — d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
mZmZ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š
Translates from Cohere's `/v1/rerank` input format to Bedrock's `/rerank` input format.

Why separate file? Make it easy to see how transformation works
é    )ÚFinal)Úuuid)	Ú*BedrockRerankBedrockRerankingConfigurationÚBedrockRerankConfigurationÚ!BedrockRerankInlineDocumentSourceÚBedrockRerankModelConfigurationÚBedrockRerankQueryÚBedrockRerankRequestÚBedrockRerankSourceÚBedrockRerankTextDocumentÚBedrockRerankTextQuery)ÚRerankBilledUnitsÚRerankRequestÚRerankResponseÚRerankResponseMetaÚRerankResponseResultÚRerankTokensc                   óN   — e Zd Zdeeez     dee   fd„Zdede	fd„Z
dedefd„Zy)	ÚBedrockRerankConfigÚ	documentsÚreturnc           
      óê   — g }|D ]k  }t        |t        «      r2|j                  t        t	        t        |¬«      d¬«      d¬«      «       ŒE|j                  t        t	        |d¬«      d¬«      «       Œm |S )zT
        Transform the sources from RerankRequest format to Bedrock format.
        ©ÚtextÚTEXT)ÚtextDocumentÚtypeÚINLINE)ÚinlineDocumentSourcer   ÚJSON)ÚjsonDocumentr   )Ú
isinstanceÚstrÚappendr   r   r   )Úselfr   Ú_sourcesÚdocuments       úo/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/bedrock/rerank/transformation.pyÚ_transform_sourcesz&BedrockRerankConfig._transform_sources    sz   € ð ˆØ!ò 	ˆHÜ˜(¤CÔ(Ø—‘Ü'Ü-NÜ)BÈÔ)QØ!'ô.ð &ôõð —‘Ü'Ü-NÐ\dÐkqÔ-rØ%ôõð	ð$ ˆó    Úrequest_datac                 ó*  — | j                  |j                  «      }t        t        t	        |j
                  ¬«      d¬«      gt        t        t        |j                  ¬«      |j                  xs t        |j                  «      ¬«      d¬«      |¬«      S )	zT
        Transform the request from RerankRequest format to Bedrock format.
        r   r   )Ú	textQueryr   )ÚmodelArn)ÚmodelConfigurationÚnumberOfResultsÚBEDROCK_RERANKING_MODEL)ÚbedrockRerankingConfigurationr   )ÚqueriesÚrerankingConfigurationÚsources)r)   r   r
   r	   r   Úqueryr   r   r   ÚmodelÚtop_nÚlen)r%   r+   r&   s      r(   Ú_transform_requestz&BedrockRerankConfig._transform_request9   s‰   € ð ×1Ñ1°,×2HÑ2HÓIˆä#ä"Ü4¸,×:LÑ:LÔMØôðô $>Ü.XÜ'FÐP\×PbÑPbÔ'cØ$0×$6Ñ$6Ò$U¼#¸l×>TÑ>TÓ:Uô/ð /ô$ð ô
ð 	
r*   Úresponsec           	      óÈ  — t        di |j                  dddi«      ¤Ž}t        di |j                  di «      ¤Ž}t        ||¬«      }d}|j                  d«      }|r8|D �cg c]-  }t	        |j                  d«      |j                  d«      ¬	«      ‘Œ/ }}|€t        d
|› �«      ‚t        |j                  d«      xs t        t        j                  «       «      ||¬«      S c c}w )zã
        Transform the response from Bedrock into the RerankResponse format.

        example input:
        {"results":[{"index":0,"relevanceScore":0.6847912669181824},{"index":1,"relevanceScore":0.5980774760246277}]}
        ÚusageÚsearch_unitsé   )Úbilled_unitsÚtokensNÚresultsÚindexÚrelevanceScore)rC   Úrelevance_scorez!No results found in the response=Úid)rF   rB   Úmeta© )
r   Úgetr   r   r   Ú
ValueErrorr   r#   r   Úuuid4)r%   r;   Ú_billed_unitsÚ_tokensÚrerank_metaÚ_resultsÚbedrock_resultsÚresults           r(   Ú_transform_responsez'BedrockRerankConfig._transform_responseP   së   € ô *ÑW¨H¯L©L¸À>ÐSTÐBUÓ,VÑWˆÜ%ÑB¨¯©°W¸bÓ(AÑBˆÜ/¸]ÐSZÔ[ˆà6:ˆà!)§¡¨iÓ!8ˆÙð .öð
 ô	 %Ø Ÿ*™* WÓ-Ø$*§J¡JÐ/?Ó$@öðˆHð ð ÐÜÐ@ÀÀ
ÐKÓLÐLäØ�|‰|˜DÓ!Ò6¤S¬¯©«Ó%6ØØô
ð 	
ùòs   Á2CN)Ú__name__Ú
__module__Ú__qualname__Úlistr#   Údictr   r)   r   r
   r:   r   rR   rH   r*   r(   r   r      sK   „ ð¨D°°t±Ñ,<ð ÀÐFYÑAZó ð2
¨}ð 
ÐAUó 
ð.
¨Dð 
°^ô 
r*   r   N)Ú__doc__Útypingr   Úlitellm._uuidr   Úlitellm.types.llms.bedrockr   r   r   r   r	   r
   r   r   r   Úlitellm.types.rerankr   r   r   r   r   r   r   rH   r*   r(   ú<module>r]      s7   ðñõ å ÷
÷ 
õ 
÷÷ ÷O
ò O
r*   