
    Bvh                     J    d dl Z d dlmZ d dlmZmZmZ d dlZ G d de      Zy)    N)OpenAIEmbeddingFunction)DictAnyOptionalc                   z    e Zd Z	 ddee   dedefdZedefd       Zdeee	f   fdZ
edeee	f   dd fd	       Zy
)BasetenEmbeddingFunctionapi_keyapi_baseapi_key_env_varc                    	 ddl }|t        j                  dt
               || _        |xs t        j                  |      }|st        d| d      || _	        |st        d      || _
        d| _        d| _        |j                  | j                  | j                  	      | _        y# t        $ r t        d      w xY w)
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.z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DeprecationWarningr   osgetenvr	   r
   
model_name
dimensionsOpenAIclient)selfr	   r
   r   r   resolved_api_keys         g/RAG/venv/lib/python3.12/site-packages/chromadb/utils/embedding_functions/baseten_embedding_function.py__init__z!BasetenEmbeddingFunction.__init__
   s    	 MM_"  /"@bii&@+O+<<]^  (FGG 3mmDLL4==mQ5  	i 	s   B) )B>returnc                       y)Nbaseten r!       r   namezBasetenEmbeddingFunction.name5   s    r"   c                 4    | j                   | j                  dS )Nr
   r   r%   )r   s    r   
get_configz#BasetenEmbeddingFunction.get_config9   s     MMd>R>RSSr"   configc                     | j                  d      }| j                  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   )r'   r   r
   s      r   build_from_configz*BasetenEmbeddingFunction.build_from_config<   sl     !**%67::j)"h&6h  S  (+
 	
r"   N)CHROMA_BASETEN_API_KEY)__name__
__module____qualname__r   strr   staticmethodr#   r   r   r&   r*   r!   r"   r   r   r   	   s    
  8	)R#)R )R 	)RV #  TDcN T 
$sCx. 
5O 
 
r"   r   )	r   <chromadb.utils.embedding_functions.openai_embedding_functionr   typingr   r   r   r   r   r!   r"   r   <module>r3      s'    	 ' & R
6 R
r"   