
    3i                     Z    S SK r S SKJr  S SKJrJrJrJr  S SKJ	r	  S SK
r
 " S S\5      rg)    N)OpenAIEmbeddingFunction)DictAnyOptionalList)Spacec                       \ rS rSr SS\\   S\S\4S jjr\S\4S j5       rS\	4S jr
S\\	   4S	 jrS\\\4   4S
 jr\S\\\4   SS 4S j5       rSrg)BasetenEmbeddingFunction
   api_keyapi_baseapi_key_env_varc                     SSK nUb  [        R                  " S[
        5        X0l        U=(       d    [        R                  " U5      nU(       d  [        SU S35      eXPl	        U(       d  [        S5      eX l
        SU l        SU l        UR                  U R                  U R                  S	9U l        g! [         a    [        S5      ef = f)
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         w/home/james-whalen/.local/lib/python3.13/site-packages/chromadb/utils/embedding_functions/baseten_embedding_function.py__init__!BasetenEmbeddingFunction.__init__   s    	 MM_"  /"@bii&@+O+<<]^  (FGG 3mmDLL4==mQ5  	i 	s   B5 5Creturnc                      g)Nbaseten r%       r   nameBasetenEmbeddingFunction.name6   s    r&   c                     g)Ncosiner%   r   s    r   default_space&BasetenEmbeddingFunction.default_space:   s    r&   c                 
    / SQ$ )N)r*   l2ipr%   r+   s    r   supported_spaces)BasetenEmbeddingFunction.supported_spaces=   s    %%r&   c                 4    U R                   U R                  S.$ )Nr   r   r4   r+   s    r   
get_config#BasetenEmbeddingFunction.get_config@   s     MMd>R>RSSr&   configc                     U R                  S5      nU R                  S5      nUb  Uc  [        S5      eUc  [        S5      e[        SUUS9$ )aF  
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
   )r7   r   r   s      r   build_from_config*BasetenEmbeddingFunction.build_from_configC   sl     !**%67::j)"h&6h  S  (+
 	
r&   )r   r   r   r   r   r   N)CHROMA_BASETEN_API_KEY)__name__
__module____qualname____firstlineno__r   strr    staticmethodr'   r   r,   r   r1   r   r   r5   r:   __static_attributes__r%   r&   r   r
   r
   
   s    
  8	)R#)R )R 	)RV #  u &$u+ &TDcN T 
$sCx. 
5O 
 
r&   r
   )r   <chromadb.utils.embedding_functions.openai_embedding_functionr   typingr   r   r   r   chromadb.api.typesr   r   r
   r%   r&   r   <module>rG      s*    	 - , $ X
6 X
r&   