Ë
    lQêjÀ   ã                   ót   — d dl mZmZmZmZ d dlmZmZmZm	Z	 d dl
Z
d dlZd dlmZ d dlZ G d„ dee   «      Zy)é    )Ú
EmbeddingsÚ	DocumentsÚEmbeddingFunctionÚSpace)ÚListÚDictÚAnyÚOptionalN©Úvalidate_config_schemac                   óV  — e Zd Z	 	 	 	 	 	 	 	 	 	 ddee   dedee   dee   dee   dee   dee   d	eeeef      d
ee   defd„Zdede	fd„Z
edefd„«       Zdefd„Zdee   fd„Zedeeef   ddfd„«       Zdeeef   fd„Zdeeef   deeef   ddfd„Zedeeef   ddfd„«       Zy)ÚOpenAIEmbeddingFunctionNÚapi_keyÚ
model_nameÚorganization_idÚapi_baseÚapi_typeÚapi_versionÚdeployment_idÚdefault_headersÚ
dimensionsÚapi_key_env_varc                 óò  — 	 ddl }|�t        j                  dt
        «       t        j                  d«      �d| _        n|
| _        |xs t        j                  | j                  «      | _	        | j                  st        d| j                  › d�«      ‚|| _
        || _        || _        || _        || _        || _        || _        |	| _        d| j                  i}| j                  �| j                  |d	<   | j                  �| j                  |d
<   | j                   �| j                   |d<    |j$                  di |¤Ž| _        | j                  dk(  r�| j                  €t        d«      ‚| j                  €t        d«      ‚| j                  €t        d«      ‚ddl m}  || j                  | j                  | j                  | j                  | j                   ¬«      | _        yy# t        $ r t        d«      ‚w xY w)a�  
        Initialize the OpenAIEmbeddingFunction.
        Args:
            api_key_env_var (str, optional): Environment variable name that contains your API key for the OpenAI API.
                Defaults to "CHROMA_OPENAI_API_KEY".
            model_name (str, optional): The name of the model to use for text
                embeddings. Defaults to "text-embedding-ada-002".
            organization_id(str, optional): The OpenAI organization ID if applicable
            api_base (str, optional): The base path for the API. If not provided,
                it will use the base path for the OpenAI API. This can be used to
                point to a different deployment, such as an Azure deployment.
            api_type (str, optional): The type of the API deployment. This can be
                used to specify a different deployment, such as 'azure'. If not
                provided, it will use the default OpenAI deployment.
            api_version (str, optional): The api version for the API. If not provided,
                it will use the api version for the OpenAI API. This can be used to
                point to a different deployment, such as an Azure deployment.
            deployment_id (str, optional): Deployment ID for Azure OpenAI.
            default_headers (Dict[str, str], optional): A mapping of default headers to be sent with each API request.
            dimensions (int, optional): The number of dimensions for the embeddings.
                Only supported for `text-embedding-3` or later models from OpenAI.
                https://platform.openai.com/docs/api-reference/embeddings/create#embeddings-create-dimensions
        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.ÚOPENAI_API_KEYzThe z! environment variable is not set.r   ÚorganizationÚbase_urlr   Úazurez.api_version must be specified for Azure OpenAIz0deployment_id must be specified for Azure OpenAIz+api_base must be specified for Azure OpenAI)ÚAzureOpenAI)r   r   Úazure_endpointÚazure_deploymentr   © )ÚopenaiÚImportErrorÚ
ValueErrorÚwarningsÚwarnÚDeprecationWarningÚosÚgetenvr   r   r   r   r   r   r   r   r   r   ÚOpenAIÚclientr   )Úselfr   r   r   r   r   r   r   r   r   r   r"   Úclient_paramsr   s                 ú�/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/utils/embedding_functions/openai_embedding_function.pyÚ__init__z OpenAIEmbeddingFunction.__init__
   sô  € ðH	Ûð ÐÜ�M‰Mð_ä"ôô �9‰9Ð%Ó&Ð2Ø#3ˆDÕ à#2ˆDÔ àÒA¤"§)¡)¨D×,@Ñ,@Ó"AˆŒØ�|Š|ÜØ�t×+Ñ+Ð,Ð,MÐNóð ð %ˆŒØ.ˆÔØ ˆŒØ ˆŒØ&ˆÔØ*ˆÔØ.ˆÔØ$ˆŒð *3°D·L±LÐ(Aˆà×ÑÐ+Ø,0×,@Ñ,@ˆM˜.Ñ)Ø�=‰=Ð$Ø(,¯©ˆM˜*Ñ%Ø×ÑÐ+Ø/3×/CÑ/CˆMÐ+Ñ,à#�f—m‘mÑ4 mÑ4ˆŒð �=‰=˜GÒ#Ø×ÑÐ'Ü Ð!QÓRÐRØ×!Ñ!Ð)Ü Ð!SÓTÐTØ�}‰}Ð$Ü Ð!NÓOÐOå*á%ØŸ™Ø ×,Ñ,Ø#Ÿ}™}Ø!%×!3Ñ!3Ø $× 4Ñ 4ôˆD�Kð $øô[ ò 	ÜØióð ð	ús   ‚G! Ç!G6ÚinputÚreturnc                 ó^  — |sg S | j                   |dœ}| j                  �d| j                   v r| j                  |d<    | j                  j                  j                  di |¤Ž}|j
                  D �cg c]1  }t        j                  |j                  t        j                  ¬«      ‘Œ3 c}S c c}w )zÀ
        Generate embeddings for the given documents.
        Args:
            input: Documents to generate embeddings for.
        Returns:
            Embeddings for the documents.
        )Úmodelr0   ztext-embedding-3r   )Údtyper!   )
