U
    h                     @   sd   d dl mZ d dlmZmZ d dlmZ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)Field	SecretStr)convert_to_secret_strget_from_dict_or_envpre_init)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d< eedZ	e
ed< eedZe
ed< dZeed< ee
d	d
dZeee
e
f d	ddZeeed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   T/tmp/pip-unpacked-wheel-9gdii04g/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)valuesr   c                 C   s   t |ddtd|d< tt |dd|d< t |ddtd|d< zdd	l}t r|d  |d d
}|ds~|jf |j	|d< |ds|j
f |j	|d< n0|d |d< |d  |d< |j|d< |j|d< W n tk
r   tdY nX |S )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   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)   sH    







z%OctoAIEmbeddings.validate_environment)__name__
__module____qualname____doc__r   r   r   __annotations__r   r   strr   r   r   boolpropertyr   r   r   r   dictr"   r   r   r   r   r
      s   
	r
   N)typingr   Zlangchain_core.pydantic_v1r   r   Zlangchain_core.utilsr   r   r   Z%langchain_community.embeddings.openair   Z langchain_community.utils.openair	   r   r   r
   r   r   r   r   <module>   s   