feat(aia): Complete AIA V2.0 with universal streaming capabilities

Major Changes:
- Add StreamingService with OpenAI Compatible format
- Upgrade Chat component V2 with Ant Design X integration
- Implement AIA module with 12 intelligent agents
- Update API routes to unified /api/v1 prefix
- Update system documentation

Backend (~1300 lines):
- common/streaming: OpenAI Compatible adapter
- modules/aia: 12 agents, conversation service, streaming integration
- Update route versions (RVW, PKB to v1)

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace (100% prototype restoration)
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook
- Update API endpoints to v1

Documentation:
- AIA module status guide
- Universal capabilities catalog
- System overview updates
- All module documentation sync

Tested: Stream response verified, authentication working
Status: AIA V2.0 core completed (85%)
This commit is contained in:
2026-01-14 19:15:01 +08:00
parent 3d35e9c58b
commit 1b53ab9d52
386 changed files with 52096 additions and 65238 deletions

View File

@@ -1,4 +1,4 @@
# 智能Prompt生成模块 - 开发计划
# <EFBFBD><EFBFBD>Prompt<EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 撘<><E69298>𤏸恣<F0A48FB8>?
**<EFBFBD><EFBFBD>𧋦**: v1.0
**<EFBFBD><EFBFBD>**: 2025-11-18
@@ -8,11 +8,11 @@
## <20><EFBFBD><E8A9A8><EFBFBD>
**解决问题**: 消除AI与人类对边界情况的理解差异
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**: <EFBFBD>膄AI銝𦒘犖蝐餃笆颲寧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>榆撘?
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**:
```
用户输入PICOS → AI理解分析 → 生成Prompt → 用户修改 → 开始筛选
<EFBFBD><EFBFBD>颲枏<EFBFBD>PICOS <20>?AI<41><49><EFBFBD><E59CBE><EFBFBD> <20>?<3F><><EFBFBD>Prompt <20>?<3F><EFBFBD>靽格㺿 <20>?撘<>憪讠<E686AA><E8AEA0>?
```
---
@@ -21,7 +21,7 @@
### <20><EFBFBD><E8A098><EFBFBD>
#### 1. 用户输入 ✅
#### 1. <EFBFBD><EFBFBD>颲枏<EFBFBD> <20>?
**<EFBFBD>滨垢銵典<EFBFBD>**:
```typescript
@@ -42,7 +42,7 @@
---
#### 2. AI理解与分析 🆕
#### 2. AI<EFBFBD><EFBFBD>圾銝𤾸<EFBFBD><EFBFBD>?<3F><>
**颲枏<E9A2B2>**: <20><EFBFBD><E586BD><EFBFBD>ICOS + 蝥單<E89DA5><E596AE><EFBFBD><EFBFBD>
@@ -57,7 +57,7 @@
id: number;
question: string; // "憒<><E68692><EFBFBD>𠉛弦鈭箇黎<E7AE87>舀洹蝢𦒘<E89DA2>RCT韐券<E99F90>擃矋<E69383>"
aiSuggestion: 'include' | 'exclude' | 'uncertain';
reason: string; // AI的建议理由
reason: string; // AI<EFBFBD><EFBFBD>遣霈桃<EFBFBD><EFBFBD>?
}
]
}
@@ -76,11 +76,11 @@ POST /api/v1/asl/analyze-picos
#### 3. <20><EFBFBD>蝖株恕<E6A0AA>屸𢒰 <20><>
**<EFBFBD>曄內**:
- ✅ 必须纳入(可勾选/取消)
- ❌ 必须排除(可勾选/取消)
- 🤔 边界情况(逐个确认:纳入/排除/不确定)
- <EFBFBD>?敹<>◆蝥喳<E89DA5><EFBFBD><EFBFBD><EFBFBD>?<3F>𡝗<EFBFBD>嚗?
- <EFBFBD>?敹<><EFBFBD>㘾膄嚗<E88684><EFBFBD><EFBFBD>?<3F>𡝗<EFBFBD>嚗?
- <EFBFBD><EFBFBD> 颲寧<E9A2B2><E5AFA7><EFBFBD><EFBFBD><EFBFBD><E59A97>𣂷葵蝖株恕嚗𡁶熙<F0A181B6>?<3F>㘾膄/銝滨摰𡄯<E691B0>
**实现**: Modal对话框,分三个区域
**摰䂿緵**: Modal撖寡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝芸躹<EFBFBD>?
---
@@ -90,14 +90,14 @@ POST /api/v1/asl/analyze-picos
**颲枏枂**: 摰峕㟲<E5B395><E39FB2><EFBFBD><EFBFBD>侨rompt
**关键**: 将用户确认的边界规则注入到Prompt
**<EFBFBD>喲睸**: <EFBFBD><EFBFBD>霈斤<EFBFBD>颲寧<EFBFBD><EFBFBD><EFBFBD>瘜典<EFBFBD><EFBFBD>rompt銝?
```
## <20><EFBFBD><EFBFBD><E996AB><EFBFBD>抅鈭擧<E988AD><E693A7><EFBFBD>霈歹<E99C88>
1. <20><EFBFBD><EFBFBD><E996AC>嚗帋<E59A97><E5B88B><EFBFBD><EFBFBD>瘣脖犖蝢歹<E89DA2><EFBFBD>洹蝢𡡞<E89DA2>韐券<E99F90>RCT銋笔虾蝥喳<E89DA5>
2. 研究类型排除综述但2020年后Meta分析可纳入
3. 对照类型:安慰剂对照,或另一种标准药物也可接受
2. <EFBFBD>𠉛弦蝐餃<EFBFBD>嚗𡁏<EFBFBD><EFBFBD>斤遞餈堆<EFBFBD>雿?020撟游<E6929F>Meta<74><61><EFBFBD><EFBFBD>舐熙<E88890>?
3. 撖寧<EFBFBD>蝐餃<EFBFBD>嚗𡁜<EFBFBD><EFBFBD><EFBFBD>撖寧<EFBFBD>嚗峕<EFBFBD><EFBFBD><EFBFBD>蝘齿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>舀𦻖<EFBFBD>?
...
```
@@ -108,54 +108,54 @@ POST /api/v1/asl/generate-prompt
---
#### 5. Prompt编辑器 🆕
#### 5. Prompt蝻𤥁<EFBFBD><EFBFBD>?<3F><>
**<EFBFBD><EFBFBD>**:
- <20>曄內<E69B84><E585A7><EFBFBD><EFBFBD><EFBFBD>rompt
- <20><EFBFBD><E88880><EFBFBD>蝻𤥁<E89DBB>
- 保存并使用
- 靽嘥<EFBFBD>撟嗡蝙<EFBFBD>?
**摰䂿緵**: 蝞<><E89D9E><EFBFBD>Textarea + 靽嘥<E99DBD><E598A5>厰僼
---
#### 6. 筛选结果增强 ⭐ **重要**
#### 6. 蝑偦<EFBFBD><EFBFBD><EFBFBD>𨅯<EFBFBD>撘?潃?**<2A><EFBFBD>**
**当前问题**: 只显示最终决策(include/exclude/pending
**敶枏<EFBFBD><EFBFBD><EFBFBD>**: <EFBFBD>芣遬蝷箸<EFBFBD><EFBFBD><EFBFBD>蝑吔<EFBFBD>include/exclude/pending嚗?
**改进**: 显示**两个模型的完整理由**
**<EFBFBD><EFBFBD>**: <EFBFBD>曄內**銝支葵璅<E79285><E288AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B8A1>?*
```typescript
{
literatureId: string;
finalDecision: 'include' | 'exclude' | 'pending';
// ⭐ 新增:两个模型的详细结果
// 潃?<3F><EFBFBD>嚗帋舅銝芣芋<E88AA3><EFBFBD>霂衣<E99C82>蝏𤘪<E89D8F>
model1: {
modelName: 'DeepSeek-V3';
conclusion: 'exclude';
confidence: 0.92;
judgment: { P: 'match', I: 'match', C: 'mismatch', S: 'match' };
reason: '虽然P、I、S维度匹配但对照组为另一种药物而非安慰剂...' // ⭐ 关键
reason: '<EFBFBD><EFBFBD>P<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝏游漲<EFBFBD><EFBFBD>嚗䔶<EFBFBD>撖寧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝘滩晓<EFBFBD><EFBFBD><EFBFBD>摰㗇<EFBFBD><EFBFBD>?..' // 潃?<3F>喲睸
},
model2: {
modelName: 'Qwen-Max';
conclusion: 'include';
confidence: 0.85;
judgment: { P: 'match', I: 'match', C: 'partial', S: 'match' };
reason: '研究人群和干预措施匹配,对照组虽非安慰剂但有对比意义...' // ⭐ 关键
reason: '<EFBFBD>𠉛弦鈭箇黎<EFBFBD><EFBFBD>僕憸<EFBFBD><EFBFBD>賢龪<EFBFBD><EFBFBD>撖寧<EFBFBD><EFBFBD><EFBFBD>𧼮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撖寞<EFBFBD><EFBFBD><EFBFBD>...' // 潃?<3F>喲睸
},
hasConflict: true; // 两个模型判断不一致
hasConflict: true; // 銝支葵璅<EFBFBD><EFBFBD>斗鱏銝滢<EFBFBD><EFBFBD>?
conflictFields: ['conclusion', 'C'];
}
```
**<EFBFBD>滨垢<EFBFBD>曄內**:
```jsx
<Card title="筛选结果">
<Card title="蝑偦<EFBFBD><EFBFBD><EFBFBD>?>
<Alert type={finalDecision === 'pending' ? 'warning' : 'success'}>
最终决策: {finalDecision}
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝑? {finalDecision}
</Alert>
<Divider />
@@ -166,10 +166,10 @@ POST /api/v1/asl/generate-prompt
<Tag color={model1.conclusion === 'include' ? 'green' : 'red'}>
{model1.conclusion}
</Tag>
<Statistic title="置信度" value={model1.confidence} />
<Statistic title="蝵桐縑摨? value={model1.confidence} />
<Divider />
<h4><3E>斗鱏<E69697><E9B18F>眏:</h4>
<p>{model1.reason}</p> {/* ⭐ 显示理由 */}
<p>{model1.reason}</p> {/* 潃?<3F>曄內<E69B84><E585A7>眏 */}
<Collapse>
<Panel header="PICO蝏游漲霂行<EFBFBD>">
P: {model1.judgment.P}<br/>
@@ -194,37 +194,37 @@ POST /api/v1/asl/generate-prompt
</Alert>
)}
{/* ⭐ 人工复核按钮 */}
{/* 潃?鈭箏極憭齿瓲<E9BDBF>厰僼 */}
<Button type="primary" onClick={handleManualReview}>
人工复核此文献
鈭箏極憭齿瓲甇斗<EFBFBD><EFBFBD>?
</Button>
</Card>
```
---
### MVP开发清单
### MVP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
**Week 1: <20>𡒊垢**
| 任务 | 估时 | 优先级 |
| 隞餃𦛚 | 隡唳𧒄 | 隡睃<E99AA1>蝥?|
|------|------|--------|
| API: 分析PICOS | 2| P0 |
| API: 生成Prompt | 1| P0 |
| 增强筛选结果结构 | 0.5| P0 |
| 测试 | 0.5| P0 |
| API: <EFBFBD><EFBFBD><EFBFBD>PICOS | 2憭?| P0 |
| API: <EFBFBD><EFBFBD><EFBFBD>Prompt | 1憭?| P0 |
| 憓𧼮撩蝑偦<EFBFBD><EFBFBD><EFBFBD>𦦵<EFBFBD><EFBFBD>?| 0.5憭?| P0 |
| 瘚贝<EFBFBD> | 0.5憭?| P0 |
**Week 2: <20>滨垢**
| 任务 | 估时 | 优先级 |
| 隞餃𦛚 | 隡唳𧒄 | 隡睃<E99AA1>蝥?|
|------|------|--------|
| PICOS输入表单 | 0.5| P0 |
| 用户确认界面 | 1.5| P0 |
| Prompt编辑器 | 0.5| P0 |
| 结果展示增强 | 1| P0 |
| 测试与调优 | 0.5| P0 |
| PICOS颲枏<EFBFBD>銵典<EFBFBD> | 0.5憭?| P0 |
| <EFBFBD><EFBFBD>蝖株恕<EFBFBD>屸𢒰 | 1.5憭?| P0 |
| Prompt蝻𤥁<EFBFBD><EFBFBD>?| 0.5憭?| P0 |
| 蝏𤘪<EFBFBD>撅閧內憓𧼮撩 | 1憭?| P0 |
| 瘚贝<EFBFBD>銝舘<EFBFBD>隡?| 0.5憭?| P0 |
**总计**: 210个工作日
**<EFBFBD>餉恣**: 2<EFBFBD><EFBFBD>10銝芸極雿𨀣𠯫嚗?
---
@@ -232,16 +232,16 @@ POST /api/v1/asl/generate-prompt
### <20><EFBFBD>1: Few-shot<6F>芸𢆡摮虫<E691AE> <20>
**触发场景**: 用户纠正AI判断后
**閫血<EFBFBD><EFBFBD>箸艶**: <EFBFBD><EFBFBD>蝥䭾迤AI<EFBFBD>斗鱏<EFBFBD>?
**瘚<><E7989A>**:
```
1. AI<41>斗鱏: Exclude
2. <20><EFBFBD>蝥䭾迤: 摨磰砲<E7A3B0>涅nclude
3. 用户说明理由: "虽然是欧美人群但RCT质量高"
3. <EFBFBD><EFBFBD>霂湔<EFBFBD><EFBFBD><EFBFBD>眏: "<22><EFBFBD><E8B39C>舀洹蝢𦒘犖蝢歹<E89DA2><EFBFBD>CT韐券<E99F90>擃?
<EFBFBD>?
4. 蝟餌<E89D9F>霈啣<E99C88><EFBFBD><E78DA2>
<EFBFBD>?
5. 銝𧢲活蝑偦<E89D91>㗇𧒄嚗<F0A79284><E59A97>甇斗<E79487>靘衤<E99D98>銝慚ew-shot蝷箔<E89DB7><E7AE94><EFBFBD>Prompt
```
@@ -255,7 +255,7 @@ POST /api/v1/asl/generate-prompt
},
aiDecision: 'exclude';
userDecision: 'include';
userReason: '虽然是欧美人群但RCT质量高';
userReason: '<EFBFBD><EFBFBD><EFBFBD>𦒘<EFBFBD><EFBFBD>CT韐券<EFBFBD>?;
picoCriteria: {...}; // 敶𤘪𧒄<F0A498AA><F0A79284>ICOS
createdAt: Date;
}
@@ -263,7 +263,7 @@ POST /api/v1/asl/generate-prompt
**Prompt憓𧼮撩**:
```
## 参考案例(Few-shot示例)
## <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>靘页<EFBFBD>Few-shot蝷箔<EFBFBD>嚗?
隞乩<EFBFBD><EFBFBD><EFBFBD>銋见<EFBFBD>蝥䭾迤<EFBFBD><EFBFBD><EFBFBD>靘页<EFBFBD>霂瑕<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -271,14 +271,14 @@ POST /api/v1/asl/generate-prompt
<EFBFBD><EFBFBD><EFBFBD>: TICA-CLOP STUDY...
AI<EFBFBD>斗鱏: Exclude嚗<65><E59A97>銝箏<E98A9D><E7AE8F>硺犖蝢歹<E89DA2>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Include
您的理由: 虽然是北非人群但RCT质量高方法有参考价值
→ 启示: 地域要求可以灵活,如果研究质量高
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>眏: <20><EFBFBD><E8B39C><EFBFBD><E887AC>硺犖蝢歹<E89DA2><EFBFBD>CT韐券<E99F90>擃矋<E69383><E79F8B><EFBFBD><E5AF9E><EFBFBD><E58CA7><EFBFBD><EFBFBD>?
<EFBFBD>?<3F>舐內: <20><EFBFBD><EFBFBD><E996AC><EFBFBD>臭誑<E887AD>菜暑嚗<E69A91><E59A97><EFBFBD>𦦵<EFBFBD>蝛嗉捶<E59789><EFBFBD>
<EFBFBD><EFBFBD>2:
...
```
**实现复杂度**: 中等(需要案例库管理)
**摰䂿緵憭齿<EFBFBD>摨?*: 銝剔<E98A9D><EFBFBD><E59A97><EFBFBD><E996AC>靘见<E99D98>蝞∠<E89D9E>嚗?
---
@@ -288,21 +288,21 @@ AI判断: Exclude因为北非人群
**瘚<><E7989A>**:
```
1. 用户上传10篇测试文献5篇纳入 + 5篇排除
1. <EFBFBD><EFBFBD>銝𠹺<EFBFBD>10蝭<EFBFBD><EFBFBD>霂閙<EFBFBD><EFBFBD><EFBFBD>5蝭<EFBFBD><EFBFBD>?+ 5蝭<35><E89DAD><EFBFBD><EFBFBD>
<EFBFBD>?
2. <20><EFBFBD><E586BD><EFBFBD><E99E9F><EFBFBD>釣: Include/Exclude + <20><>
3. AI学习用户的判断模式
<EFBFBD>?
3. AI摮虫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ế<EFBFBD>剜芋撘?
<EFBFBD>?
4. <20><><EFBFBD>摰𡁜<E691B0><F0A1819C>鞛rompt
5. 用于正式筛选
<EFBFBD>?
5. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝑偦<EFBFBD>?
```
**<EFBFBD>屸𢒰**:
```jsx
<TestMode>
<Upload>上传10篇测试文献Excel/JSON</Upload>
<Upload>銝𠹺<EFBFBD>10<EFBFBD><EFBFBD>霂閙<EFBFBD><EFBFBD><EFBFBD>Excel/JSON嚗?/Upload>
<Table>
{testCases.map(lit => (
@@ -315,7 +315,7 @@ AI判断: Exclude因为北非人群
</Radio.Group>
</td>
<td>
<Input.TextArea placeholder="请说明理由" />
<Input.TextArea placeholder="霂瑁秩<EFBFBD>𡒊<EFBFBD><EFBFBD>? />
</td>
</Row>
))}
@@ -333,55 +333,55 @@ AI判断: Exclude因为北非人群
1. <20><EFBFBD><E595A3>菜暑<E88F9C><EFBFBD>
- 獢<><E78DA2>1嚗<31><E59A97><EFBFBD>冚CT嚗争<E59A97> 蝥喳<E89DA5>
- 案例3欧洲队列→ 排除
→ 结论: 只要是RCT就可接受非亚洲人群
- <EFBFBD><EFBFBD>3嚗<EFBFBD>洹瘣脤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>㘾膄
<EFBFBD>?蝏栞捏: <20><EFBFBD><E88ABE>爹CT撠勗虾<E58B97><EFBFBD><E4BA99><EFBFBD>瘣脖犖蝢?
2. 研究类型:
2. <EFBFBD>𠉛弦蝐餃<EFBFBD>嚗?
- 獢<><E78DA2>2嚗㇈eta<74><61><EFBFBD>嚗争<E59A97> 蝥喳<E89DA5>
- 案例5传统综述→ 排除
→ 结论: Meta分析可接受,传统综述排除
- <EFBFBD><EFBFBD>5嚗<EFBFBD><EFBFBD>蝏毺遞餈堆<EFBFBD><EFBFBD>?<3F>㘾膄
<EFBFBD>?蝏栞捏: Meta<EFBFBD><EFBFBD><EFBFBD><EFBFBD>舀𦻖<EFBFBD><EFBFBD>隡删<EFBFBD>蝏潸膩<EFBFBD>㘾膄
3. 时间要求:
- 案例42019年发表→ 排除
→ 结论: 严格执行2020年后要求
3. <EFBFBD>園𡢿閬<EFBFBD><EFBFBD>嚗?
- <EFBFBD><EFBFBD>4嚗?019撟游<E6929F>銵剁<E98AB5><E58981>?<3F>㘾膄
<EFBFBD>?蝏栞捏: 銝交聢<E4BAA4><EFBFBD>2020撟游<E6929F><EFBFBD><E996AC>
```
**实现复杂度**: 高(需要模式识别)
**摰䂿緵憭齿<EFBFBD>摨?*: 擃矋<E69383><E79F8B><EFBFBD><EFBFBD>芋撘讛<E69298><E8AE9B><EFBFBD>
---
### 功能3: Prompt模板库 📚
### <EFBFBD><EFBFBD>3: Prompt璅⊥踎摨?<3F><>
**<EFBFBD><EFBFBD>**:
- 保存用户生成的Prompt为模板
- 靽嘥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rompt銝箸芋<EFBFBD>?
- 銝𧢲活<F0A7A2B2>臭誑<E887AD>湔𦻖憭滨鍂
- 可以分享给团队成员
- <EFBFBD>臭誑<EFBFBD><EFBFBD>澈蝏坔𣪧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
**实现复杂度**: 低
**摰䂿緵憭齿<EFBFBD>摨?*: 雿?
---
### 2.0开发清单
### 2.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
| 功能 | 估时 | 优先级 | 依赖 |
| <EFBFBD><EFBFBD> | 隡唳𧒄 | 隡睃<E99AA1>蝥?| 靘肽<E99D98> |
|------|------|--------|------|
| Few-shot学习 | 3| P1 | MVP完成 |
| 测试模式 | 5| P2 | MVP完成 |
| Prompt模板库 | 2| P1 | MVP完成 |
| Few-shot摮虫<EFBFBD> | 3憭?| P1 | MVP摰峕<EFBFBD> |
| 瘚贝<EFBFBD><EFBFBD> | 5憭?| P2 | MVP摰峕<EFBFBD> |
| Prompt璅⊥踎摨?| 2憭?| P1 | MVP摰峕<EFBFBD> |
**总计**: 2
**<EFBFBD>餉恣**: 2<EFBFBD>?
---
## 技术实现细节
## <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
### 1. AI<41><49><EFBFBD>PICOS<4F><53>rompt
```typescript
const analyzePrompt = `
你是医学文献筛选专家。用户提供了PICOS标准和纳排标准请分析并生成
雿䭾糓<EFBFBD>餃郎<EFBFBD><EFBFBD>讃蝑偦<EFBFBD><EFBFBD>摰嗚<EFBFBD><EFBFBD><EFBFBD><EFBFBD>靘𥕢<EFBFBD>PICOS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣬚熙<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>霂瑕<EFBFBD><EFBFBD>𣂼僎<EFBFBD><EFBFBD><EFBFBD>嚗?
【用户输入】
<EFBFBD>鞟鍂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
鈭箇黎: ${population}
撟脤<EFBFBD>: ${intervention}
撖寧<EFBFBD>: ${comparison}
@@ -394,16 +394,16 @@ ${inclusionCriteria}
<EFBFBD>㘾膄<EFBFBD><EFBFBD><EFBFBD>:
${exclusionCriteria}
【分析任务】
<EFBFBD>𣂼<EFBFBD><EFBFBD>𣂷遙<EFBFBD><EFBFBD>?
1. <20>𣂼<EFBFBD><EFBFBD>◆蝥喳<E89DA5><E596B3><EFBFBD>瓲敹<E793B2><E695B9>蝝𩤃<E89D9D>3-5<><EFBFBD>
2. <20>𣂼<EFBFBD><EFBFBD><EFBFBD>㘾膄<E398BE><E88684><EFBFBD>蝝𩤃<E89D9D>3-5<><EFBFBD>
3. 霂<><E99C82>璅∠<E79285><E288A0><EFBFBD><EFBFBD><EFBFBD><E5B395><EFBFBD>5-8銝迎<E98A9D>嚗峕<E59A97>銝芾器<E88ABE><EFBFBD><E5B395><EFBFBD><E89084>穿<EFBFBD>
- <20><EFBFBD><E7919A><EFBFBD><E6A185>讛膩
- 你的建议include/exclude/uncertain
- 雿删<EFBFBD>撱箄悅嚗ǎnclude/exclude/uncertain嚗?
- 撱箄悅<E7AE84><E68285>
【输出格式】
严格JSON格式:
<EFBFBD><EFBFBD><EFBFBD>箸聢撘譌<EFBFBD>?
銝交聢JSON<EFBFBD><EFBFBD>嚗?
{
"mustInclude": ["閬<><E996AC>1", "閬<><E996AC>2", ...],
"mustExclude": ["閬<><E996AC>1", "閬<><E996AC>2", ...],
@@ -435,24 +435,24 @@ function generateCustomPrompt(
// <20><EFBFBD>Prompt嚗<74><E59A97><EFBFBD><EFBFBD><EFBFBD>璅⊥踎撘<E8B88E>憪页<E686AA>
let prompt = getStandardPromptTemplate();
// 注入用户确认的边界规则
// 瘜典<EFBFBD><EFBFBD><EFBFBD>蝖株恕<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
const boundaryRulesSection = `
## ⭐ 特殊边界规则(基于您的确认)
## 潃?<3F><EFBFBD>颲寧<E9A2B2><EFBFBD><E996AB><EFBFBD>抅鈭擧<E988AD><E693A7><EFBFBD>霈歹<E99C88>
${userConfirmedRules.map((rule, index) => `
${index + 1}. ${rule.category}:
- <20><><EFBFBD><EFBFBD><E996AB>: ${rule.standardRule}
- 您的确认: ${rule.userDecision === 'include' ? '✅ 可以纳入' : '❌ 必须排除'}
- <EFBFBD><EFBFBD>蝖株恕: ${rule.userDecision === 'include' ? '<EFBFBD>?<3F>臭誑蝥喳<E89DA5>' : '<EFBFBD>?敹<><EFBFBD>㘾膄'}
- <20><EFBFBD><E7919A><EFBFBD><EFBFBD>: ${rule.situation}
`).join('\n')}
⚠️ 请严格遵守以上特殊规则,这些是用户明确确认的判断标准。
<EFBFBD>𩤃<EFBFBD> 霂瑚艇<E7919A><EFBFBD><EFBFBD>誑銝羓鸌畾𡃏<E795BE><F0A1838F><EFBFBD>餈嗘<E9A488><E59798>舐鍂<E88890><EFBFBD>蝖桃霈斤<E99C88><E696A4>斗鱏<E69697><E9B18F><EFBFBD><EFBFBD>?
`;
// 将边界规则插入到Prompt的合适位置
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Prompt<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵?
prompt = prompt.replace(
'## 筛选任务',
boundaryRulesSection + '\n\n## 筛选任务'
'## 蝑偦<EFBFBD>劐遙<EFBFBD>?,
boundaryRulesSection + '\n\n## <EFBFBD><EFBFBD>?
);
return prompt;
@@ -461,7 +461,7 @@ ${index + 1}. ${rule.category}:
---
### 3. 数据库设计
### 3. <EFBFBD>唳旿摨栞挽霈?
**<EFBFBD>啗”: prompt_configurations**
@@ -484,9 +484,9 @@ CREATE TABLE asl_schema.prompt_configurations (
-- <20><><EFBFBD><EFBFBD><EFBFBD>rompt
generated_prompt TEXT NOT NULL,
final_prompt TEXT NOT NULL, -- 用户编辑后的最终版本
final_prompt TEXT NOT NULL, -- <EFBFBD><EFBFBD>蝻𤥁<EFBFBD><EFBFBD>𡒊<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
-- 元数据
-- <EFBFBD><EFBFBD><EFBFBD>?
version VARCHAR(20) DEFAULT 'v1.0',
is_template BOOLEAN DEFAULT false,
template_name VARCHAR(100),
@@ -496,7 +496,7 @@ CREATE TABLE asl_schema.prompt_configurations (
);
```
**新表: few_shot_cases**2.0阶段)
**<EFBFBD>啗”: few_shot_cases**嚗?.0<EFBFBD>嗆挾嚗?
```sql
CREATE TABLE asl_schema.few_shot_cases (
@@ -517,7 +517,7 @@ CREATE TABLE asl_schema.few_shot_cases (
user_decision VARCHAR(20) NOT NULL,
user_reason TEXT NOT NULL,
-- PICOS上下文
-- PICOS銝𠹺<EFBFBD><EFBFBD>?
pico_criteria JSONB NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
@@ -584,7 +584,7 @@ Request:
{
"ambiguityId": 1,
"userDecision": "include", // include/exclude/uncertain
"userNote": "虽然不是亚洲人群但RCT质量高" // 可选
"userNote": "<EFBFBD><EFBFBD>銝齿糓鈭𡁏散鈭箇黎嚗䔶<EFBFBD>RCT韐券<EFBFBD>擃? // <EFBFBD><EFBFBD>?
}
]
}
@@ -610,7 +610,7 @@ Request:
"configId": "uuid",
"finalPrompt": "<22><EFBFBD>蝻𤥁<E89DBB><F0A4A581>𡒊<EFBFBD>Prompt...",
"saveAsTemplate": false,
"templateName": "" // 如果保存为模板
"templateName": "" // <EFBFBD><EFBFBD>靽嘥<EFBFBD>銝箸芋<EFBFBD>?
}
Response:
@@ -625,7 +625,7 @@ Response:
---
#### 4. 使用自定义Prompt筛选
#### 4. 雿輻鍂<EFBFBD><EFBFBD>銋侨rompt蝑偦<EFBFBD>?
```
POST /api/v1/asl/screen/literature
@@ -645,14 +645,14 @@ Response:
"literatureId": "uuid",
"finalDecision": "pending",
// ⭐ 关键:两个模型的详细结果
// 潃?<3F>喲睸嚗帋舅銝芣芋<E88AA3><EFBFBD>霂衣<E99C82>蝏𤘪<E89D8F>
"model1": {
"modelName": "DeepSeek-V3",
"conclusion": "exclude",
"confidence": 0.92,
"judgment": {...},
"evidence": {...},
"reason": "完整的排除理由..." //
"reason": "摰峕㟲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?.." // 潃?
},
"model2": {
"modelName": "Qwen-Max",
@@ -660,7 +660,7 @@ Response:
"confidence": 0.85,
"judgment": {...},
"evidence": {...},
"reason": "完整的纳入理由..." //
"reason": "摰峕㟲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?.." // 潃?
},
"hasConflict": true,
@@ -685,7 +685,7 @@ Request:
"aiDecision": "exclude",
"aiReason": "...",
"userDecision": "include",
"userReason": "虽然是欧美人群,但..."
"userReason": "<EFBFBD><EFBFBD><EFBFBD>舀洹蝢𦒘犖蝢歹<EFBFBD>雿?.."
}
Response:
@@ -726,28 +726,28 @@ Response:
### MVP瘚贝<E7989A>
**测试数据**: 卒中研究已有5篇
**瘚贝<EFBFBD><EFBFBD>唳旿**: <EFBFBD>雴葉<EFBFBD>𠉛弦嚗<EFBFBD><EFBFBD>?蝭<><E89DAD>
**瘚贝<E7989A><E8B49D>箸艶**:
1. **<EFBFBD>箸艶1: 甇<>虜瘚<E8999C><E7989A>**
- 输入PICOS → AI分析 → 用户确认 → 生成Prompt → 筛选
- 颲枏<EFBFBD>PICOS <EFBFBD>?AI<41><49><EFBFBD> <20>?<3F><EFBFBD>蝖株恕 <20>?<3F><><EFBFBD>Prompt <EFBFBD>?蝑偦<E89D91>?
- 撉諹<E69289>嚗帋舅銝芣芋<E88AA3><EFBFBD><E8AEA0><EFBFBD><EFBFBD>臬炏摰峕㟲<E5B395>曄內
2. **<EFBFBD>箸艶2: 颲寧<E9A2B2><E5AFA7><EFBFBD><EFBFBD>蝖株恕**
- 用户确认"欧美RCT可纳入" → 验证Prompt中是否包含此规则
- 验证:实际筛选时是否遵守此规则
- <EFBFBD><EFBFBD>蝖株恕"甈抒<E79488>RCT<43>舐熙<E88890>? <20>?撉諹<E69289>Prompt銝剜糓<E5899C><EFBFBD><E8A180>急迨閫<E8BFA8><E996AB>
- 撉諹<EFBFBD>嚗𡁜<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㗇𧒄<EFBFBD>臬炏<EFBFBD><EFBFBD>甇方<EFBFBD><EFBFBD>?
3. **<EFBFBD>箸艶3: <20><EFBFBD>蝻𤥁<E89DBB>Prompt**
- 用户修改生成的Prompt → 验证修改是否生效
- <EFBFBD><EFBFBD>靽格㺿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rompt <20>?撉諹<E69289>靽格㺿<E6A0BC>臬炏<E887AC><E7828F><EFBFBD>
4. **<EFBFBD>箸艶4: 璅<E79285><E288AA><EFBFBD>**
- 验证:两个模型判断不一致时,理由是否清晰展示
- 撉諹<EFBFBD>嚗帋舅銝芣芋<EFBFBD>见ế<EFBFBD><EFBFBD><EFBFBD><EFBFBD>湔𧒄嚗𣬚<EFBFBD><EFBFBD>望糓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝷?
**瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD>**:
- Prompt生成准确率: >90%
- 用户满意度: >80%
- 理由展示完整性: 100%
- Prompt<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? >90%
- <EFBFBD><EFBFBD>皛⊥<EFBFBD>摨? >80%
- <EFBFBD><EFBFBD>眏撅閧內摰峕㟲<EFBFBD>? 100%
---
@@ -756,11 +756,11 @@ Response:
**瘚贝<E7989A><E8B49D>箸艶**:
1. **Few-shot摮虫<E691AE>**
- 用户纠正3个案例 → 验证Prompt中是否包含这些案例
- 验证:新的筛选是否改进
- <EFBFBD><EFBFBD>蝥䭾迤3銝芣<EFBFBD>靘?<3F>?撉諹<E69289>Prompt銝剜糓<E5899C><EFBFBD><E8A180><EFBFBD>鈭𥟇<E988AD>靘?
- 撉諹<EFBFBD>嚗𡁏鰵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㗇糓<EFBFBD>行㺿餈?
2. **瘚贝<E7989A><E79285>**
- 用户标注10篇 → AI分析模式 → 生成Prompt
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>釣10蝭?<3F>?AI<41><49><EFBFBD><E79285> <20>?<3F><><EFBFBD>Prompt
- 撉諹<E69289>嚗𡁶<E59A97><F0A181B6><EFBFBD>Prompt<70>臬炏蝚血<E89D9A><E8A180><EFBFBD><E586BD>誩末
---
@@ -771,44 +771,44 @@ Response:
| <20><><EFBFBD> | <20><EFBFBD> |
|------|------|
| Prompt生成准确率 | >90% |
| Prompt<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?| >90% |
| <20><EFBFBD>摰峕<E691B0><E5B395>滨蔭<E6BBA8>園𡢿 | <5<><35><EFBFBD> |
| 理由展示完整性 | 100% |
| 模型冲突识别率 | 100% |
| 用户满意度 | >80% |
| <EFBFBD><EFBFBD>眏撅閧內摰峕㟲<EFBFBD>?| 100% |
| <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?| 100% |
| <EFBFBD><EFBFBD>皛⊥<EFBFBD>摨?| >80% |
### 2.0<EFBFBD>嗆挾
| <20><><EFBFBD> | <20><EFBFBD> |
|------|------|
| Few-shot改进准确率 | +15% |
| 测试模式匹配度 | >85% |
| Prompt模板复用率 | >60% |
| Few-shot<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?| +15% |
| 瘚贝<EFBFBD><EFBFBD><EFBFBD><EFBFBD>摨?| >85% |
| Prompt璅⊥踎憭滨鍂<EFBFBD>?| >60% |
---
## 风险与应对
## 憌𡡞埯銝𤾸<EFBFBD>撖?
### 憌𡡞埯1: LLM<4C><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>屸䔮憸䁅捶<E48185><EFBFBD>蝔喳<E89D94>
**摨𥪜笆**:
- 雿輻鍂Few-shot Prompt
- 鈭箏極摰⊥瓲撣貉<E692A3>颲寧<E9A2B2><E5AFA7><EFBFBD><EFBFBD>
- 提供默认边界问题库
- <EFBFBD>𣂷<EFBFBD>暺䁅恕颲寧<EFBFBD><EFBFBD><EFBFBD>摨?
### 憌𡡞埯2: <20><EFBFBD>銝齿<E98A9D><E9BDBF><EFBFBD><E8AE9B>園𡢿蝖株恕
**摨𥪜笆**:
- 只显示5个高优先级问题
- <EFBFBD>芣遬蝷?銝芷<E98A9D>隡睃<E99AA1>蝥折䔮憸?
- <20><EFBFBD>雿輻鍂AI暺䁅恕撱箄悅
- 提供"快速模式"(跳过确认)
- <EFBFBD>𣂷<EFBFBD>"敹恍<E695B9><E6818D>芋撘?嚗<>歲餈<E6ADB2>霈歹<E99C88>
### 风险3: 两个模型理由过长,难以对比
### 憌𡡞埯3: 銝支葵璅<E79285><E288AA><EFBFBD>眏餈<E79C8F>鵭嚗屸𠗕隞亙笆瘥?
**摨𥪜笆**:
- 提取理由关键句前100字
- <EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>喲睸<EFBFBD><EFBFBD><EFBFBD>?00摮梹<E691AE>
- <20>𣂷<EFBFBD>撅訫<E69285>/<2F>嗉絲<E59789>厰僼
- 高亮冲突点
- 擃䀝漁<EFBFBD><EFBFBD><EFBFBD>?
---
@@ -816,14 +816,14 @@ Response:
### MVP<56><EFBFBD><EFBFBD><E59A97><EFBFBD>𡄯<EFBFBD>
1. PICOS输入表单
2. ✅ AI分析与边界问题生成
3. ✅ 用户确认界面
4. ✅ 自动生成Prompt
5. Prompt编辑器
6. **显示两个模型的完整理由**
1. <EFBFBD>?PICOS颲枏<EFBFBD>銵典<EFBFBD>
2. <EFBFBD>?AI<41><49><EFBFBD>銝舘器<E88898>屸䔮憸条<E686B8><E69DA1>?
3. <EFBFBD>?<3F><EFBFBD>蝖株恕<E6A0AA>屸𢒰
4. <EFBFBD>?<3F>芸𢆡<E88AB8><F0A286A1><EFBFBD>Prompt
5. <EFBFBD>?Prompt蝻𤥁<EFBFBD><EFBFBD>?
6. <EFBFBD>?**<2A>曄內銝支葵璅<E79285><E288AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B8A1>?* 潃?
**开发时间**: 2
**<EFBFBD><EFBFBD>烐𧒄<EFBFBD>?*: 2<EFBFBD>?
---
@@ -831,20 +831,20 @@ Response:
1. <20>睸 Few-shot<6F>芸𢆡摮虫<E691AE>
2. <20>妒 瘚贝<E7989A><E79285>
3. 📚 Prompt模板库
3. <EFBFBD><EFBFBD> Prompt璅⊥踎摨?
**开发时间**: 2
**<EFBFBD><EFBFBD>烐𧒄<EFBFBD>?*: 2<EFBFBD>?
---
**原则**: MVP先做到简单可用2.0再做智能化
**<EFBFBD><EFBFBD>**: MVP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>訫虾<EFBFBD><EFBFBD>2.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
**下一步**: 开始MVP阶段开发
**銝衤<EFBFBD>甇?*: 撘<>憪𨳒VP<56>嗆挾撘<E68CBE><E69298>?
---
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦**: v1.0
**作者**: AI Assistant
**雿𡏭<EFBFBD>?*: AI Assistant
**摰⊥瓲**: [敺<><EFBFBD>霈也
**<EFBFBD><EFBFBD>**: 2025-11-18