Files
AIclinicalresearch/backend/docs/ASL-Prompt质量分析报告-v1.0.0.md
HaHafeng 88cc049fb3 feat(asl): Complete Day 5 - Fulltext Screening Backend API Development
- Implement 5 core API endpoints (create task, get progress, get results, update decision, export Excel)
- Add FulltextScreeningController with Zod validation (652 lines)
- Implement ExcelExporter service with 4-sheet report generation (352 lines)
- Register routes under /api/v1/asl/fulltext-screening
- Create 31 REST Client test cases
- Add automated integration test script
- Fix PDF extraction fallback mechanism in LLM12FieldsService
- Update API design documentation to v3.0
- Update development plan to v1.2
- Create Day 5 development record
- Clean up temporary test files
2025-11-23 10:52:07 +08:00

9.5 KiB
Raw Permalink Blame History

ASL Prompt质量分析报告 v1.0.0

测试时间: 2025-11-18
测试版本: v1.0.0-MVP
测试模型: DeepSeek-V3 + Qwen3-72B
测试样本数: 10篇


📊 测试结果概览

质量指标 实际值 目标值 状态 差距
准确率 60.0% ≥85% -25%
一致率 70.0% ≥80% -10%
平均置信度 0.95 - -
需人工复核率 30.0% ≤20% +10%

混淆矩阵

                预测纳入    预测排除    不确定
实际纳入          2           1          0
实际排除          0           4          0
不确定            0           0          0
  • 真阳性(TP): 2篇 - 正确识别应纳入的文献
  • 假阴性(FN): 1篇 - 误将应纳入的文献判为排除
  • 真阴性(TN): 4篇 - 正确识别应排除的文献
  • 假阳性(FP): 0篇 - 无误将应排除的判为纳入

🔍 错误案例分析

错误1: test-001 (假阴性)

标题: Efficacy and Safety of Empagliflozin in Patients with Type 2 Diabetes
期望: include
实际: exclude
判断: 两个模型一致判断为exclude

原因分析:

  • 文献虽然是RCTPICO的P、I、C、S都完全匹配
  • 但主要结局是HbA1c、体重、血压等代谢指标
  • 未报告心血管结局数据MACE、心衰住院、心血管死亡
  • 两个模型都敏锐地识别出缺乏结局指标O

结论: 这实际上可能是模型正确、期望值有误的情况。根据PICO标准如果文献不报告心血管结局应该排除。建议修正测试样本的expectedDecision为exclude


错误2: test-007 (PICO维度冲突)

标题: Pharmacokinetics and Pharmacodynamics of Empagliflozin in Healthy Volunteers
期望: exclude
实际: pending (冲突)
两模型结论: 都是exclude

PICO判断对比:

维度 DeepSeek Qwen 冲突?
P mismatch mismatch 一致
I partial match 冲突
C match match 一致
S partial match 冲突
结论 exclude exclude 一致

问题: 虽然最终结论一致但I和S维度判断不同导致系统判定为冲突

原因分析:

  • I维度: DeepSeek认为健康志愿者研究的SGLT2抑制剂只是partial因为不是治疗性应用Qwen认为只要是SGLT2抑制剂就match
  • S维度: DeepSeek认为Phase 1研究只是partial RCTQwen认为有随机、安慰剂对照就是match

优化方向: 需要明确Prompt中关于"研究设计"和"干预措施"的判断标准


错误3: test-008 (C维度冲突)

标题: Comparative Effectiveness of SGLT2 Inhibitors versus DPP-4 Inhibitors
期望: exclude
实际: pending (冲突)
两模型结论: 都是exclude

PICO判断对比:

维度 DeepSeek Qwen 冲突?
P match match 一致
I match match 一致
C partial mismatch 冲突
S mismatch mismatch 一致
结论 exclude exclude 一致

问题: C维度判断不同DPP-4抑制剂是partial还是mismatch

原因分析:

  • DeepSeek认为DPP-4抑制剂算partial因为它是降糖疗法的一种
  • Qwen认为必须是安慰剂或常规疗法DPP-4不符合

优化方向: 需要明确"常规降糖疗法"的定义范围


错误4: test-010 (I维度重大冲突)

标题: Sotagliflozin (双重SGLT1/SGLT2抑制剂)
期望: uncertain
实际: pending (冲突)
模型结论: DeepSeek=exclude, Qwen=include

PICO判断对比:

维度 DeepSeek Qwen 冲突?
P match match 一致
I mismatch match 严重冲突
C match match 一致
S match match 一致
结论 exclude include 严重冲突

问题: 这是最严重的冲突案例两个模型对conclusion完全相反

原因分析:

  • DeepSeek严格解释Sotagliflozin是双重抑制剂与纯SGLT2抑制剂不同判为mismatch → exclude
  • Qwen宽松解释Sotagliflozin包含SGLT2抑制作用判为match → include
  • 实际上这种边界情况应该是uncertain,需要人工判断

优化方向:

  1. 在Prompt中明确"SGLT2抑制剂"是否包括双重抑制剂
  2. 对于边界情况引导模型倾向于uncertain而非直接include/exclude

💡 核心问题总结

1. PICO维度判断标准模糊

问题: match / partial / mismatch的界限不够清晰

