a
    bg
                     @   sf   d Z ddlZddlmZmZ ddlZddlmZ ddlm	Z	m
Z
mZ dZdZdZG d	d
 d
e	eZdS )z+Wrapper around Bookend AI embedding models.    N)AnyList)
Embeddings)	BaseModel
ConfigDictFieldzhttps://api.bookend.ai/Z
embeddingsz/models/predictc                       s   e Zd ZU dZeed< eed< eed< eedZeed< e	ddZ
ed	 fd
dZee eee  dddZeee dddZ  ZS )BookendEmbeddingsa  Bookend AI sentence_transformers embedding models.

    Example:
        .. code-block:: python

            from langchain_community.embeddings import BookendEmbeddings

            bookend = BookendEmbeddings(
                domain={domain}
                api_token={api_token}
                model_id={model_id}
            )
            bookend.embed_documents([
                "Please put on these earmuffs because I can't you hear.",
                "Baby wipes are made of chocolate stardust.",
            ])
            bookend.embed_query(
                "She only paints with bold colors; she does not like pastels."
            )
    domain	api_tokenmodel_id)default_factoryauth_header )Zprotected_namespaces)kwargsc                    s(   t  jf i | dd| ji| _d S )NAuthorizationzBasic {})super__init__formatr
   r   )selfr   	__class__r   t/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/embeddings/bookend.pyr   /   s    zBookendEmbeddings.__init__)textsreturnc                 C   st   g }| j }d|d< | jtd}|D ]L}t|dddd}tjdt| j t	 |||d}|
| d d	  q"|S )
zEmbed documents using a Bookend deployed embeddings model.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        zapplication/json; charset=utf-8zContent-Type)r   taskN)textquestioncontextZinstructionPOST)headersparamsdatar   r!   )r   r   DEFAULT_TASKjsondumpsrequestsrequestAPI_URLr	   PATHappend)r   r   resultr   r    r   r!   rr   r   r   embed_documents3   s&    	z!BookendEmbeddings.embed_documents)r   r   c                 C   s   |  |gd S )zEmbed a query using a Bookend deployed embeddings model.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r   )r,   )r   r   r   r   r   embed_queryS   s    	zBookendEmbeddings.embed_query)__name__
__module____qualname____doc__str__annotations__r   dictr   r   Zmodel_configr   r   r   floatr,   r-   __classcell__r   r   r   r   r      s   

 r   )r1   r#   typingr   r   r%   Zlangchain_core.embeddingsr   Zpydanticr   r   r   r'   r"   r(   r   r   r   r   r   <module>   s   