Files
bwstudio db8cea02f8 feat: 提示词和 AI 参数移至数据库管理
- AiSetting 模型新增 6 个提示词字段 + 3 个阶段温度字段
- main.py 迁移逻辑改为检测 ai_settings 表的新字段并填充默认值
- generate.py 从数据库读取生成提示词,去掉硬编码
- optimizer 从 API 读取各阶段提示词和温度,删除 prompts.py
- crawler 从 API 读取提取/改写提示词和温度,删除 prompts.py
- settings/active 端点去掉 token 认证(供爬虫/优化器使用)
- 后台设置页新增提示词编辑区和温度调节控件
- 新增 _ensure_default_settings 自动创建默认配置
2026-06-13 17:27:09 +08:00

36 lines
1.9 KiB
Python

from sqlalchemy import Boolean, Column, DateTime, Float, Integer, String, Text, func
from app.database import Base
class AiSetting(Base):
__tablename__ = "ai_settings"
id = Column(Integer, primary_key=True, autoincrement=True)
provider = Column(String(50), nullable=False, default="nvidia")
api_base = Column(String(500), nullable=False, default="https://integrate.api.nvidia.com/v1")
api_key = Column(String(500), nullable=False, default="")
model_name = Column(String(100), nullable=False, default="nvidia/llama-3.1-nemotron-70b-instruct")
temperature = Column(Float, nullable=False, default=0.7)
max_tokens = Column(Integer, nullable=False, default=2048)
# 提示词模板
generate_prompt = Column(Text, nullable=True, comment="AI 笑话生成提示词")
optimizer_quality_prompt = Column(Text, nullable=True, comment="优化器-质量检测提示词")
optimizer_polish_prompt = Column(Text, nullable=True, comment="优化器-润色提示词")
optimizer_evaluate_prompt = Column(Text, nullable=True, comment="优化器-评价分类提示词")
crawler_extract_prompt = Column(Text, nullable=True, comment="爬虫-笑话提取提示词")
crawler_rewrite_prompt = Column(Text, nullable=True, comment="爬虫-改写提示词")
# 优化器各阶段温度
optimizer_quality_temperature = Column(Float, nullable=False, default=0.3)
optimizer_polish_temperature = Column(Float, nullable=False, default=0.8)
optimizer_evaluate_temperature = Column(Float, nullable=False, default=0.3)
crawl_enabled = Column(Boolean, nullable=False, default=False)
crawl_keywords = Column(Text, nullable=True, default="")
max_pages_per_run = Column(Integer, nullable=False, default=3)
is_active = Column(Boolean, nullable=False, default=True)
created_at = Column(DateTime, default=func.now())
updated_at = Column(DateTime, default=func.now(), onupdate=func.now())