Ë
    uPêjb  ã                   ó�   — d Z ddlmZmZmZ ddl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 eZneZ G d„ de«      Zy)zì
OpenRouter Embedding API Configuration.

This module provides the configuration for OpenRouter's Embedding API.
OpenRouter is OpenAI-compatible and supports embeddings via the /v1/embeddings endpoint.

Docs: https://openrouter.ai/docs
é    )ÚTYPE_CHECKINGÚAnyÚFinalN)ÚBaseEmbeddingConfig)ÚAllEmbeddingInputValues)ÚEmbeddingResponse)Ú convert_to_model_response_objecté   ©ÚOpenRouterException)ÚLoggingc                   ó*  — e Zd ZdZ	 	 ddededededededz  d	edz  d
efd„Z	 dd	edz  dedz  dededededz  d
efd„Z	dede
deded
ef
d„Zdedej                  dedededz  dededed
efd„Zded
efd„Zdedededed
ef
d„Zdededed
efd„Zy)ÚOpenrouterEmbeddingConfigzb
    Configuration for OpenRouter's Embedding API.

    Reference: https://openrouter.ai/docs
    NÚheadersÚmodelÚmessagesÚoptional_paramsÚlitellm_paramsÚapi_keyÚapi_baseÚreturnc                 ón   — ddl m}  |d«      xs d}	 |d«      xs d}
|	|
ddœ}|rd	|› �|d
<   i |¥|¥}|S )zé
        Validate environment and set up headers for OpenRouter API.

        OpenRouter requires:
        - Authorization header with Bearer token
        - HTTP-Referer header (site URL)
        - X-Title header (app name)
        r   )Ú
get_secretÚOR_SITE_URLzhttps://litellm.aiÚOR_APP_NAMEÚliteLLMzapplication/json)zHTTP-RefererzX-TitlezContent-TypezBearer ÚAuthorization)Úlitellmr   )Úselfr   r   r   r   r   r   r   r   Úopenrouter_site_urlÚopenrouter_app_nameÚopenrouter_headersÚmerged_headerss                úu/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/openrouter/embedding/transformation.pyÚvalidate_environmentz.OpenrouterEmbeddingConfig.validate_environment$   sm   € õ$ 	'ñ &0°Ó%>Ò%VÐBVÐÙ%/°Ó%>Ò%KÀ)Ðð 0Ø*Ø.ñ%
Ðñ Ø4;¸G¸9Ð2EÐ˜Ñ/ð !BÐ#5Ð A¸Ð AˆàÐó    Ústreamc                 ó8   — |r|j                  d«      }nd}|› d�S )zM
        Get the complete URL for OpenRouter Embedding API endpoint.
        ú/zhttps://openrouter.ai/api/v1z/embeddings)Úrstrip)r   r   r   r   r   r   r'   s          r$   Úget_complete_urlz*OpenrouterEmbeddingConfig.get_complete_urlK   s)   € ñ Ø—‘ sÓ+‰Hà5ˆHð �˜;Ð'Ð'r&   Úinputc                 ó~   — t        |t        «      r|g}|j                  d«      r|j                  ddd«      }||dœ|¥S )zW
        Transform embedding request to OpenRouter format (OpenAI-compatible).
        zopenrouter/Ú é   )r   r,   )Ú
isinstanceÚstrÚ
startswithÚreplace)r   r   r,   r   r   s        r$   Útransform_embedding_requestz5OpenrouterEmbeddingConfig.transform_embedding_requesta   sS   € ô �eœSÔ!Ø�GˆEð ×Ñ˜MÔ*Ø—M‘M -°°QÓ7ˆEð Øñ
ð ð
ð 	
r&   Úraw_responseÚmodel_responseÚlogging_objÚrequest_datac	                 óv   — |j                  |j                  ¬«       |j                  «       }	t        |	|d¬«      S )zZ
        Transform embedding response from OpenRouter format (OpenAI-compatible).
        )Úoriginal_responseÚ	embedding)Úresponse_objectÚmodel_response_objectÚresponse_type)Ú	post_callÚtextÚjsonr	   )
r   r   r5   r6   r7   r   r8   r   r   Úresponse_jsons
             r$   Útransform_embedding_responsez6OpenrouterEmbeddingConfig.transform_embedding_responsez   sA   € ð 	×Ñ°×0AÑ0AÐÔBð  ,×0Ñ0Ó2ˆä/Ø)Ø"0Ø%ô
ð 	
r&   c                 ó
   — g d¢S )zT
        Get list of supported OpenAI parameters for OpenRouter embeddings.
        )ÚtimeoutÚ
dimensionsÚencoding_formatÚuser© )r   r   s     r$   Úget_supported_openai_paramsz5OpenrouterEmbeddingConfig.get_supported_openai_params“   s   € ò
ð 	
r&   Únon_default_paramsÚdrop_paramsc                 óh   — |j                  «       D ]  \  }}|| j                  |«      v sŒ|||<   Œ  |S )z=
        Map OpenAI parameters to OpenRouter format.
        )ÚitemsrJ   )r   rK   r   r   rL   ÚparamÚvalues          r$   Úmap_openai_paramsz+OpenrouterEmbeddingConfig.map_openai_paramsž   sE   € ð /×4Ñ4Ó6ò 	/‰LˆE�5Ø˜×8Ñ8¸Ó?Ò?Ø).� Ò&ð	/ð Ðr&   Úerror_messageÚstatus_codec                 ó   — t        |||¬«      S )z<
        Get the error class for OpenRouter errors.
        )ÚmessagerS   r   r   )r   rR   rS   r   s       r$   Úget_error_classz)OpenrouterEmbeddingConfig.get_error_class­   s   € ô #Ø!Ø#Øô
ð 	
r&   )NN)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Údictr1   Úlistr%   Úboolr+   r   r4   ÚhttpxÚResponser   ÚLiteLLMLoggingObjrC   rJ   rQ   Úintr   rV   rI   r&   r$   r   r      sÉ  „ ñð #Ø#ñ%àð%ð ð%ð ð	%ð
 ð%ð ð%ð �t‘ð%ð ˜‘*ð%ð 
ó%ð\ #ñ(à˜‘*ð(ð �t‘ð(ð ð	(ð
 ð(ð ð(ð �t‘ð(ð 
ó(ð,
àð
ð 'ð
ð ð	
ð
 ð
ð 
ó
ð2
àð
ð —n‘nð
ð *ð	
ð
 'ð
ð �t‘ð
ð ð
ð ð
ð ð
ð 
ó
ð2	
°ð 	
¸ó 	
ðà ðð ðð ð	ð
 ðð 
óð
¨Sð 
¸sð 
ÈSð 
ÐUXô 
r&   r   )rZ   Útypingr   r   r   r^   Ú.litellm.llms.base_llm.embedding.transformationr   Úlitellm.types.llms.openair   Úlitellm.types.utilsr   Úlitellm.utilsr	   Úcommon_utilsr   Ú*litellm.litellm_core_utils.litellm_loggingr   Ú_LiteLLMLoggingObjr`   r   rI   r&   r$   ú<module>rj      sE   ðñ÷ -Ñ ,ã å NÝ =Ý 1Ý :å .áÝXà*ÑàÐôX
Ð 3õ X
r&   