o
    Zh:                     @   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
d	ef fd
dZdee deee  fddZdedee f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di | dd| ji| _d S )NAuthorizationzBasic {}r   )super__init__formatr
   r   )selfr   	__class__r   ]/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/embeddings/bookend.pyr   /   s   zBookendEmbeddings.__init__textsreturnc                 C   st   g }| j }d|d< | jtd}|D ]&}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_documentsr   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_queryX   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    