W12 评估报告:毕业项目 22 query 批量测试
评估对象:个人知识库问答 Agent(ReAct 多工具 + RAG + 记忆,qwen2.5:14b) 评估时间:2026-08-03 测试集:22 个 query(曲库类 10 + 知识类 8 + 综合类 4)
总览
| 指标 | 结果 |
|---|---|
| 成功率 | 22/22 (100%) |
| 平均轮次 | 2.1 |
| 耗时 | ~4 分钟(22 query) |
| search_catalog 命中 | 12 次 |
| knowledge_search 命中 | 1 次(修复前) |
| 无工具 query | 12 个(修复前) |
分类分析
曲库类(10 个):search_catalog 正确命中 ✅
“找一首电子摇滚 BPM 130-150” → 返回真实曲库数据
- 大部分 2-3 轮完成(1 轮决策 + 1 轮工具 + 1 轮回答)
- 异常:
找一首 BPM 90 的慢歌调了 4 次工具(steps=5)——14b 偶发重复调用
知识类(8 个):修复前不走 RAG ⚠️ → 修复后 ✅
- 问题:修复前
knowledge_search只命中 1 次——“电子摇滚适合什么运动场景”等 query 被 LLM 凭训练知识直接回答,RAG 工具形同虚设 - 根因:prompt 没有强制”知识类问题必须查知识库”
- 修复:prompt 加规则”涉及音乐知识/场景分析的问题 → 必须调用 knowledge_search”
- 验证:修复后知识类 query 正确走工具,回答基于检索结果
综合类(4 个):LLM 判断合理 ✅
“适合健身房的电子摇滚一般多少钱” → 1-2 轮,多数无工具直接答(训练知识足够)
发现的问题
| # | 问题 | 性质 | 处理 |
|---|---|---|---|
| 1 | 知识类不走 RAG | Prompt 设计 | ✅ prompt 强制工具使用 |
| 2 | async 嵌套 RuntimeWarning | 代码 bug | ✅ _extract_preferences 改 async |
| 3 | 重金属摇滚查不到(mock 缺数据) | 数据源 | ⏳ W11 接真实曲库 |
| 4 | BPM 90 重复调用 4 次 | 模型偶发 | MAX_STEPS=8 兜底(不 crash) |
结论
评估的价值不是证明”能跑”,是发现”该查的不查”。100% 成功率掩盖了知识类 query 不依赖 RAG 的缺陷——只有 22 query 批量跑 + 工具命中统计才能暴露。这个评估体系(分类 query + 成功率 + 轮次 + 工具命中)可以直接复用到 W11 真实数据源接入后的回归测试。
后续
- W11 接真实曲库后重跑评估(对比工具命中率)
- 增加”记忆生效”测试用例(多轮对话后偏好是否被记住)
- 增加并发压测(FastAPI 多 session)