o
    Ag+	                     @   sF   d dl mZmZmZ d dlmZ d dlmZmZ G dd deeZ	dS )    )AnyListOptional)
Embeddings)	BaseModel
ConfigDictc                       s   e Zd ZU dZdZeed< dZeed< 	 dZ	e
e ed< def fdd	Zed
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 )ModelScopeEmbeddingsa  ModelScopeHub embedding models.

    To use, you should have the ``modelscope`` python package installed.

    Example:
        .. code-block:: python

            from langchain_community.embeddings import ModelScopeEmbeddings
            model_id = "damo/nlp_corom_sentence-embedding_english-base"
            embed = ModelScopeEmbeddings(model_id=model_id, model_revision="v1.0.0")
    Nembedz.damo/nlp_corom_sentence-embedding_english-basemodel_idmodel_revisionkwargsc              
      sl   t  jdi | zddlm} ddlm} W n ty( } ztd|d}~ww ||j| j| j	d| _
dS )zInitialize the modelscoper   )pipeline)TaskszVCould not import some python packages.Please install it with `pip install modelscope`.N)modelr    )super__init__modelscope.pipelinesr   modelscope.utils.constantr   ImportErrorsentence_embeddingr
   r   r	   )selfr   r   r   e	__class__r   t/var/www/html/development/chatbot/venv/lib/python3.10/site-packages/langchain_community/embeddings/modelscope_hub.pyr      s"   zModelScopeEmbeddings.__init__forbidr   )extraprotected_namespacestextsreturnc                 C   s2   t tdd |}d|i}| j|dd }| S )zCompute doc embeddings using a modelscope embedding model.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        c                 S   s   |  ddS )N
 )replace)xr   r   r   <lambda>5   s    z6ModelScopeEmbeddings.embed_documents.<locals>.<lambda>source_sentenceinputtext_embedding)listmapr	   tolist)r   r   inputs
embeddingsr   r   r   embed_documents,   s   	z$ModelScopeEmbeddings.embed_documentstextc                 C   s2   | dd}d|gi}| j|dd d }| S )zCompute query embeddings using a modelscope embedding model.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r!   r"   r&   r'   r)   r   )r#   r	   r,   )r   r0   r-   	embeddingr   r   r   embed_query:   s   	
z ModelScopeEmbeddings.embed_query)__name__
__module____qualname____doc__r	   r   __annotations__r
   strr   r   r   r   model_configr   floatr/   r2   __classcell__r   r   r   r   r      s   
 r   N)
typingr   r   r   langchain_core.embeddingsr   pydanticr   r   r   r   r   r   r   <module>   s    