
    _j                     n    d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	 d dl
mZ d dlZ G d de          ZdS )    N)OpenAIEmbeddingFunctionvalidate_config_schema)DictAnyOptionalList)Spacec                       e Zd Z	 ddee         dedefdZedefd            ZdefdZ	de
e         fd	Zdeeef         fd
Zedeeef         dd fd            Zedeeef         ddfd            ZdS )BasetenEmbeddingFunctionCHROMA_BASETEN_API_KEYapi_keyapi_baseapi_key_env_varc                    	 ddl }n# t          $ r t          d          w xY w|t          j        dt
                     t          j        d          d| _        n|| _        |pt          j        | j                  }|st          d| j         d          || _	        |st          d          || _
        d	| _        d| _        |                    | j	        | j
        
          | _        dS )a^  
        Initialize the BasetenEmbeddingFunction.
        Args:
            api_key (str, optional): The API key for your Baseten account
            api_base (str, required): The Baseten URL of the deployment
            api_key_env_var (str, optional): The environment variable to use for the API key. Defaults to "CHROMA_BASETEN_API_KEY".
        r   NzWThe openai python package is not installed. Please install it with `pip install openai`zDirect api_key configuration will not be persisted. Please use environment variables via api_key_env_var for persistent storage.BASETEN_API_KEYzAPI key not provided and z! environment variable is not set.z'The api_base argument must be provided.zbaseten-embedding-model)r   base_url)openaiImportError
ValueErrorwarningswarnDeprecationWarningosgetenvr   r   r   
model_name
dimensionsOpenAIclient)selfr   r   r   r   resolved_api_keys         z/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/chromadb/utils/embedding_functions/baseten_embedding_function.py__init__z!BasetenEmbeddingFunction.__init__   s'   	MMMM 	 	 	i  	
 M_"   9&''3#4D  #2D  #Ebi0D&E&E 	cD,@ccc   ( 	HFGGG 3mmDL4=mQQs    !returnc                      dS )Nbaseten r'       r"   namezBasetenEmbeddingFunction.name;   s    yr(   c                     dS )Ncosiner'   r    s    r"   default_spacez&BasetenEmbeddingFunction.default_space?   s    xr(   c                 
    g dS )N)r+   l2ipr'   r,   s    r"   supported_spacesz)BasetenEmbeddingFunction.supported_spacesB   s    %%%%r(   c                      | j         | j        dS )Nr   r   r3   r,   s    r"   
get_configz#BasetenEmbeddingFunction.get_configE   s     Md>RSSSr(   configc                     |                      d          }|                      d          }||t          d          |t          d          t          d||          S )a~  
        Build the BasetenEmbeddingFunction from a configuration dictionary.

        Args:
            config (Dict[str, Any]): A dictionary containing the configuration parameters.
                                     Expected keys: 'api_key', 'api_base', 'api_key_env_var'.

        Returns:
            BasetenEmbeddingFunction: An instance of BasetenEmbeddingFunction.
        r   r   NzVMissing 'api_key_env_var' or 'api_base' in configuration for BasetenEmbeddingFunction.zAMissing 'api_base' in configuration for BasetenEmbeddingFunction.)r   r   r   )getr   r   )r5   r   r   s      r"   build_from_configz*BasetenEmbeddingFunction.build_from_configH   s     !**%677::j))"h&6h   S   (+
 
 
 	
r(   Nc                 &    t          | d           dS )z
        Validate the configuration using the JSON schema.

        Args:
            config: Configuration to validate

        Raises:
            ValidationError: If the configuration does not match the schema
        r&   Nr   )r5   s    r"   validate_configz(BasetenEmbeddingFunction.validate_configi   s     	vy11111r(   )r   )__name__
__module____qualname__r   strr#   staticmethodr)   r
   r-   r	   r1   r   r   r4   r8   r:   r'   r(   r"   r   r      sR       
  8	-R -R#-R -R 	-R -R -R -R^ #    \u    &$u+ & & & &TDcN T T T T 
$sCx. 
5O 
 
 
 \
@ 
2S#X 
24 
2 
2 
2 \
2 
2 
2r(   r   )r   <chromadb.utils.embedding_functions.openai_embedding_functionr   *chromadb.utils.embedding_functions.schemasr   typingr   r   r   r	   chromadb.api.typesr
   r   r   r'   r(   r"   <module>rD      s    				      N M M M M M , , , , , , , , , , , , $ $ $ $ $ $ i2 i2 i2 i2 i26 i2 i2 i2 i2 i2r(   