r   r   r+   Ú
embeddingsÚcreateÚdataÚnpÚarrayÚ	embeddingÚfloat32)r,   r0   Úembedding_paramsÚresponser7   s        r.   Ú__call__z OpenAIEmbeddingFunction.__call__o   s˜   € ñ ØˆIð —_‘_Øñ,
Ðð
 �?‰?Ð&Ð+=ÀÇÁÑ+PØ-1¯_©_Ð˜\Ñ*ð 1�4—;‘;×)Ñ)×0Ñ0ÑDÐ3CÑDˆð HPÇ}Á}ÖU¸t”—‘˜Ÿ™¬r¯z©zÖ:ÒUÐUùÒUs   Á16B*c                   ó   — y)Nr"   r!   r!   ó    r.   ÚnamezOpenAIEmbeddingFunction.nameŠ   ó   € àr@   c                  ó   — y)NÚcosiner!   ©r,   s    r.   Údefault_spacez%OpenAIEmbeddingFunction.default_spaceŽ   rB   r@   c                 ó
   — g d¢S )N)rD   Úl2Úipr!   rE   s    r.   Úsupported_spacesz(OpenAIEmbeddingFunction.supported_spaces’   s   € Ú%Ð%r@   ÚconfigzEmbeddingFunction[Documents]c                 ór  — | j                  d«      }| j                  d«      }| j                  d«      }| j                  d«      }| j                  d«      }| j                  d«      }| j                  d«      }| j                  d«      }| j                  d	«      }	|�|€J d
«       ‚t        |||||||||	¬«	      S )Nr   r   r   r   r   r   r   r   r   zThis code should not be reached©	r   r   r   r   r   r   r   r   r   )Úgetr   )
rK   r   r   r   r   r   r   r   r   r   s
             r.   Úbuild_from_configz)OpenAIEmbeddingFunction.build_from_config•   sÅ   € ð !Ÿ*™*Ð%6Ó7ˆØ—Z‘Z Ó-ˆ
Ø Ÿ*™*Ð%6Ó7ˆØ—:‘:˜jÓ)ˆØ—:‘:˜jÓ)ˆØ—j‘j Ó/ˆØŸ
™
 ?Ó3ˆØ Ÿ*™*Ð%6Ó7ˆØ—Z‘Z Ó-ˆ
àÐ" jÐ&8Ø;Ð;Ó;�5ô 'Ø+Ø!Ø+ØØØ#Ø'Ø+Ø!ô

ð 
	
r@   c           
      óÎ   — | j                   | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  dœ	S )NrM   rM   rE   s    r.   Ú
get_configz"OpenAIEmbeddingFunction.get_config²   sU   € à#×3Ñ3ØŸ/™/Ø#×3Ñ3ØŸ™ØŸ™Ø×+Ñ+Ø!×/Ñ/Ø#×3Ñ3ØŸ/™/ñ

ð 
	
r@   Ú
old_configÚ
new_configc                 ó"   — d|v rt        d«      ‚y )Nr   zSThe model name cannot be changed after the embedding function has been initialized.)r$   )r,   rR   rS   s      r.   Úvalidate_config_updatez.OpenAIEmbeddingFunction.validate_config_update¿   s!   € ð ˜:Ñ%ÜØeóð ð &r@   c                 ó   — 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   )rK   s    r.   Úvalidate_configz'OpenAIEmbeddingFunction.validate_configÇ   s   € ô 	˜v xÕ0r@   )
Nztext-embedding-ada-002NNNNNNNÚCHROMA_OPENAI_API_KEY)Ú__name__Ú
__module__Ú__qualname__r
   Ústrr   Úintr/   r   r   r>   ÚstaticmethodrA   r   rF   r   rJ   r	   rO   rQ   rU   rW   r!   r@   r.   r   r   	   s¡  „ ð "&Ø2Ø)-Ø"&Ø"&Ø%)Ø'+Ø48Ø$(Ø6ñcà˜#‘ðcð ðcð " #™ð	cð
 ˜3‘-ðcð ˜3‘-ðcð ˜c‘]ðcð   ‘}ðcð " $ s¨C x¡.Ñ1ðcð ˜S‘Mðcð ócðJV˜ið V¨Jó Vð6 ð�#ò ó ðð˜uó ð& $ u¡+ó &ð ð
 $ s¨C x¡.ð 
Ð5Sò 
ó ð
ð8
˜D  c ™Nó 
ðØ˜s C˜x™.ðØ6:¸3À¸8±nðà	óð ð
1  S¨# X¡ð 
1°4ò 
1ó ñ
1r@   r   )Úchromadb.api.typesr   r   r   r   Útypingr   r   r	   r
   r(   Únumpyr8   Ú*chromadb.utils.embedding_functions.schemasr   r%   r   r!   r@   r.   ú<module>rc      s1   ðß NÓ Nß ,Ó ,Û 	Û Ý MÛ ôI1Ð/°	Ñ:õ I1r@   