Ë
    µŒj5  ã                   ó`   — d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
mZmZ  G d„ de
e«      Zy)é    )ÚAnyÚDictÚListÚOptional)Ú
Embeddings)Úget_from_dict_or_env)Ú	BaseModelÚFieldÚmodel_validatorc                   óÚ   — e Zd ZU dZ edd¬«      Zeed<    ed¬«      Ze	ed<   	 e	ed	<   	 dZ
ee   ed
<   	  ed¬«      ededefd„«       «       Zde	dee   fd„Zdee	   deee      fd„Zy)ÚZhipuAIEmbeddingsuò  ZhipuAI embedding model integration.

    Setup:

        To use, you should have the ``zhipuai`` python package installed, and the
        environment variable ``ZHIPU_API_KEY`` set with your API KEY.

        More instructions about ZhipuAi Embeddings, you can get it
        from  https://open.bigmodel.cn/dev/api#vector

        .. code-block:: bash

            pip install -U zhipuai
            export ZHIPU_API_KEY="your-api-key"

    Key init args â€” completion params:
        model: Optional[str]
            Name of ZhipuAI model to use.
        api_key: str
            Automatically inferred from env var `ZHIPU_API_KEY` if not provided.

    See full list of supported init args and their descriptions in the params section.

    Instantiate:

        .. code-block:: python

            from langchain_community.embeddings import ZhipuAIEmbeddings

            embed = ZhipuAIEmbeddings(
                model="embedding-2",
                # api_key="...",
            )

    Embed single text:
        .. code-block:: python

            input_text = "The meaning of life is 42"
            embed.embed_query(input_text)

        .. code-block:: python

            [-0.003832892, 0.049372625, -0.035413884, -0.019301128, 0.0068899863, 0.01248398, -0.022153955, 0.006623926, 0.00778216, 0.009558191, ...]


    Embed multiple text:
        .. code-block:: python

            input_texts = ["This is a test query1.", "This is a test query2."]
            embed.embed_documents(input_texts)

        .. code-block:: python

            [
                [0.0083934665, 0.037985895, -0.06684559, -0.039616987, 0.015481004, -0.023952313, ...],
                [-0.02713102, -0.005470169, 0.032321047, 0.042484466, 0.023290444, 0.02170547, ...]
            ]
    NT)ÚdefaultÚexcludeÚclientzembedding-2)r   ÚmodelÚapi_keyÚ
dimensionsÚbefore)ÚmodeÚvaluesÚreturnc                 ó‚   — t        |dd«      |d<   	 ddlm}  ||d   ¬«      |d<   |S # t        $ r t        d«      ‚w xY w)z/Validate that auth token exists in environment.r   ÚZHIPUAI_API_KEYr   )ÚZhipuAI)r   r   zUCould not import zhipuai python package.Please install it with `pip install zhipuai`.)r   Úzhipuair   ÚImportError)Úclsr   r   s      úp/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/embeddings/zhipuai.pyÚvalidate_environmentz&ZhipuAIEmbeddings.validate_environmentO   s_   € ô 1°¸ÐDUÓVˆˆyÑð	Ý'á&¨v°iÑ/@ÔAˆF�8Ñð ˆøô ò 	Üð@óð ð	ús   ’) ©>Útextc                 ó0   — | j                  |g«      }|d   S )z¬
        Embeds a text using the AutoVOT algorithm.

        Args:
            text: A text to embed.

        Returns:
            Input document's embedded list.
        r   )Úembed_documents)Úselfr    Úresps      r   Úembed_queryzZhipuAIEmbeddings.embed_query_   s   € ð ×#Ñ# T FÓ+ˆØ�A‰wˆó    Útextsc                 óJ  — | j                   �=| j                  j                  j                  | j                  || j                   ¬«      }n1| j                  j                  j                  | j                  |¬«      }|j
                  D �cg c]  }|j                  ‘Œ }}|S c c}w )a0  
        Embeds a list of text documents using the AutoVOT algorithm.

        Args:
            texts: A list of text documents to embed.

        Returns:
            A list of embeddings for each document in the input list.
            Each embedding is represented as a list of float values.
        )r   Úinputr   )r   r)   )r   r   Ú
embeddingsÚcreater   ÚdataÚ	embedding)r#   r'   r$   Úrr*   s        r   r"   z!ZhipuAIEmbeddings.embed_documentsl   sŠ   € ð �?‰?Ð&Ø—;‘;×)Ñ)×0Ñ0Ø—j‘jØØŸ?™?ð 1ó ‰Dð —;‘;×)Ñ)×0Ñ0°t·z±zÈÐ0ÓOˆDØ+/¯9ª9Ó5©9 a�a—k“k¨9ˆ
Ð5ØÐùò 6s   Â	B )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   r   Ú__annotations__r   Ústrr   r   Úintr   Úclassmethodr   r   r   Úfloatr%   r"   © r&   r   r   r      s®   … ñ9ñv  ¨dÔ3€FˆCÓ3Ù˜}Ô-€Eˆ3Ó-ØØƒLØNØ $€J�˜‘Ó$ðñ
 ˜(Ô#Øð¨$ð °3ò ó ó $ðð ð ¨¨U©ó ð T¨#¡Yð °4¸¸U¹Ñ3Dô r&   r   N)Útypingr   r   r   r   Úlangchain_core.embeddingsr   Úlangchain_core.utilsr   Úpydanticr	   r
   r   r   r8   r&   r   Ú<module>r=      s'   ðß ,Ó ,å 0Ý 5ß 6Ñ 6ôx˜	 :õ xr&   