Files
aitsc/docs/prompt_quality_module_plan.md
2026-04-06 19:02:21 +08:00

118 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 提示词质量对比与评价模块 — 开发计划
| 项 | 说明 |
|----|------|
| 目标 | 多份优化后提示词 → 模型结构化评价;评价历史检索与简单可视化对比 |
| 存储 | 与现有 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` 钳制 0100。
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 映射为 TEXTMySQL 可用原生 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` 注册蓝图并加载模型 |
| 手工建表 SQLSQLite 友好) | `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` |