HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/langchain/embeddings/__pycache__/base.cpython-310.pyc
o

���g~�@s&ddlZddlmZddlmZmZmZmZmZddl	m
Z
ddlmZddl
mZddd	d
ddd
dd�Zdefdd�Zdedeeeffdd�Zdd�dedeedeeeffdd�Zejee�d�deddfdd��Ze
�dd�dedeededeeeeeefffdd ��Zd d!gZdS)"�N)�util)�Any�List�Optional�Tuple�Union)�beta)�
Embeddings)�Runnable�langchain_openai�
langchain_aws�langchain_cohere�langchain_google_vertexai�langchain_huggingface�langchain_mistralai�langchain_ollama)�azure_openai�bedrock�cohere�google_vertexai�huggingface�	mistralai�ollama�openai�returncCsd�dd�t��D��S)z3Get formatted list of providers and their packages.�
css,�|]\}}d|�d|�dd���VqdS)z  - z: �_�-N)�replace)�.0�p�pkg�r"�D/usr/local/lib/python3.10/dist-packages/langchain/embeddings/base.py�	<genexpr>s�
�z%_get_provider_list.<locals>.<genexpr>)�join�_SUPPORTED_PROVIDERS�itemsr"r"r"r#�_get_provider_lists
�r(�
model_namecCsvd|vrt}td|�d|����|�dd�\}}|����}|��}|tvr1td|�dt�����|s7td��||fS)a�Parse a model string into provider and model name components.

    The model string should be in the format 'provider:model-name', where provider
    is one of the supported providers.

    Args:
        model_name: A model string in the format 'provider:model-name'

    Returns:
        A tuple of (provider, model_name)

    .. code-block:: python

        _parse_model_string("openai:text-embedding-3-small")
        # Returns: ("openai", "text-embedding-3-small")

        _parse_model_string("bedrock:amazon.titan-embed-text-v1")
        # Returns: ("bedrock", "amazon.titan-embed-text-v1")

    Raises:
        ValueError: If the model string is not in the correct format or
            the provider is unsupported
    �:zInvalid model format 'z�'.
Model name must be in format 'provider:model-name'
Example valid model strings:
  - openai:text-embedding-3-small
  - bedrock:amazon.titan-embed-text-v1
  - cohere:embed-english-v3.0
Supported providers: ��
Provider '�E' is not supported.
Supported providers and their required packages:
�Model name cannot be empty)r&�
ValueError�split�lower�stripr()r)�	providers�provider�modelr"r"r#�_parse_model_strings&��
��r6�r4r5r4cCsr|��std��|durd|vrt|�\}}n|}|}|s&t}td|����|tvr5td|�dt�����||fS)Nr.r*z�Must specify either:
1. A model string in format 'provider:model-name'
   Example: 'openai:text-embedding-3-small'
2. Or explicitly set provider from: r,r-)r2r/r6r&r()r5r4r)r3r"r"r#�_infer_model_and_providerOs(����r8)�maxsizer!cCs$t�|�std|�d|�d���dS)z Check if a package is installed.zCould not import z5 python package. Please install it with `pip install �`N)r�	find_spec�ImportError)r!r"r"r#�
_check_pkgms
���r=�kwargscKs�|st��}tdd�|�����t||d�\}}t|}t|�|dkr3ddlm}|dd|i|��S|dkrFdd	lm}|dd|i|��S|d
krYddl	m
}|dd|i|��S|dkrldd
lm}	|	dd|i|��S|dkrddl
m}
|
dd|i|��S|dkr�ddlm}|dd|i|��S|dkr�ddlm}|dd|i|��S|dkr�ddlm}
|
dd|i|��Std|�dt�����)a�Initialize an embeddings model from a model name and optional provider.

    **Note:** Must have the integration package corresponding to the model provider
    installed.

    Args:
        model: Name of the model to use. Can be either:
            - A model string like "openai:text-embedding-3-small"
            - Just the model name if provider is specified
        provider: Optional explicit provider name. If not specified,
            will attempt to parse from the model string. Supported providers
            and their required packages:

            {_get_provider_list()}

        **kwargs: Additional model-specific parameters passed to the embedding model.
            These vary by provider, see the provider-specific documentation for details.

    Returns:
        An Embeddings instance that can generate embeddings for text.

    Raises:
        ValueError: If the model provider is not supported or cannot be determined
        ImportError: If the required provider package is not installed

    .. dropdown:: Example Usage
        :open:

        .. code-block:: python

            # Using a model string
            model = init_embeddings("openai:text-embedding-3-small")
            model.embed_query("Hello, world!")

            # Using explicit provider
            model = init_embeddings(
                model="text-embedding-3-small",
                provider="openai"
            )
            model.embed_documents(["Hello, world!", "Goodbye, world!"])

            # With additional parameters
            model = init_embeddings(
                "openai:text-embedding-3-small",
                api_key="sk-..."
            )

    .. versionadded:: 0.3.9
    z2Must specify model name. Supported providers are: z, r7rr)�OpenAIEmbeddingsr5r)�AzureOpenAIEmbeddingsr)�VertexAIEmbeddingsr)�BedrockEmbeddings�model_idr)�CohereEmbeddingsr)�MistralAIEmbeddingsr)�HuggingFaceEmbeddingsr)r)�OllamaEmbeddingsr,r-Nr")r&�keysr/r%r8r=rr?r@rrArrBr
rDrrErrFrrGr()r5r4r>r3r)r!r?r@rArBrDrErFrGr"r"r#�init_embeddingswsJ8���rIr	)�	functools�	importlibr�typingrrrrr�langchain_core._apir�langchain_core.embeddingsr	�langchain_core.runnablesr
r&�strr(r6r8�	lru_cache�lenr=�floatrI�__all__r"r"r"r#�<module>sR�4���

�	�����j