§
    šŠtj"  ã                   óh   — 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dS )é    )Ú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dS )Ú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<   n# t          $ r t          d¦  «        ‚w xY w|S )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      úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/embeddings/zhipuai.pyÚvalidate_environmentz&ZhipuAIEmbeddings.validate_environmentO   s‹   € õ 1°¸ÐDUÑVÔVˆˆyÑð	Ø'Ð'Ð'Ð'Ð'Ð'à&˜w¨v°iÔ/@ÐAÑAÔAˆF�8ÑÐøÝð 	ð 	ð 	Ýð@ñô ð ð	øøøð
 ˆs	   –2 ²AÚtextc                 ó>   — |                       |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         ¬¦  «        }n&| j        j                             | j        |¬¦  «        }d„ |j        D ¦   «         }|S )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.
        N)r   Úinputr   )r   r)   c                 ó   — g | ]	}|j         ‘Œ
S © )Ú	embedding)Ú.0Úrs     r   ú
<listcomp>z5ZhipuAIEmbeddings.embed_documents.<locals>.<listcomp>   s   € Ð5Ð5Ð5 a�a”kÐ5Ð5Ð5r&   )r   r   Ú
embeddingsÚcreater   Údata)r#   r'   r$   r0   s       r   r"   z!ZhipuAIEmbeddings.embed_documentsl   sv   € ð Œ?Ð&Ø”;Ô)×0Ò0Ø”jØØœ?ð 1ñ ô ˆDˆDð ”;Ô)×0Ò0°t´zÈÐ0ÑOÔOˆDØ5Ð5¨4¬9Ð5Ñ5Ô5ˆ
ØÐr&   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   r   Ú__annotations__r   Ústrr   r   Úintr   Úclassmethodr   r   r   Úfloatr%   r"   r+   r&   r   r   r      s"  € € € € € € ð9ð 9ðv �% ¨dÐ3Ñ3Ô3€FˆCÐ3Ð3Ñ3Ø�˜}Ð-Ñ-Ô-€Eˆ3Ð-Ð-Ñ-ØØ€L€L�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   r+   r&   r   ú<module>r@      s«   ðØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6ðxð xð xð xð x˜	 :ñ xô xð xð xð xr&   