影响:

  • 导致两个模型对同一维度判断不同
  • 即使最终结论一致,也会被系统标记为冲突

解决方案:

  • 在Prompt中增加具体的判断标准和示例
  • 使用Few-shot示例展示边界情况的判断逻辑

2. 边界情况处理不一致

典型案例:

  • 健康志愿者 vs 患者
  • 双重抑制剂 vs 单一抑制剂
  • DPP-4 vs 安慰剂/常规疗法

问题:

  • 两个模型对边界情况的判断策略不同
  • DeepSeek倾向于保守更多mismatch
  • Qwen倾向于宽松更多match

解决方案:

  • 在Prompt中明确边界情况的处理原则
  • 引导模型在不确定时使用"uncertain"

3. 结局指标(O)未纳入judgment

问题:

  • 当前Prompt只要求判断P、I、C、S四个维度
  • 但结局指标(O)也是重要的纳排标准
  • test-001就是因为缺乏心血管结局而被正确排除

解决方案:

  • 考虑在judgment中增加O维度
  • 或在reason中明确要求说明结局指标是否符合

4. 冲突检测过于严格

问题:

  • 目前只要PICO任一维度不同就判定为冲突
  • 即使conclusion一致如test-007、test-008

影响:

  • 提高了人工复核率30% > 20%
  • 降低了系统的自动化程度

解决方案:

  • 优化冲突检测逻辑只有conclusion不同才算严重冲突
  • PICO维度的小差异可以降级为"需注意"而非"冲突"

🎯 Prompt优化建议

优先级1: 增加Few-shot示例

在Prompt中增加3-5个标准案例展示

  1. 明确的纳入案例RCT + 心血管结局)
  2. 明确的排除案例(综述、动物实验、病例报告)
  3. 边界情况1双重抑制剂 → uncertain
  4. 边界情况2健康志愿者 → exclude
  5. 边界情况3缺乏结局指标 → exclude

优先级2: 明确PICO判断标准

为每个维度提供具体的判断规则:

P (研究人群):

  • match: 成人2型糖尿病患者
  • partial: 包含2型糖尿病但混合其他人群如1型糖尿病
  • mismatch: 健康志愿者、动物模型、1型糖尿病

I (干预措施):

  • match: empagliflozin, dapagliflozin, canagliflozin, ertugliflozin等单一SGLT2抑制剂
  • partial: 联合用药但包含SGLT2抑制剂
  • mismatch: 双重SGLT1/SGLT2抑制剂如sotagliflozin、其他药物

C (对照):

  • match: 安慰剂、常规降糖疗法(胰岛素、二甲双胍、磺脲类)
  • partial: 包含安慰剂+标准治疗
  • mismatch: 活性对照DPP-4抑制剂、GLP-1受体激动剂等

S (研究设计):

  • match: 随机对照试验RCT、双盲、安慰剂对照
  • partial: 准随机试验
  • mismatch: 观察性研究、队列研究、病例对照、综述、动物实验、病例报告

优先级3: 强化uncertain的使用

在Prompt中明确指导

  • 当信息不足以做出判断时使用uncertain
  • 当遇到边界情况如双重抑制剂倾向于uncertain
  • 当PICO维度有2个及以上partial时考虑uncertain

优先级4: 增加O维度检查

在Prompt中增加要求

  • 检查是否报告了心血管结局数据
  • 如果缺乏结局数据即使PICO其他维度匹配也应排除

📈 预期改进效果

实施上述优化后,预期指标改善:

指标 当前 预期 改善幅度
准确率 60% 85-90% +25-30%
一致率 70% 85-90% +15-20%
需人工复核率 30% 15-20% -10-15%

改善策略:

  1. Few-shot示例 → +15%准确率 +10%一致率
  2. 明确判断标准 → +5%准确率 +10%一致率
  3. 优化冲突检测 → -10%复核率
  4. 增加O维度检查 → +5%准确率

📝 下一步行动

立即行动 (本周)

  • 创建v1.0.1 Prompt版本增加Few-shot示例
  • 修正test-001的期望值include → exclude
  • 优化冲突检测逻辑只检测conclusion冲突

短期行动 (下周)

  • 增加更多测试样本目标20-30篇
  • 测试不同温度参数的影响
  • 对比GPT-5和Claude-4.5的表现

中期行动 (V1.0阶段)

  • 实施智能质量控制策略
  • 建立Few-shot示例库
  • 实现自动质量审计

测试成功案例

值得肯定的是以下6篇文献都被正确判断

  1. test-002: RCT + 心血管结局 → 正确纳入
  2. test-003: 系统综述 → 正确排除
  3. test-004: 动物实验 → 正确排除
  4. test-005: RCT + 心血管结局(CREDENCE) → 正确纳入
  5. test-006: 回顾性队列 → 正确排除
  6. test-009: 病例报告 → 正确排除

成功因素:

  • 这些案例都是典型的纳入/排除场景
  • PICO维度边界清晰
  • 两个模型判断完全一致

这表明Prompt的基本框架是正确的,只需要针对边界情况进行优化即可。


报告生成时间: 2025-11-18
报告版本: v1.0.0
下次评估计划: v1.0.1 Prompt优化后重新测试