a
    bg	                     @   sR   d dl mZmZmZ d dlZd dlmZ d dlmZm	Z	 dZ
G dd deeZdS )    )AnyDictListN)
Embeddings)	BaseModel
ConfigDictz@cf/baai/bge-base-en-v1.5c                       s   e Zd ZU dZdZeed< eed< eed< eZeed< dZ	e
ed< d	Zeed
< ddiZeeef ed< ed fddZedddZee eee  dddZeee dddZ  ZS )CloudflareWorkersAIEmbeddingsaP  Cloudflare Workers AI embedding model.

    To use, you need to provide an API token and
    account ID to access Cloudflare Workers AI.

    Example:
        .. code-block:: python

            from langchain_community.embeddings import CloudflareWorkersAIEmbeddings

            account_id = "my_account_id"
            api_token = "my_secret_api_token"
            model_name =  "@cf/baai/bge-small-en-v1.5"

            cf = CloudflareWorkersAIEmbeddings(
                account_id=account_id,
                api_token=api_token,
                model_name=model_name
            )
    z-https://api.cloudflare.com/client/v4/accountsapi_base_url
account_id	api_token
model_name2   
batch_sizeTstrip_new_linesAuthorizationBearer headers)kwargsc                    s(   t  jf i | dd| j i| _dS )z,Initialize the Cloudflare Workers AI client.r   r   N)super__init__r   r   )selfr   	__class__ /var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/embeddings/cloudflare_workersai.pyr   (   s    z&CloudflareWorkersAIEmbeddings.__init__Zforbidr   )extraZprotected_namespaces)textsreturnc                    s    j rdd D  fddtdt jD }g }|D ]F}tj j d j d j  j	d|id}|
| d	 d
  q>|S )zCompute doc embeddings using Cloudflare Workers AI.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        c                 S   s   g | ]}| d dqS )
 )replace).0textr   r   r   
<listcomp>:       zACloudflareWorkersAIEmbeddings.embed_documents.<locals>.<listcomp>c                    s   g | ]}|| j   qS r   )r   )r!   ir   r   r   r   r#   <   s   r   //ai/run/r"   r   jsonresultdata)r   rangelenr   requestspostr	   r
   r   r   extendr*   )r   r   ZbatchesZ
embeddingsbatchresponser   r&   r   embed_documents0   s    	z-CloudflareWorkersAIEmbeddings.embed_documents)r"   r   c                 C   sX   | j r|ddn|}tj| j d| j d| j | jd|gid}| d d d	 S )
zCompute query embeddings using Cloudflare Workers AI.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r   r   r'   r(   r"   r)   r+   r,   r   )	r   r    r/   r0   r	   r
   r   r   r*   )r   r"   r3   r   r   r   embed_queryL   s    	z)CloudflareWorkersAIEmbeddings.embed_query)__name__
__module____qualname____doc__r	   str__annotations__DEFAULT_MODEL_NAMEr   r   intr   boolr   r   r   r   r   Zmodel_configr   floatr4   r5   __classcell__r   r   r   r   r   
   s   
r   )typingr   r   r   r/   Zlangchain_core.embeddingsr   Zpydanticr   r   r<   r   r   r   r   r   <module>   s
   