a
    bgf                     @   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 )    )AnyDict)convert_to_secret_strget_from_dict_or_envpre_init)Field	SecretStr)
BaseOpenAI)is_openai_v1zhttps://text.octoai.run/v1/zcodellama-7b-instructc                       s   e Zd ZU dZeedZeed< ee	ddZ
e	ed< eedZeed< eeddd	Zeeeef d fd
dZeedddZeeedddZ  ZS )OctoAIEndpointa  OctoAI LLM Endpoints - OpenAI compatible.

    OctoAIEndpoint is a class to interact with OctoAI Compute Service large
    language model endpoints.

    To use, you should have the environment variable ``OCTOAI_API_TOKEN`` set
    with your API token, or pass it as a named parameter to the constructor.

    Example:
        .. code-block:: python

            from langchain_community.llms.octoai_endpoint  import OctoAIEndpoint

            llm = OctoAIEndpoint(
                model="llama-2-13b-chat-fp16",
                max_tokens=200,
                presence_penalty=0,
                temperature=0.1,
                top_p=0.9,
            )

    defaultoctoai_api_base octoai_api_token
model_name)returnc                 C   s   dS )NF )clsr   r   v/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/llms/octoai_endpoint.pyis_lc_serializable*   s    z!OctoAIEndpoint.is_lc_serializablec                    s>   d| j i| j}t s.|| j | jd i |t jS )z,Get the parameters used to invoke the model.model)api_keyZapi_base)	r   Z_default_paramsr
   updater   get_secret_valuer   super_invocation_params)selfparams	__class__r   r   r   .   s    z!OctoAIEndpoint._invocation_paramsc                 C   s   dS )zReturn type of llm.Zoctoai_endpointr   )r   r   r   r   	_llm_type@   s    zOctoAIEndpoint._llm_type)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 i |j	|d< |ds|j
f i |j	|d< n&|d |d< |d  |d< |j|d< W n ty   tdY n0 d|d v rtd|S )z?Validate that api key and python package exists in environment.r   ZOCTOAI_API_BASEr   r   ZOCTOAI_API_TOKENr   Z
MODEL_NAMEr   N)r   base_urlclientZasync_clientZopenai_api_baseZopenai_api_keyzTCould not import openai python package. Please install it with `pip install openai`.Zendpoint_urlZmodel_kwargsz<`endpoint_url` was deprecated, please use `octoai_api_base`.)r   DEFAULT_BASE_URLr   DEFAULT_MODELopenair
   r   getZOpenAIZcompletionsZAsyncOpenAIZ
CompletionImportError
ValueError)r   r"   r'   Zclient_paramsr   r   r   validate_environmentE   sN    






z#OctoAIEndpoint.validate_environment)__name__
__module____qualname____doc__r   r%   r   str__annotations__r   r   r&   r   classmethodboolr   propertyr   r   r   r!   r   r+   __classcell__r   r   r   r   r      s   
r   N)typingr   r   Zlangchain_core.utilsr   r   r   Zpydanticr   r   Zlangchain_community.llms.openair	   Z langchain_community.utils.openair
   r%   r&   r   r   r   r   r   <module>   s   