a
    bgC                     @  sd   d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
 ddddd	d
ZG dd dee
ZdS )    )annotations)AnyIteratorListOptional)
Embeddings)	BaseModel	List[str]intzIterator[List[str]])textssizereturnc                 c  s,   t dt| |D ]}| |||  V  qd S Nr   )rangelen)r   r   i r   /var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/embeddings/javelin_ai_gateway.py_chunk	   s    r   c                      s   e Zd ZU dZded< ded< dZded< dZded	< dd
 fddZdddddZdddddZ	dddddZ
dddddZdddddZdddddZ  ZS )JavelinAIGatewayEmbeddingsa  Javelin AI Gateway embeddings.

    To use, you should have the ``javelin_sdk`` python package installed.
    For more information, see https://docs.getjavelin.io

    Example:
        .. code-block:: python

            from langchain_community.embeddings import JavelinAIGatewayEmbeddings

            embeddings = JavelinAIGatewayEmbeddings(
                gateway_uri="<javelin-ai-gateway-uri>",
                route="<your-javelin-gateway-embeddings-route>"
            )
    r   clientstrrouteNzOptional[str]gateway_urijavelin_api_key)kwargsc              
     s   zddl m}m} W n ty.   tdY n0 t jf i | | jrz|| j| jd| _W n. |y } zt	d|W Y d }~n
d }~0 0 d S )Nr   )JavelinClientUnauthorizedErrorz^Could not import javelin_sdk python package. Please install it with `pip install javelin_sdk`.)base_urlZapi_keyzJavelin: Incorrect API Key.)
Zjavelin_sdkr   r   ImportErrorsuper__init__r   r   r   
ValueError)selfr   r   r   e	__class__r   r   r!   +   s    
z#JavelinAIGatewayEmbeddings.__init__r	   zList[List[float]])r   r   c           	      C  s   g }t |dD ]}zV| jj| jd|id}| }|di dg }|D ]}d|v rJ||d  qJW q ty } ztdt	|  W Y d }~qd }~0 0 q|S N   input)Z
query_bodyZllm_responsedataZ	embeddingzFailed to query route: )
r   r   Zquery_router   dictgetappendr"   printr   	r#   r   Z
embeddingstxtrespZ	resp_dictZembeddings_chunkitemr$   r   r   r   _query@   s    (z!JavelinAIGatewayEmbeddings._queryc           	        s   g }t |dD ]}z\| jj| jd|idI d H }| }|di dg }|D ]}d|v rP||d  qPW q ty } ztdt	|  W Y d }~qd }~0 0 q|S r'   )
r   r   Zaquery_router   r+   r,   r-   r"   r.   r   r/   r   r   r   _aqueryP   s    
(z"JavelinAIGatewayEmbeddings._aqueryc                 C  s
   |  |S Nr3   r#   r   r   r   r   embed_documentsb   s    z*JavelinAIGatewayEmbeddings.embed_documentszList[float])textr   c                 C  s   |  |gd S r   r6   )r#   r9   r   r   r   embed_querye   s    z&JavelinAIGatewayEmbeddings.embed_queryc                   s   |  |I d H S r5   r4   r7   r   r   r   aembed_documentsh   s    z+JavelinAIGatewayEmbeddings.aembed_documentsc                   s   |  |gI d H }|d S r   r;   )r#   r9   resultr   r   r   aembed_queryk   s    z'JavelinAIGatewayEmbeddings.aembed_query)__name__
__module____qualname____doc____annotations__r   r   r!   r3   r4   r8   r:   r<   r>   __classcell__r   r   r%   r   r      s   
r   N)
__future__r   typingr   r   r   r   Zlangchain_core.embeddingsr   Zpydanticr   r   r   r   r   r   r   <module>   s
   