o
    i                     @   sd   d Z ddlmZmZmZmZmZmZmZ ddl	m
Z
 ddlmZ G dd deZG dd deZd	S )
z!
Model Provider and Model models
    )ColumnStringBooleanInteger
ForeignKeyJSONevent)relationship)	BaseModelc                   @   sB  e Zd ZdZdZddiZeedddZeedd	dZ	eed
d	dZ
eedd	dZeeddZeedd	dZeedd	dZeedd	dZeeddZeed	dZeed
d	dZeed
d	dZeed
d	dZeed	dZeeddZeedd	dZeed	dZeddddZdeddfddZdefddZ dS )ModelProviderzZ
    LLM Provider model
    Represents an AI model provider (OpenAI, Anthropic, etc.)
    model_providersschemapublicd   Fnullable   T2      defaultModelproviderzall, delete-orphan)back_populatescascadeplaintext_keyreturnNc                 C   s*   ddl m} |r||| _dS d| _dS )zEncrypt and set the API keyr   encryption_serviceN)app.core.encryptionr   encryptapi_key)selfr   r    r#   ;/lsinfo/ai/hellotax_ai/base_platform/app/models/provider.pyset_api_key(   s   
zModelProvider.set_api_keyc                 C   s"   ddl m} | jr|| jS dS )zDecrypt and return the API keyr   r   N)r   r   r!   decrypt)r"   r   r#   r#   r$   get_api_key0   s   zModelProvider.get_api_key)!__name__
__module____qualname____doc____tablename____table_args__r   r   namedescriptioniconcolorr   
configureddefault_base_urlr!   base_urlr   priorityenabledprovider_kindprotocol	auth_typer   capabilitiesis_localhealthcheck_pathextra_configr	   modelsstrr%   r'   r#   r#   r#   r$   r   	   s0    r   c                   @   s   e Zd ZdZdZddiZeeedddZ	ee
ddd	d
Zee
dddZee
dddZeed	dZeed	dZeed	dZeed	dZee
dd	dZeed	dZeed	dZeed	dZeeddZeeddZeed	dZedddZdS )r   zK
    AI Model model
    Represents a specific AI model from a provider
    r>   r   r   zpublic.model_providers.idFr   r   T)r   uniquer   r   r   r   )r   N)r(   r)   r*   r+   r,   r-   r   r   r   provider_idr   coder.   typer   tags	dimensionr   r6   	is_activeremote_model_idcontext_lengthmax_output_tokenssupports_streamsupports_toolsr5   r=   r	   r   r#   r#   r#   r$   r   8   s(    r   N)r+   
sqlalchemyr   r   r   r   r   r   r   sqlalchemy.ormr	   app.models.baser
   r   r   r#   r#   r#   r$   <module>   s    $/