
    7|h:                     l    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
e	e      Zy)z+Wrapper around Bookend AI embedding models.    N)AnyList)
Embeddings)	BaseModel
ConfigDictFieldzhttps://api.bookend.ai/
embeddingsz/models/predictc                        e Zd ZU dZeed<   	 eed<   	 eed<   	  ee      Zeed<    e	d      Z
d	ef fd
Zdee   deee      fdZdedee   fdZ x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 )protected_namespaceskwargsc                 h    t        |   di | ddj                  | j                        i| _        y )NAuthorizationzBasic {}r   )super__init__formatr   r   )selfr   	__class__s     e/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/embeddings/bookend.pyr   zBookendEmbeddings.__init__/   s/    "6"+Z->->t~~-NO    textsreturnc                 B   g }| j                   }d|d<   | j                  t        d}|D ]s  }t        j                  |dddd      }t        j                  dt        | j                  z   t        z   |||      }|j                  |j                         d   d	          u |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contextinstructionPOST)headersparamsdatar   r(   )r   r   DEFAULT_TASKjsondumpsrequestsrequestAPI_URLr   PATHappend)r   r   resultr&   r'   r!   r(   rs           r   embed_documentsz!BookendEmbeddings.embed_documents3   s     """C 

  	/D::  $##'	D   $++%,A MM!&&(1+f-.!	/$ r   r!   c                 ,    | j                  |g      d   S )zEmbed a query using a Bookend deployed embeddings model.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r   )r3   )r   r!   s     r   embed_queryzBookendEmbeddings.embed_queryX   s     ##TF+A..r   )__name__
__module____qualname____doc__str__annotations__r   dictr   r   model_configr   r   r   floatr3   r5   __classcell__)r   s   @r   r   r      s    * KTNXM%d3K326LP P#T#Y #4U3D #J	/ 	/U 	/r   r   )r9   r*   typingr   r   r,   langchain_core.embeddingsr   pydanticr   r   r   r.   r)   r/   r   r   r   r   <module>rC      s9    1    0 1 1
#R/	: R/r   