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 自动创建默认配置
This commit is contained in:
@@ -2,10 +2,10 @@
|
||||
<div class="setting-page">
|
||||
<h2>AI 配置</h2>
|
||||
|
||||
<!-- AI 配置表单 -->
|
||||
<!-- AI 基础配置 -->
|
||||
<el-card style="margin-top: 20px">
|
||||
<template #header>
|
||||
<span>AI 配置</span>
|
||||
<span>API 基础配置</span>
|
||||
</template>
|
||||
<el-form :model="form" label-width="120px">
|
||||
<el-form-item label="提供商">
|
||||
@@ -57,6 +57,81 @@
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<!-- 提示词配置 -->
|
||||
<el-card style="margin-top: 20px">
|
||||
<template #header>
|
||||
<span>提示词模板</span>
|
||||
</template>
|
||||
<el-form :model="form" label-width="140px">
|
||||
<el-form-item label="AI 生成笑话">
|
||||
<el-input
|
||||
v-model="form.generate_prompt"
|
||||
type="textarea"
|
||||
:rows="6"
|
||||
placeholder="使用 {context}/{style}/{length_requirement} 作为占位符"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-divider />
|
||||
|
||||
<el-form-item label="优化器-质量检测">
|
||||
<el-input
|
||||
v-model="form.optimizer_quality_prompt"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="质量检测温度">
|
||||
<el-input-number v-model="form.optimizer_quality_temperature" :min="0" :max="2" :step="0.1" />
|
||||
</el-form-item>
|
||||
<el-divider />
|
||||
|
||||
<el-form-item label="优化器-润色">
|
||||
<el-input
|
||||
v-model="form.optimizer_polish_prompt"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="润色温度">
|
||||
<el-input-number v-model="form.optimizer_polish_temperature" :min="0" :max="2" :step="0.1" />
|
||||
</el-form-item>
|
||||
<el-divider />
|
||||
|
||||
<el-form-item label="优化器-评价分类">
|
||||
<el-input
|
||||
v-model="form.optimizer_evaluate_prompt"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="评价温度">
|
||||
<el-input-number v-model="form.optimizer_evaluate_temperature" :min="0" :max="2" :step="0.1" />
|
||||
</el-form-item>
|
||||
<el-divider />
|
||||
|
||||
<el-form-item label="爬虫-提取笑话">
|
||||
<el-input
|
||||
v-model="form.crawler_extract_prompt"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="爬虫-改写">
|
||||
<el-input
|
||||
v-model="form.crawler_rewrite_prompt"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<div style="margin-top: 20px">
|
||||
<el-button type="primary" @click="handleSave" :loading="saving">保存配置</el-button>
|
||||
</div>
|
||||
@@ -106,6 +181,15 @@ const form = ref({
|
||||
crawl_enabled: false,
|
||||
crawl_keywords: '冷笑话,段子,谐音梗',
|
||||
max_pages_per_run: 3,
|
||||
generate_prompt: '',
|
||||
optimizer_quality_prompt: '',
|
||||
optimizer_polish_prompt: '',
|
||||
optimizer_evaluate_prompt: '',
|
||||
optimizer_quality_temperature: 0.3,
|
||||
optimizer_polish_temperature: 0.8,
|
||||
optimizer_evaluate_temperature: 0.3,
|
||||
crawler_extract_prompt: '',
|
||||
crawler_rewrite_prompt: '',
|
||||
})
|
||||
|
||||
const allSettings = ref([])
|
||||
@@ -126,6 +210,15 @@ const loadData = async () => {
|
||||
crawl_enabled: active.crawl_enabled,
|
||||
crawl_keywords: active.crawl_keywords || '',
|
||||
max_pages_per_run: active.max_pages_per_run,
|
||||
generate_prompt: active.generate_prompt || '',
|
||||
optimizer_quality_prompt: active.optimizer_quality_prompt || '',
|
||||
optimizer_polish_prompt: active.optimizer_polish_prompt || '',
|
||||
optimizer_evaluate_prompt: active.optimizer_evaluate_prompt || '',
|
||||
optimizer_quality_temperature: active.optimizer_quality_temperature ?? 0.3,
|
||||
optimizer_polish_temperature: active.optimizer_polish_temperature ?? 0.8,
|
||||
optimizer_evaluate_temperature: active.optimizer_evaluate_temperature ?? 0.3,
|
||||
crawler_extract_prompt: active.crawler_extract_prompt || '',
|
||||
crawler_rewrite_prompt: active.crawler_rewrite_prompt || '',
|
||||
}
|
||||
} catch (e) {
|
||||
// 没有激活配置,使用默认值
|
||||
@@ -147,7 +240,7 @@ const handleSave = async () => {
|
||||
} else {
|
||||
const created = await createSetting(form.value)
|
||||
editingId.value = created.id
|
||||
await toggleSetting(created.id) // 设为激活
|
||||
await toggleSetting(created.id)
|
||||
ElMessage.success('创建并激活成功')
|
||||
}
|
||||
await loadData()
|
||||
@@ -170,6 +263,15 @@ const handleEdit = (row) => {
|
||||
crawl_enabled: row.crawl_enabled,
|
||||
crawl_keywords: row.crawl_keywords || '',
|
||||
max_pages_per_run: row.max_pages_per_run,
|
||||
generate_prompt: row.generate_prompt || '',
|
||||
optimizer_quality_prompt: row.optimizer_quality_prompt || '',
|
||||
optimizer_polish_prompt: row.optimizer_polish_prompt || '',
|
||||
optimizer_evaluate_prompt: row.optimizer_evaluate_prompt || '',
|
||||
optimizer_quality_temperature: row.optimizer_quality_temperature ?? 0.3,
|
||||
optimizer_polish_temperature: row.optimizer_polish_temperature ?? 0.8,
|
||||
optimizer_evaluate_temperature: row.optimizer_evaluate_temperature ?? 0.3,
|
||||
crawler_extract_prompt: row.crawler_extract_prompt || '',
|
||||
crawler_rewrite_prompt: row.crawler_rewrite_prompt || '',
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user