118 lines
4.6 KiB
Markdown
118 lines
4.6 KiB
Markdown
|
|
# 提示词质量对比与评价模块 — 开发计划
|
|||
|
|
|
|||
|
|
| 项 | 说明 |
|
|||
|
|
|----|------|
|
|||
|
|
| 目标 | 多份优化后提示词 → 模型结构化评价;评价历史检索与简单可视化对比 |
|
|||
|
|
| 存储 | 与现有 Flask-SQLAlchemy 一致;开发默认 SQLite(`DATABASE_URL` 未设时);生产可用 MySQL,表结构通用 |
|
|||
|
|
|
|||
|
|
## 1. 接口定义
|
|||
|
|
|
|||
|
|
### POST `/api/prompt-quality/analyze`
|
|||
|
|
|
|||
|
|
**输入** `application/json`:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"prompts": ["提示词文本1", "提示词文本2"],
|
|||
|
|
"task_context": "可选:任务背景/领域,便于模型对齐预期输出"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**输出** `application/json`:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"data": {
|
|||
|
|
"batch_id": "uuid",
|
|||
|
|
"results": [
|
|||
|
|
{
|
|||
|
|
"optimized_prompt": "与输入对应的完整文本",
|
|||
|
|
"evaluation": {
|
|||
|
|
"score": 82,
|
|||
|
|
"strengths": ["..."],
|
|||
|
|
"weaknesses": ["..."],
|
|||
|
|
"suggestions": ["..."],
|
|||
|
|
"applicability": ["..."],
|
|||
|
|
"mandatory_fixes": ["必须修正项"],
|
|||
|
|
"optimization_suggestions": ["可优化建议"]
|
|||
|
|
},
|
|||
|
|
"history_id": "记录主键字符串",
|
|||
|
|
"timestamp": "2026-04-03T12:00:00+00:00"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"batch_comparison": "批量横向对比摘要(可选)",
|
|||
|
|
"incremental_learning_hints": ["从本批提炼的可迁移经验"]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### GET `/api/prompt-quality/history`
|
|||
|
|
|
|||
|
|
**Query**:`page`, `per_page`, `date_from`, `date_to`(ISO 日期), `q`(关键词,匹配提示词片段或评价 JSON 文本), `batch_id`(可选)
|
|||
|
|
|
|||
|
|
**输出**:分页列表,每条含 `batch_id`、`created_at`、`preview`、`item_count`、`results` 摘要或详情开关。
|
|||
|
|
|
|||
|
|
### GET `/api/prompt-quality/history/<int:record_id>`
|
|||
|
|
|
|||
|
|
单条记录详情(权限:同 `user_id`)。
|
|||
|
|
|
|||
|
|
## 2. 评价逻辑(算法描述)
|
|||
|
|
|
|||
|
|
1. **预处理**:去空、单条最大长度截断(如 8000 字符)、条数上限(如 ≤8)。
|
|||
|
|
2. **模型调用**:系统角色 = 提示词评估专家;用户内容 = 编号列表 + 可选 `task_context`;要求 **仅输出合法 JSON**(与约定 schema 一致)。
|
|||
|
|
3. **维度约束**(写入 system 说明):清晰度、指令完整性、可操作性、预期输出匹配度;区分 **mandatory_fixes**(必须修正)与 **optimization_suggestions**(建议优化)。
|
|||
|
|
4. **校验**:`json.loads`;缺字段时用安全默认值补全;`score` 钳制 0–100。
|
|||
|
|
5. **持久化**:每条输入写一行 `prompt_quality_record`;同批次共用 `batch_id`;批次级 `batch_comparison` / `incremental_learning_hints` 挂在 `prompt_index=0` 行或独立字段。
|
|||
|
|
|
|||
|
|
## 3. 表结构要点
|
|||
|
|
|
|||
|
|
**`prompt_quality_record`**
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| id | PK | `history_id` 来源 |
|
|||
|
|
| user_id | int, index | 与 Session 对齐 |
|
|||
|
|
| batch_id | string(36), index | 同次分析 UUID |
|
|||
|
|
| prompt_index | int | 批次内序号 |
|
|||
|
|
| optimized_prompt | text | 被评文本 |
|
|||
|
|
| evaluation_json | JSON | 结构化评价(含两类优先级字段) |
|
|||
|
|
| batch_summary | text, nullable | 批次对比摘要(仅首条或冗余存储) |
|
|||
|
|
| incremental_hints_json | JSON, nullable | 增量学习建议列表 |
|
|||
|
|
| created_at | datetime | ISO 时间来源 |
|
|||
|
|
|
|||
|
|
SQLite:`JSON` 由 SQLAlchemy 映射为 TEXT;MySQL 可用原生 JSON。
|
|||
|
|
|
|||
|
|
## 4. 查询 API 示例
|
|||
|
|
|
|||
|
|
```http
|
|||
|
|
GET /api/prompt-quality/history?page=1&per_page=10&date_from=2026-04-01&date_to=2026-04-03&q=openlaw
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 5. 前端(Vue)
|
|||
|
|
|
|||
|
|
- 路由:`/prompt-quality`
|
|||
|
|
- 多行文本输入,约定 **空行分隔** 多条提示词;按钮「模型分析评价」
|
|||
|
|
- 展示:卡片列表(score、优劣、两类建议、适用场景);批次对比与增量建议
|
|||
|
|
- 历史区:表格 + 筛选 + 查看详情抽屉
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**实施顺序**:模型与建表 SQL → service + 蓝图 → 注册应用 → Vue API + 页面 + 路由 + 导航。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 实施记录(已完成)
|
|||
|
|
|
|||
|
|
| 组件 | 路径 |
|
|||
|
|
|------|------|
|
|||
|
|
| 计划文档 | `docs/prompt_quality_module_plan.md` |
|
|||
|
|
| ORM | `src/flask_prompt_master/models/prompt_quality_models.py` |
|
|||
|
|
| LLM 服务 | `src/flask_prompt_master/services/prompt_quality_service.py` |
|
|||
|
|
| API 蓝图 | `src/flask_prompt_master/routes/prompt_quality_routes.py`,前缀 `/api/prompt-quality` |
|
|||
|
|
| 应用注册 | `src/flask_prompt_master/__init__.py` 注册蓝图并加载模型 |
|
|||
|
|
| 手工建表 SQL(SQLite 友好) | `scripts/prompt_quality_schema.sql` |
|
|||
|
|
| 建表 | 首次可执行 `db.create_all()`(已在当前环境对 MySQL 验证) |
|
|||
|
|
| Vue 页面 | `vue-app/src/views/PromptQualityView.vue`,路由 `/prompt-quality`,顶栏「质量评价」 |
|
|||
|
|
| Vue API | `vue-app/src/api/modules/promptQuality.ts`、`api/types/promptQuality.ts` |
|