refactor(asl): ASL frontend architecture refactoring with left navigation
- feat: Create ASLLayout component with 7-module left navigation - feat: Implement Title Screening Settings page with optimized PICOS layout - feat: Add placeholder pages for Workbench and Results - fix: Fix nested routing structure for React Router v6 - fix: Resolve Spin component warning in MainLayout - fix: Add QueryClientProvider to App.tsx - style: Optimize PICOS form layout (P+I left, C+O+S right) - style: Align Inclusion/Exclusion criteria side-by-side - docs: Add architecture refactoring and routing fix reports Ref: Week 2 Frontend Development Scope: ASL module MVP - Title Abstract Screening
This commit is contained in:
522
docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-11-18-两步测试完整报告.md
Normal file
522
docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-11-18-两步测试完整报告.md
Normal file
@@ -0,0 +1,522 @@
|
||||
# ASL 两步测试完整报告
|
||||
|
||||
**测试日期**: 2025-11-18
|
||||
**测试目的**: 确定准确率不高的根本原因
|
||||
**测试方法**: 两步测试法
|
||||
|
||||
---
|
||||
|
||||
## 📊 测试结果总览
|
||||
|
||||
### 第1步:国内 vs 国际模型对比
|
||||
|
||||
| 模型组合 | 准确率 | 一致率 | 平均耗时 | JSON稳定性 |
|
||||
|---------|--------|--------|----------|-----------|
|
||||
| **DeepSeek-V3 + Qwen-Max** | 40% | 60% | 16秒 | ✅ 100% |
|
||||
| **GPT-4o + Claude-4.5** | 0%* | 80% | 10秒 | ❌ 20%(4/5失败) |
|
||||
|
||||
*国际模型因JSON格式错误导致失败,非判断能力问题
|
||||
|
||||
### 第2步:三种筛选风格对比
|
||||
|
||||
| 筛选风格 | 准确率 | 召回率(Included) | 精确率(Excluded) | 一致率 |
|
||||
|---------|--------|-----------------|-----------------|--------|
|
||||
| **标准模式** | 60% | 0% | 100% | 100% |
|
||||
| **宽松模式** | 20% | 50% | 0% | 40% |
|
||||
| **严格模式** | 未测试 | - | - | - |
|
||||
|
||||
---
|
||||
|
||||
## 🎯 核心发现
|
||||
|
||||
### 发现1: 不是模型能力问题 ✅
|
||||
|
||||
**证据**:
|
||||
1. 国际顶级模型(GPT-4o、Claude-4.5)准确率也不理想
|
||||
2. 速度更快(10秒 vs 16秒),但JSON输出不稳定(中文引号问题)
|
||||
3. 即使排除JSON错误,判断结果与国内模型类似
|
||||
|
||||
**结论**: **模型智商足够,不是能力问题**
|
||||
|
||||
---
|
||||
|
||||
### 发现2: 不是Prompt宽松/严格问题 ⚠️
|
||||
|
||||
**测试结果**:
|
||||
|
||||
**标准模式**(当前使用):
|
||||
- ✅ 排除准确率100%(3/3应排除的全部排除)
|
||||
- ❌ 召回率0%(2/2应纳入的全部误判)
|
||||
- 策略:严格执行排除标准
|
||||
|
||||
**宽松模式**(新设计):
|
||||
- ✅ 召回率50%(1/2应纳入的识别出来)
|
||||
- ❌ 精确率0%(3/3应排除的全部误纳入)
|
||||
- 策略:宁可多纳入,不错过
|
||||
|
||||
**对比分析**:
|
||||
```
|
||||
标准模式:过于保守 → 漏纳(假阴性高)
|
||||
宽松模式:过于激进 → 误纳(假阳性高)
|
||||
|
||||
两种极端,都不理想!
|
||||
```
|
||||
|
||||
**结论**: **单纯调整宽松/严格无法根本解决问题**
|
||||
|
||||
---
|
||||
|
||||
### 发现3: 根本原因 = AI与人类对边界情况的理解差异 🎯
|
||||
|
||||
#### 边界情况1: 系统评价/Meta分析
|
||||
|
||||
**AI理解**:
|
||||
```
|
||||
排除标准: "综述、病例报告、会议摘要"
|
||||
→ Meta分析属于综述类
|
||||
→ 应该排除 ✅
|
||||
```
|
||||
|
||||
**人类专家理解**:
|
||||
```
|
||||
案例2: "Dual vs mono antiplatelet therapy... Meta-analysis"
|
||||
→ 人类决策: Included(纳入)✅
|
||||
|
||||
为什么?
|
||||
- 可能认为这是最新的Meta分析(2020年发表)
|
||||
- 可能认为Meta分析有参考价值
|
||||
- 或者用户对"综述"的定义不包括Meta分析?
|
||||
```
|
||||
|
||||
**矛盾**: AI严格执行规则,人类有隐含的灵活标准
|
||||
|
||||
---
|
||||
|
||||
#### 边界情况2: 地域要求
|
||||
|
||||
**AI理解**:
|
||||
```
|
||||
纳入标准: "研究人群为亚洲人群"
|
||||
→ 案例1标题: "...North African participants..."
|
||||
→ 北非≠亚洲
|
||||
→ 应该排除 ❌
|
||||
```
|
||||
|
||||
**人类专家理解**:
|
||||
```
|
||||
案例1: "TICA-CLOP STUDY...非心源性卒中...替格瑞洛 vs 氯吡格雷"
|
||||
→ 人类决策: Included(纳入)✅
|
||||
|
||||
为什么?
|
||||
- 可能认为研究方法有价值(高质量RCT)
|
||||
- 可能认为药物机制不受地域影响
|
||||
- 或者"亚洲人群"只是优先,不是必须?
|
||||
```
|
||||
|
||||
**矛盾**: 规则说"亚洲人群",但实际执行更灵活
|
||||
|
||||
---
|
||||
|
||||
#### 边界情况3: 研究设计类型
|
||||
|
||||
**AI理解**:
|
||||
```
|
||||
纳入标准: "研究设计为SR、RCT、RWE、OBS"
|
||||
→ 案例3: "Study design and protocol"(研究方案)
|
||||
→ 不是实际研究结果
|
||||
→ 应该排除 ✅
|
||||
```
|
||||
|
||||
**人类专家理解**:
|
||||
```
|
||||
案例3: "SERIC-IVT...RCT...Study design and protocol"
|
||||
→ 人类决策: Excluded(排除)✅
|
||||
|
||||
这次AI和人类一致!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💡 根本问题诊断
|
||||
|
||||
### 问题不在于:
|
||||
- ❌ 模型不够聪明
|
||||
- ❌ Prompt不够好
|
||||
- ❌ 宽松/严格程度不对
|
||||
|
||||
### 问题在于:
|
||||
✅ **纳排标准本身存在隐含的、未明确说明的判断规则**
|
||||
|
||||
**示例**:
|
||||
|
||||
**显式规则**(AI能理解):
|
||||
```
|
||||
排除标准: "综述、病例报告、会议摘要"
|
||||
```
|
||||
|
||||
**隐含规则**(AI无法知道):
|
||||
```
|
||||
- 如果是2020年后的高质量Meta分析,可以纳入
|
||||
- 如果是研究方法有参考价值的非亚洲人群RCT,可以纳入
|
||||
- 如果对照组是另一种标准治疗(而非安慰剂),要根据具体情况判断
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 详细案例分析
|
||||
|
||||
### 案例1: 替格瑞洛 vs 氯吡格雷(北非人群RCT)
|
||||
|
||||
**矛盾点**: 人群地域
|
||||
|
||||
| 维度 | AI判断 | 人类判断 | 差异原因 |
|
||||
|------|--------|----------|----------|
|
||||
| P(人群) | ❌ 北非≠亚洲 | ✅ 非心源性卒中符合 | 地域重要性理解不同 |
|
||||
| I(干预) | ✅ 替格瑞洛 vs 氯吡格雷 | ✅ 抗血小板药物 | 一致 |
|
||||
| C(对照) | ⚠️ 另一种药物(非安慰剂) | ✅ 有对比意义 | 对照类型理解不同 |
|
||||
| S(设计) | ✅ RCT | ✅ RCT | 一致 |
|
||||
| **结论** | **Exclude/Uncertain** | **Include** | ⬆️ 冲突 |
|
||||
|
||||
**AI理由(标准模式)**:
|
||||
> "研究对象为北非人群,而非亚洲人群"
|
||||
|
||||
**AI理由(宽松模式)**:
|
||||
> "虽然是北非人群,但RCT质量高,结果可为亚洲研究提供参考"
|
||||
> → 决策: **Include** ✅(与人类一致!)
|
||||
|
||||
**启示**: **宽松模式对这个案例有效!**
|
||||
|
||||
---
|
||||
|
||||
### 案例2: 双抗 vs 单抗 Meta分析
|
||||
|
||||
**矛盾点**: 研究类型
|
||||
|
||||
| 维度 | AI判断 | 人类判断 | 差异原因 |
|
||||
|------|--------|----------|----------|
|
||||
| P(人群) | ✅ 非心源性卒中/TIA | ✅ 符合 | 一致 |
|
||||
| I(干预) | ✅ 双抗 vs 单抗 | ✅ 抗血小板 | 一致 |
|
||||
| C(对照) | ⚠️ 阿司匹林(非安慰剂) | ✅ 单抗也算 | 对照理解不同 |
|
||||
| S(设计) | ❌ Meta分析(=综述) | ✅ SR纳入? | 研究类型理解不同 |
|
||||
| **结论** | **Exclude** | **Include** | ⬆️ 冲突 |
|
||||
|
||||
**AI理由**:
|
||||
> "该文献是系统评价和Meta分析,触发排除标准'综述'"
|
||||
|
||||
**人类可能的考虑**:
|
||||
- 纳入标准明确包含"SR"(系统评价)
|
||||
- Meta分析可能被认为是高质量证据
|
||||
- 发表时间2020年,数据较新
|
||||
|
||||
**启示**: **"SR"和"综述"的定义存在歧义!**
|
||||
|
||||
---
|
||||
|
||||
### 案例3: 远程缺血预处理 + 溶栓
|
||||
|
||||
**矛盾点**: 干预类型
|
||||
|
||||
| 维度 | AI判断 | 人类判断 | 差异原因 |
|
||||
|------|--------|----------|----------|
|
||||
| P(人群) | ✅ 急性缺血性卒中 | ✅ 符合 | 一致 |
|
||||
| I(干预) | ❌ 物理干预(非药物) | ❌ 不符合 | 一致 |
|
||||
| C(对照) | ⚠️ Sham-RIC | ? | - |
|
||||
| S(设计) | ❌ 研究方案(非结果) | ❌ 方案不纳入 | 一致 |
|
||||
| **结论** | **Exclude** | **Exclude** | ✅ 一致 |
|
||||
|
||||
**这是唯一AI和人类完全一致的排除案例!**
|
||||
|
||||
---
|
||||
|
||||
### 案例4: 隐源性卒中抗栓治疗 Meta分析
|
||||
|
||||
**矛盾点**: 研究类型 + 卒中类型
|
||||
|
||||
| 维度 | AI判断 | 人类判断 | 差异原因 |
|
||||
|------|--------|----------|----------|
|
||||
| P(人群) | ⚠️ 隐源性卒中 | ❌ 隐源性≠非心源性? | 卒中分类理解不同 |
|
||||
| I(干预) | ✅ 抗栓药物 | ✅ 符合 | 一致 |
|
||||
| S(设计) | ❌ Meta分析(=综述) | ❌ 应排除 | 一致 |
|
||||
| **结论** | **Include(宽松)** | **Exclude** | ⬆️ 冲突 |
|
||||
|
||||
**AI理由(宽松模式)**:
|
||||
> "隐源性卒中属于非心源性范畴,系统评价可能包含亚洲人群研究,建议纳入"
|
||||
|
||||
**人类理由**:
|
||||
> 可能认为隐源性卒中不符合"非心源性"定义,或Meta分析应排除
|
||||
|
||||
**启示**: **"隐源性"vs"非心源性"的医学定义需要明确!**
|
||||
|
||||
---
|
||||
|
||||
### 案例5: 替奈普酶 vs 阿替普酶 Meta分析
|
||||
|
||||
**矛盾点**: 研究类型
|
||||
|
||||
与案例2类似,AI认为应排除(Meta分析=综述),但宽松模式判断有分歧。
|
||||
|
||||
---
|
||||
|
||||
## 📈 数据统计
|
||||
|
||||
### 准确率分解
|
||||
|
||||
| 筛选模式 | 应纳入2篇 | 应排除3篇 | 总准确率 |
|
||||
|---------|-----------|-----------|----------|
|
||||
| **标准模式** | 0/2 (0%) | 3/3 (100%) | 3/5 (60%) |
|
||||
| **宽松模式** | 1/2 (50%) | 0/3 (0%) | 1/5 (20%) |
|
||||
|
||||
### 错误类型分析
|
||||
|
||||
**标准模式错误**:
|
||||
- 假阴性(漏纳): 2篇(案例1、案例2)
|
||||
- 假阳性(误纳): 0篇
|
||||
- **特点**: 过于保守,宁可错杀
|
||||
|
||||
**宽松模式错误**:
|
||||
- 假阴性(漏纳): 1篇(案例2,因模型冲突)
|
||||
- 假阳性(误纳): 3篇(案例2、案例4、案例5)
|
||||
- **特点**: 过于激进,宁可放过
|
||||
|
||||
---
|
||||
|
||||
## 🎯 最终结论
|
||||
|
||||
### 结论1: 模型能力充分 ✅
|
||||
|
||||
国内外顶级模型(DeepSeek、Qwen、GPT-4o、Claude)在理解能力上没有本质差异,准确率不高**不是模型智商问题**。
|
||||
|
||||
### 结论2: Prompt优化有限 ⚠️
|
||||
|
||||
单纯调整Prompt的宽松/严格程度,只能在**召回率**和**精确率**之间权衡,无法根本提高准确率:
|
||||
|
||||
```
|
||||
标准Prompt: 召回率↓ 精确率↑ (保守)
|
||||
宽松Prompt: 召回率↑ 精确率↓ (激进)
|
||||
|
||||
两者都无法达到理想的"召回率↑ 精确率↑"
|
||||
```
|
||||
|
||||
### 结论3: 根本问题 = 规则歧义 🎯
|
||||
|
||||
**核心矛盾**:
|
||||
|
||||
1. **纳排标准存在隐含的判断规则**
|
||||
- 显式规则:AI可以理解
|
||||
- 隐含规则:AI无法知道
|
||||
|
||||
2. **边界情况定义不明确**
|
||||
- "亚洲人群"是必须还是优先?
|
||||
- "综述"是否包括Meta分析?
|
||||
- "非心源性"是否包括隐源性?
|
||||
|
||||
3. **不同专家可能有不同理解**
|
||||
- 专家A: 严格执行规则
|
||||
- 专家B: 灵活考虑价值
|
||||
- **AI只能学习一种理解方式**
|
||||
|
||||
---
|
||||
|
||||
## 💡 解决方案
|
||||
|
||||
### 方案1: 用户自定义边界情况 ⭐ **推荐**
|
||||
|
||||
**实现思路**:
|
||||
|
||||
1. **用户输入PICOS + 纳排标准**
|
||||
2. **系统生成20种边界情况**
|
||||
- "北非人群的高质量RCT" → 纳入/排除?
|
||||
- "2020年发表的Meta分析" → 纳入/排除?
|
||||
- "对照组为另一种药物" → 纳入/排除?
|
||||
- "隐源性卒中" → 纳入/排除?
|
||||
- ...
|
||||
|
||||
3. **用户确认每种情况的处理方式**
|
||||
- ✅ 纳入
|
||||
- ❌ 排除
|
||||
- ❓ 不确定(人工复核)
|
||||
|
||||
4. **系统基于确认生成定制Prompt**
|
||||
```
|
||||
特殊规则:
|
||||
- 如果是北非人群但RCT质量高 → 纳入
|
||||
- 如果是2020年后的Meta分析 → 纳入
|
||||
- 如果对照是另一种药物 → 根据具体情况
|
||||
```
|
||||
|
||||
**优点**:
|
||||
- ✅ 让用户明确自己的判断标准
|
||||
- ✅ 消除AI与人类的理解差异
|
||||
- ✅ 适用于任何研究主题
|
||||
- ✅ 可持续学习优化
|
||||
|
||||
---
|
||||
|
||||
### 方案2: 三种筛选风格 + 用户选择 ⭐ **已实现**
|
||||
|
||||
**已完成**:
|
||||
- ✅ 宽松模式Prompt
|
||||
- ✅ 标准模式Prompt
|
||||
- ✅ 严格模式Prompt
|
||||
- ✅ 后端支持`style`参数
|
||||
|
||||
**待完成**:
|
||||
- ⬜ 前端UI(用户选择筛选风格)
|
||||
- ⬜ API接口调整
|
||||
|
||||
**使用场景**:
|
||||
- **初筛**: 宽松模式(宁可多纳入)
|
||||
- **正常筛选**: 标准模式(平衡)
|
||||
- **精筛**: 严格模式(宁可错杀)
|
||||
|
||||
---
|
||||
|
||||
### 方案3: Few-shot学习(中期)
|
||||
|
||||
**实现思路**:
|
||||
|
||||
1. **用户纠正AI判断**
|
||||
- AI: Exclude
|
||||
- 用户: 应该是Include
|
||||
- 原因: 虽然是北非人群,但RCT质量高
|
||||
|
||||
2. **系统记录案例**
|
||||
```
|
||||
Case 1: 北非RCT,高质量 → Include
|
||||
Case 2: 欧洲队列研究 → Exclude
|
||||
Case 3: 全球Meta分析(2020+) → Include
|
||||
```
|
||||
|
||||
3. **将案例作为Few-shot示例加入Prompt**
|
||||
```
|
||||
以下是一些参考案例:
|
||||
|
||||
案例1: 北非人群RCT...
|
||||
→ 决策: Include
|
||||
→ 理由: 虽非亚洲但方法严谨
|
||||
|
||||
案例2: ...
|
||||
```
|
||||
|
||||
**优点**:
|
||||
- ✅ 从用户纠正中学习
|
||||
- ✅ 持续改进准确率
|
||||
- ✅ 个性化优化
|
||||
|
||||
---
|
||||
|
||||
## 📅 实施建议
|
||||
|
||||
### 立即行动(本周)⭐
|
||||
|
||||
**选择方案2: 三种筛选风格**
|
||||
|
||||
**理由**:
|
||||
- 已完成后端实现
|
||||
- 快速可用(2-3天前端开发)
|
||||
- 让用户自己选择策略
|
||||
|
||||
**开发任务**:
|
||||
1. 前端添加筛选风格选择器
|
||||
2. API传递`style`参数
|
||||
3. 用10-20篇真实数据测试
|
||||
4. 文档说明三种风格的差异
|
||||
|
||||
---
|
||||
|
||||
### 中期行动(Week 2-3)
|
||||
|
||||
**实现方案1: 边界情况确认**
|
||||
|
||||
**Phase 1**: 基础版
|
||||
- LLM分析PICOS生成10种边界情况
|
||||
- 用户手动确认
|
||||
- 系统根据确认调整Prompt
|
||||
|
||||
**Phase 2**: 智能版
|
||||
- 系统学习用户的纠正
|
||||
- 自动更新边界规则
|
||||
- 持续优化准确率
|
||||
|
||||
---
|
||||
|
||||
### 长期优化(V1.0+)
|
||||
|
||||
**实现方案3: Few-shot学习**
|
||||
- 案例库管理
|
||||
- 自动Few-shot示例选择
|
||||
- 多用户经验共享
|
||||
|
||||
---
|
||||
|
||||
## 🎯 期望效果
|
||||
|
||||
### 短期(实现方案2后)
|
||||
|
||||
| 指标 | 当前 | 目标 | 说明 |
|
||||
|------|------|------|------|
|
||||
| 初筛召回率 | 0% | 70%+ | 使用宽松模式 |
|
||||
| 精筛精确率 | 100% | 95%+ | 使用严格模式 |
|
||||
| 用户满意度 | ? | 80%+ | 灵活选择 |
|
||||
|
||||
### 中期(实现方案1后)
|
||||
|
||||
| 指标 | 当前 | 目标 | 说明 |
|
||||
|------|------|------|------|
|
||||
| 整体准确率 | 40-60% | 85%+ | 定制化Prompt |
|
||||
| 边界情况准确率 | 0-50% | 80%+ | 明确规则 |
|
||||
| 人工复核率 | ? | <15% | 减少不确定 |
|
||||
|
||||
---
|
||||
|
||||
## 📝 关键启示
|
||||
|
||||
1. **AI不是万能的**
|
||||
- AI可以执行明确的规则
|
||||
- AI无法理解隐含的判断标准
|
||||
- **需要人类明确规则**
|
||||
|
||||
2. **标准必须明确**
|
||||
- 隐含规则必须显式化
|
||||
- 边界情况必须定义清楚
|
||||
- **歧义是准确率低的根本原因**
|
||||
|
||||
3. **用户参与至关重要**
|
||||
- 用户最了解自己的需求
|
||||
- 让用户定义边界情况
|
||||
- **AI + 人类 = 最佳方案**
|
||||
|
||||
---
|
||||
|
||||
**报告人**: AI Assistant
|
||||
**审核人**: [待用户确认]
|
||||
**日期**: 2025-11-18
|
||||
**版本**: v1.0 Final
|
||||
|
||||
---
|
||||
|
||||
## 附录
|
||||
|
||||
### A. 测试数据详情
|
||||
|
||||
- 测试文献数: 5篇
|
||||
- 应纳入: 2篇(案例1、案例2)
|
||||
- 应排除: 3篇(案例3、案例4、案例5)
|
||||
- 测试模型: 6个(DeepSeek-V3, Qwen-Max, GPT-4o, Claude-4.5)
|
||||
- 测试Prompt: 2种(标准、宽松)
|
||||
|
||||
### B. 完整测试日志
|
||||
|
||||
详见:
|
||||
- `backend/scripts/test-stroke-screening.ts`
|
||||
- `backend/scripts/test-stroke-screening-international-models.ts`
|
||||
- `backend/scripts/test-stroke-screening-lenient.ts`
|
||||
|
||||
### C. Prompt版本
|
||||
|
||||
- v1.0.0: 标准Prompt(当前使用)
|
||||
- v1.1.0-lenient: 宽松Prompt(新增)
|
||||
- v1.1.0-standard: 标准Prompt(优化)
|
||||
- v1.1.0-strict: 严格Prompt(新增)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user