o
    ZhC                     @  s\   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ZG dd dee
ZdS )    )annotations)AnyIteratorListOptional)
Embeddings)	BaseModeltexts	List[str]sizeintreturnIterator[List[str]]c                 c  s.    t dt| |D ]}| |||  V  q	d S Nr   )rangelen)r	   r   i r   h/var/www/html/lang_env/lib/python3.10/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 fddZd ddZd ddZ	d ddZ
d!ddZd ddZ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w t jdi | | jr@z|| j| jd| _W d S  |y? } zt	d|d }~ww 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.r   )
Zjavelin_sdkr   r   ImportErrorsuper__init__r   r   r   
ValueError)selfr   r   r   e	__class__r   r   r"   +   s$   
z#JavelinAIGatewayEmbeddings.__init__r	   r
   r   List[List[float]]c           	      C  s   g }t |dD ]G}z+| jj| jd|id}| }|di dg }|D ]}d|v r2||d  q%W q tyN } ztdt	|  W Y d }~qd }~ww |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 ]J}z.| jj| jd|idI d H }| }|di dg }|D ]}d|v r6||d  q)W q tyR } ztdt	|  W Y d }~qd }~ww |S r)   )
r   r   Zaquery_router   r-   r.   r/   r#   r0   r   r1   r   r   r   _aqueryP   s&   
z"JavelinAIGatewayEmbeddings._aqueryc                 C  s
   |  |S Nr5   r$   r	   r   r   r   embed_documentsb   s   
z*JavelinAIGatewayEmbeddings.embed_documentstextList[float]c                 C  s   |  |gd S r   r8   )r$   r;   r   r   r   embed_querye   s   z&JavelinAIGatewayEmbeddings.embed_queryc                   s   |  |I d H S r7   r6   r9   r   r   r   aembed_documentsh   s   z+JavelinAIGatewayEmbeddings.aembed_documentsc                   s   |  |gI d H }|d S r   r>   )r$   r;   resultr   r   r   aembed_queryk   s   z'JavelinAIGatewayEmbeddings.aembed_query)r   r   )r	   r
   r   r(   )r;   r   r   r<   )__name__
__module____qualname____doc____annotations__r   r   r"   r5   r6   r:   r=   r?   rA   __classcell__r   r   r&   r   r      s"   
 




r   N)r	   r
   r   r   r   r   )
__future__r   typingr   r   r   r   Zlangchain_core.embeddingsr   Zpydanticr   r   r   r   r   r   r   <module>   s    
