o
    ưia                     @   s   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r9dd
lmZ eZneZG dd deZdS )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OptionalN)BaseEmbeddingConfig)AllEmbeddingInputValues)EmbeddingResponse) convert_to_model_response_object   OpenRouterException)Loggingc                   @   s  e Zd ZdZ		d#dedededededee d	ee d
efddZ	d$d	ee dee dedededee	 d
efddZ
dedededed
ef
ddZdedejdededee dededed
efddZded
efddZdededede	d
ef
ddZded eded
efd!d"ZdS )%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                 C   sR   ddl m} |dpd}	|dp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_secretZOR_SITE_URLzhttps://litellm.aiZOR_APP_NAMEZliteLLMzapplication/json)zHTTP-RefererzX-TitlezContent-TypezBearer Authorization)Zlitellmr   )selfr   r   r   r   r   r   r   r   Zopenrouter_site_urlZopenrouter_app_nameZopenrouter_headersZmerged_headers r   g/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/openrouter/embedding/transformation.pyvalidate_environment#   s   z.OpenrouterEmbeddingConfig.validate_environmentstreamc                 C   s   |r| 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   r   r   r   get_complete_urlJ   s   
z*OpenrouterEmbeddingConfig.get_complete_urlinputc                 C   s6   t |tr|g}|dr|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   r   r   r   transform_embedding_request`   s   

z5OpenrouterEmbeddingConfig.transform_embedding_requestraw_responsemodel_responselogging_objrequest_datac	           
      C   s$   |j |jd | }	t|	|ddS )zZ
        Transform embedding response from OpenRouter format (OpenAI-compatible).
        )original_responseZ	embedding)Zresponse_objectZmodel_response_objectZresponse_type)Z	post_calltextjsonr   )
r   r   r(   r)   r*   r   r+   r   r   Zresponse_jsonr   r   r   transform_embedding_responsey   s   z6OpenrouterEmbeddingConfig.transform_embedding_responsec                 C   s   g dS )zT
        Get list of supported OpenAI parameters for OpenRouter embeddings.
        )timeout
dimensionsZencoding_formatuserr   )r   r   r   r   r   get_supported_openai_params   s   z5OpenrouterEmbeddingConfig.get_supported_openai_paramsnon_default_paramsdrop_paramsc                 C   s,   |  D ]\}}|| |v r|||< q|S )z=
        Map OpenAI parameters to OpenRouter format.
        )itemsr3   )r   r4   r   r   r5   paramvaluer   r   r   map_openai_params   s
   
z+OpenrouterEmbeddingConfig.map_openai_paramserror_messagestatus_codec                 C   s   t |||dS )z<
        Get the error class for OpenRouter errors.
        )messager;   r   r
   )r   r:   r;   r   r   r   r   get_error_class   s
   z)OpenrouterEmbeddingConfig.get_error_class)NN)N)__name__
__module____qualname____doc__dictr$   listr   r   boolr   r   r'   httpxResponser   LiteLLMLoggingObjr/   r3   r9   intr   r=   r   r   r   r   r      s    	
.

	


r   )rA   typingr   r   r   rE   Z.litellm.llms.base_llm.embedding.transformationr   Zlitellm.types.llms.openair   Zlitellm.types.utilsr   Zlitellm.utilsr   Zcommon_utilsr   Z*litellm.litellm_core_utils.litellm_loggingr   Z_LiteLLMLoggingObjrG   r   r   r   r   r   <module>   s    