
    Ng	                     `    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ee          ZdS )    )AnyDictListN)
Embeddings)	BaseModel
ConfigDictz@cf/baai/bge-base-en-v1.5c                       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<   def fdZ edd          Zdee         deee                  fdZdedee         fdZ x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                 \     t                      j        di | dd| j         i| _        dS )z,Initialize the Cloudflare Workers AI client.r   r   N )super__init__r   r   )selfr   	__class__s     o/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/embeddings/cloudflare_workersai.pyr   z&CloudflareWorkersAIEmbeddings.__init__(   s;    ""6"""')C4>)C)CD    forbidr   )extraprotected_namespacestextsreturnc                 n     j         rd D              fdt          dt                     j                  D             }g }|D ]j}t	          j         j         d j         d j          j	        d|i          }|
                    |                                d         d	                    k|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                 :    g | ]}|                     d d          S )
 )replace).0texts     r   
<listcomp>zACloudflareWorkersAIEmbeddings.embed_documents.<locals>.<listcomp>:   s&    ???T\\$,,???r   c                 4    g | ]}||j         z            S r   )r   )r(   ir   r!   s     r   r*   zACloudflareWorkersAIEmbeddings.embed_documents.<locals>.<listcomp><   s:     
 
 
 !a$/))*
 
 
r   r   //ai/run/r)   r   jsonresultdata)r   rangelenr   requestspostr   r   r   r   extendr0   )r   r!   batches
embeddingsbatchresponses   ``    r   embed_documentsz-CloudflareWorkersAIEmbeddings.embed_documents0   s      	@?????E
 
 
 
 
1c%jj$/::
 
 
 
 	A 	AE}$QQtQQQQe_  H
 hmmooh7?@@@@r   r)   c                     | j         r|                    dd          n|}t          j        | j         d| j         d| j         | j        d|gi          }|                                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/   r1   r2   r   )	r   r'   r5   r6   r   r   r   r   r0   )r   r)   r;   s      r   embed_queryz)CloudflareWorkersAIEmbeddings.embed_queryL   s     +/*>Ht||D#&&&D= MM4?MMDOMML4&!
 
 

 }}x(033r   )__name__
__module____qualname____doc__r   str__annotations__DEFAULT_MODEL_NAMEr   r   intr   boolr   r   r   r   r   model_configr   floatr<   r>   __classcell__)r   s   @r   r
   r
   
   s4         * HL#GGGOOONNN(J(((J OT   .	:GT#s(^:::E E E E E E E :H2FFFLT#Y 4U3D    84 4U 4 4 4 4 4 4 4 4r   r
   )typingr   r   r   r5   langchain_core.embeddingsr   pydanticr   r   rE   r
   r   r   r   <module>rN      s    " " " " " " " " " "  0 0 0 0 0 0 * * * * * * * *0 Q4 Q4 Q4 Q4 Q4Iz Q4 Q4 Q4 Q4 Q4r   