Ë
    lQêjË  ã                   óf   — 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y)é    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y)ÚBasetenEmbeddingFunctionÚapi_keyÚapi_baseÚapi_key_env_varc                 óä  — 	 ddl }|�t        j                  dt
        «       t        j                  d«      �d| _        n|| _        |xs t        j                  | j                  «      }|st        d| j                  › 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`z€Direct 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         ú‚/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/utils/embedding_functions/baseten_embedding_function.pyÚ__init__z!BasetenEmbeddingFunction.__init__   só   € ð	Ûð ÐÜ�M‰Mð_ä"ôô �9‰9Ð&Ó'Ð3Ø#4ˆDÕ à#2ˆDÔ ð #ÒE¤b§i¡i°×0DÑ0DÓ&EÐÙÜØ+¨D×,@Ñ,@Ð+AÐAbÐcóð ð (ˆŒÙÜÐFÓGÐGØ ˆŒØ3ˆŒØˆŒà—m‘m¨D¯L©LÀ4Ç=Á=�mÓQˆ�øô= ò 	ÜØióð ð	ús   ‚C ÃC/Úreturnc                   ó   — y)NÚbaseten© r&   ó    r!   ÚnamezBasetenEmbeddingFunction.name;   s   € àr'   c                  ó   — y)NÚcosiner&   ©r   s    r!   Údefault_spacez&BasetenEmbeddingFunction.default_space?   s   € Ør'   c                 ó
   — g d¢S )N)r*   Úl2Úipr&   r+   s    r!   Úsupported_spacesz)BasetenEmbeddingFunction.supported_spacesB   s   € Ú%Ð%r'   c                 ó4   — | j                   | j                  dœS )N©r   r   r2   r+   s    r!   Ú
get_configz#BasetenEmbeddingFunction.get_configE   s   € Ø ŸM™M¸d×>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   )r4   r   r   s      r!   Úbuild_from_configz*BasetenEmbeddingFunction.build_from_configH   sl   € ð !Ÿ*™*Ð%6Ó7ˆØ—:‘:˜jÓ)ˆØÐ" hÐ&6ÜØhóð ð ÐÜØSóð ô (ØØØ+ô
ð 	
r'   Nc                 ó   — t        | d«       y)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   )r4   s    r!   Úvalidate_configz(BasetenEmbeddingFunction.validate_configi   s   € ô 	˜v yÕ1r'   )ÚCHROMA_BASETEN_API_KEY)Ú__name__Ú
__module__Ú__qualname__r   Ústrr"   Ústaticmethodr(   r
   r,   r	   r0   r   r   r3   r7   r9   r&   r'   r!   r   r      sÔ   „ ð
  8ñ	-Rà˜#‘ð-Rð ð-Rð ó	-Rð^ ð�#ò ó ðð˜uó ð& $ u¡+ó &ðT˜D  c ™Nó Tð ð
 $ s¨C x¡.ð 
Ð5Oò 
ó ð
ð@ ð
2  S¨# X¡ð 
2°4ò 
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ß ,Ó ,Ý $Û ôi2Ð6õ i2r'   