o
    ZhQ                     @   sh   d dl mZmZ d dlmZmZmZ d dlmZm	Z	 d dl
mZ d dlmZ dZdZG dd	 d	eZd
S )    )DictOptional)convert_to_secret_strget_from_dict_or_envpre_init)Field	SecretStr)OpenAIEmbeddings)is_openai_v1zhttps://text.octoai.run/v1/zthenlper/gte-largec                   @   s   e Zd ZU dZeddZee ed< 	 ee	dZ
eed< 	 eedZeed< 	 dZeed< 	 ed	efd
dZed	eeef fddZeded	efddZdS )OctoAIEmbeddingsa?  OctoAI Compute Service embedding models.

    See https://octo.ai/ for information about OctoAI.

    To use, you should have the ``openai`` python package installed and the
    environment variable ``OCTOAI_API_TOKEN`` set with your API token.
    Alternatively, you can use the octoai_api_token keyword argument.
    Ndefaultoctoai_api_tokenendpoint_urlmodelFtiktoken_enabledreturnc                 C   s   dS )z Return type of embeddings model.zoctoai-embeddings selfr   r   g/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/embeddings/octoai_embeddings.py	_llm_type    s   zOctoAIEmbeddings._llm_typec                 C   s   ddiS )Nr   OCTOAI_API_TOKENr   r   r   r   r   
lc_secrets%   s   zOctoAIEmbeddings.lc_secretsvaluesc                 C   s   t |ddtd|d< tt |dd|d< t |ddtd|d< zSdd	l}t rW|d  |d d
}|dsA|jdi |j	|d< |dsT|j
di |j	|d< W |S W |S |d |d< |d  |d< |j|d< |j|d< W |S  ty|   tdw )z?Validate that api key and python package exists in environment.r   ZENDPOINT_URLr   r   r   r   ZMODELr   N)Zapi_keybase_urlclientZasync_clientZopenai_api_baseZopenai_api_keyzTCould not import openai python package. Please install it with `pip install openai`.r   )r   DEFAULT_API_BASEr   DEFAULT_MODELopenair
   Zget_secret_valuegetZOpenAIZ
embeddingsZAsyncOpenAIZ	EmbeddingImportError)clsr   r   Zclient_paramsr   r   r   validate_environment)   sT   






z%OctoAIEmbeddings.validate_environment)__name__
__module____qualname____doc__r   r   r   r   __annotations__r   r   strr   r   r   boolpropertyr   r   r   r   dictr#   r   r   r   r   r      s    
 	r   N)typingr   r   Zlangchain_core.utilsr   r   r   Zpydanticr   r   Z%langchain_community.embeddings.openair	   Z langchain_community.utils.openair
   r   r   r   r   r   r   r   <module>   s    