Build lightweight AI agent admin

This commit is contained in:
Codex
2026-06-08 18:14:59 +08:00
commit e164840f43
2530 changed files with 435693 additions and 0 deletions
@@ -0,0 +1,50 @@
"""
对话模型
"""
from sqlalchemy import Column, String, Text, Float, Integer, Boolean, Index
from app.base_model import BaseModel
class Conversation(BaseModel):
"""
对话
"""
__tablename__ = "ai_conversation"
app_id = Column(String(21), nullable=False, index=True, comment="所属应用ID(逻辑外键关联ai_app)")
user_id = Column(String(21), nullable=False, index=True, comment="用户ID(逻辑外键关联core_user")
title = Column(String(200), default="", comment="对话标题")
model_override_id = Column(String(21), nullable=True, comment="覆盖模型ID(逻辑外键关联ai_llm_model")
temperature_override = Column(Float, nullable=True, comment="覆盖温度参数")
message_count = Column(Integer, default=0, comment="消息数量")
total_tokens = Column(Integer, default=0, comment="总 Token 数")
is_pinned = Column(Boolean, default=False, comment="是否置顶")
__table_args__ = (
Index("ix_ai_conversation_user_app", "user_id", "app_id"),
)
class Message(BaseModel):
"""
消息
"""
__tablename__ = "ai_message"
conversation_id = Column(String(21), nullable=False, index=True, comment="所属对话ID(逻辑外键关联ai_conversation")
role = Column(String(20), nullable=False, comment="角色: system/user/assistant")
content = Column(Text, nullable=False, comment="消息内容")
status = Column(String(20), default="completed", comment="状态: pending/completed/failed/stopped")
prompt_tokens = Column(Integer, default=0, comment="提示 Token 数")
completion_tokens = Column(Integer, default=0, comment="补全 Token 数")
total_tokens = Column(Integer, default=0, comment="总 Token 数")
model_name = Column(String(100), default="", comment="使用的模型名称")
latency = Column(Integer, default=0, comment="响应耗时(毫秒)")
error_message = Column(Text, default="", comment="错误信息")
parent_message_id = Column(String(21), nullable=True, comment="父消息ID(逻辑外键关联自身)")
feedback = Column(String(20), default="", comment="用户反馈: like/dislike")
__table_args__ = (
Index("ix_ai_message_conversation_created", "conversation_id", "sys_create_datetime"),
)