
    g                     P    d Z ddlZddlmZmZmZ ddlmZ ddlm	Z	  G d d      Z
y)z
Transformation logic from OpenAI /v1/embeddings format to Jina AI's  `/v1/embeddings` format. 

Why separate file? Make it easy to see how transformation works

Docs - https://jina.ai/embeddings/
    N)ListOptionalTuple)LlmProviders)get_secret_strc            
           e Zd ZdZ	 	 ddZed        Zdee   fdZ	de
de
de
fd	Zd
ee   dee   deeee   ee   f   fdZy)JinaAIEmbeddingConfigz0
    Reference: https://jina.ai/embeddings/
    returnNc                     t               }|j                         D ]%  \  }}|dk7  s|t        | j                  ||       ' y )Nself)localsitemssetattr	__class__)r   locals_keyvalues       b/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/jina_ai/embedding/transformation.py__init__zJinaAIEmbeddingConfig.__init__   s;     (!--/JCf}!2U3 *    c                     | j                   j                         D ci c]O  \  }}|j                  d      s9t        |t        j
                  t        j                  t        t        f      s|||Q c}}S c c}}w )N__)	__dict__r   
startswith
isinstancetypesFunctionTypeBuiltinFunctionTypeclassmethodstaticmethod)clskvs      r   
get_configz JinaAIEmbeddingConfig.get_config   sy     **,
,1<<%&&-- 	  qD,
 	
 
s   AA6c                     dgS N
dimensions )r   s    r   get_supported_openai_paramsz1JinaAIEmbeddingConfig.get_supported_openai_params/   s
    ~r   non_default_paramsoptional_paramsc                     d|v r|d   |d<   |S r&   r(   )r   r*   r+   s      r   map_openai_paramsz'JinaAIEmbeddingConfig.map_openai_params2   s"     --,>|,LOL)r   api_baseapi_keyc                     |xs t        d      xs d}|xs2 t        d      xs% t        d      xs t        d      xs t        d      }t        j                  j                  ||fS )z
        Returns:
            Tuple[str, Optional[str], Optional[str]]:
                - custom_llm_provider: str
                - api_base: str
                - dynamic_api_key: str
        JINA_AI_API_BASEzhttps://api.jina.ai/v1JINA_AI_API_KEYJINA_AI_TOKEN)r   r   JINA_AIr   )r   r.   r/   dynamic_api_keys       r   $_get_openai_compatible_provider_infoz:JinaAIEmbeddingConfig._get_openai_compatible_provider_info9   s{     V'9:V>V 	 " 
,- //0//0/ o.	 	 ##))8_DDr   )r
   N)__name__
__module____qualname____doc__r   r   r$   r   strr)   dictr-   r   r   r6   r(   r   r   r	   r	      s    4	4 
 
"T#Y "&9=	E3-E #E 
sHSM8C=0	1	Er   r	   )r:   r   typingr   r   r   litellmr   litellm.secret_managers.mainr   r	   r(   r   r   <module>r@      s'     ( (   7>E >Er   