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%)
954 lines
24 KiB
Markdown
954 lines
24 KiB
Markdown
# ASL 璐ㄩ噺淇濋殰涓庡彲杩芥函绛栫暐
|
||
|
||
> **鏂囨。鐗堟湰锛?* V1.0
|
||
> **鍒涘缓鏃ユ湡锛?* 2025-11-15
|
||
> **閫傜敤妯″潡锛?* AI 鏅鸿兘鏂囩尞锛圓SL锛?
|
||
> **鐩<>爣锛?* 鍒嗛樁娈垫彁鍗囨枃鐚<E69E83>瓫閫夈€佹暟鎹<E69A9F>彁鍙栫殑鍑嗙‘鐜囥€佽川閲忔帶鍒跺拰鍙<E68BB0>拷婧<E68BB7>€?
|
||
|
||
---
|
||
|
||
## 馃搵 鏂囨。姒傝堪
|
||
|
||
鏈<EFBFBD>枃妗e畾涔変簡 ASL 妯″潡鍦?**MVP 鈫?V1.0 鈫?V2.0** 涓変釜闃舵<E99783>涓<EFBFBD>紝濡備綍閫愭<E996AB>鎻愬崌锛?
|
||
1. **鎻愬彇鍑嗙‘鐜?*锛氫粠鍩虹<E98DA9>鍙<EFBFBD>敤 鈫?楂樿川閲?鈫?鍖诲<E98D96>绾ф爣鍑?
|
||
2. **璐ㄩ噺鎺у埗**锛氫粠浜哄伐鎶芥煡 鈫?鑷<>姩楠岃瘉 鈫?鏅鸿兘浠茶<E6B5A0>
|
||
3. **鍙<>拷婧<E68BB7>€?*锛氫粠鍩烘湰璁板綍 鈫?瀹屾暣璇佹嵁閾?鈫?瀹¤<E780B9>绾ф棩蹇?
|
||
|
||
### 鏍稿績璁捐<E79281>鍘熷垯
|
||
|
||
| 鍘熷垯 | 璇存槑 |
|
||
|------|------|
|
||
| **鎴愭湰鍙<E6B9B0>帶** | MVP 闃舵<E99783>浼樺厛浣跨敤 DeepSeek + Qwen3锛屾垚鏈<E59E9A>晱鎰?|
|
||
| **璐ㄩ噺鍙<E599BA>崌绾?* | 鍙<>垏鎹㈠埌 GPT-5-Pro + Claude-4.5 楂樼<E6A582>缁勫悎 |
|
||
| **鍒嗘<E98D92>瀹炴柦** | 閬垮厤杩囧害璁捐<E79281>锛屾瘡涓<E798A1>樁娈典氦浠樺彲鐢ㄥ姛鑳?|
|
||
| **鍖诲<E98D96>鍦烘櫙浼樺寲** | 閽堝<E996BD>鑻辨枃鍖诲<E98D96>鏂囩尞鐨勭壒鐐逛紭鍖栫瓥鐣?|
|
||
|
||
---
|
||
|
||
## 馃幆 涓夐樁娈佃矾绾垮浘
|
||
|
||
```
|
||
MVP (4鍛? V1.0 (6鍛? V2.0 (8鍛?
|
||
鈹溾攢 鍩虹<E98DA9>鍙屾ā鍨嬮獙璇? 鈹溾攢 鏅鸿兘璐ㄩ噺鎺у埗 鈹溾攢 鍖诲<E98D96>绾ц川閲忎繚闅?
|
||
鈹溾攢 JSON Schema 绾︽潫 鈹溾攢 鍒嗘<E98D92>鎻愬彇浼樺寲 鈹溾攢 澶氭ā鍨嬪叡璇嗕徊瑁?
|
||
鈹溾攢 缃<>俊搴﹁瘎鍒? 鈹溾攢 璇佹嵁閾惧畬鏁磋拷婧? 鈹溾攢 鑷<>姩璐ㄩ噺瀹¤<E780B9>
|
||
鈹溾攢 浜哄伐澶嶆牳鏈哄埗 鈹溾攢 瑙勫垯寮曟搸楠岃瘉 鈹溾攢 鎻愮ず璇嶇増鏈<E5A297><E98F88>鐞?
|
||
鈹斺攢 鍩烘湰杩芥函鏃ュ織 鈹斺攢 Few-shot 绀轰緥搴? 鈹斺攢 HITL 鏅鸿兘鍒嗘祦
|
||
鈫? 鈫? 鈫?
|
||
鍙<>敤 楂樿川閲? 鍖诲<E98D96>绾?
|
||
```
|
||
|
||
---
|
||
|
||
## 馃殌 MVP 闃舵<E99783>锛? 鍛<>級
|
||
|
||
### 鐩<>爣瀹氫綅
|
||
|
||
- **鍑嗙‘鐜囩洰鏍?*锛氣墺 85%
|
||
- **鎴愭湰棰勭畻**锛氱瓫閫?1000 绡囨枃鐚?鈮?楼50
|
||
- **浜や粯鏍囧噯**锛氬熀纭€鍔熻兘鍙<E58598>敤锛屾敮鎸佸弻妯″瀷瀵规瘮
|
||
|
||
### 涓€銆佹ā鍨嬮€夋嫨绛栫暐
|
||
|
||
#### 1.1 涓诲姏妯″瀷缁勫悎锛堟垚鏈<E59E9A>紭鍏堬級
|
||
|
||
| 瑙掕壊 | 妯″瀷 | Model ID | 鐢ㄩ€?| 鎴愭湰 |
|
||
|------|------|---------|------|------|
|
||
| **妯″瀷 A** | DeepSeek-V3 | `deepseek-chat` | 蹇<>€熷垵绛?| 楼0.001/1K tokens |
|
||
| **妯″瀷 B** | Qwen3-72B | `qwen-max` | 浜ゅ弶楠岃瘉 | 楼0.004/1K tokens |
|
||
|
||
**鍒囨崲閫夐」**锛堣川閲忎紭鍏堬級锛?
|
||
- **楂樼<E6A582>缁勫悎**锛欸PT-5-Pro (`gpt-5-pro`) + Claude-4.5-Sonnet (`claude-sonnet-4-5-20250929`)
|
||
- **鎴愭湰澧炲姞**锛氱害 3-5 鍊?
|
||
- **鍑嗙‘鐜囨彁鍗?*锛?5% 鈫?92%+
|
||
|
||
#### 1.2 妯″瀷璋冪敤绛栫暐
|
||
|
||
```typescript
|
||
// 鍙屾ā鍨嬪苟琛岃皟鐢?
|
||
async function dualModelScreening(
|
||
literature: Literature,
|
||
protocol: Protocol
|
||
) {
|
||
// 骞惰<E9AA9E>璋冪敤涓や釜妯″瀷
|
||
const [resultA, resultB] = await Promise.all([
|
||
llmService.chat('deepseek', buildPrompt(literature, protocol)),
|
||
llmService.chat('qwen', buildPrompt(literature, protocol))
|
||
]);
|
||
|
||
// 瑙f瀽 JSON 缁撴灉
|
||
const decisionA = parseJSON(resultA.content);
|
||
const decisionB = parseJSON(resultB.content);
|
||
|
||
// 涓€鑷存€у垽鏂?
|
||
if (decisionA.decision === decisionB.decision) {
|
||
return {
|
||
finalDecision: decisionA.decision,
|
||
consensus: 'high',
|
||
needReview: false,
|
||
models: [decisionA, decisionB]
|
||
};
|
||
}
|
||
|
||
// 鍐茬獊 鈫?浜哄伐澶嶆牳
|
||
return {
|
||
finalDecision: 'uncertain',
|
||
consensus: 'conflict',
|
||
needReview: true,
|
||
models: [decisionA, decisionB]
|
||
};
|
||
}
|
||
```
|
||
|
||
### 浜屻€佹牳蹇冩妧鏈<E5A6A7>瓥鐣?
|
||
|
||
#### 2.1 鉁?鍙屾ā鍨嬩氦鍙夐獙璇?
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- 鎵€鏈夌瓫閫変换鍔″悓鏃惰皟鐢ㄤ袱涓<E8A2B1>ā鍨?
|
||
- 鑷<>姩瀵规瘮缁撴灉锛屾爣璁板樊寮?
|
||
- 涓€鑷寸巼浣滀负璐ㄩ噺鎸囨爣锛堢洰鏍?鈮?80%锛?
|
||
|
||
**浠g爜绀轰緥**锛?
|
||
```typescript
|
||
interface DualModelResult {
|
||
consensus: 'high' | 'conflict';
|
||
finalDecision: 'include' | 'exclude' | 'uncertain';
|
||
needReview: boolean;
|
||
models: ModelDecision[];
|
||
}
|
||
```
|
||
|
||
#### 2.2 鉁?JSON Schema 绾︽潫
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- 瀹氫箟涓ユ牸鐨勮緭鍑烘牸寮?
|
||
- 浣跨敤鏋氫妇闄愬埗鍙栧€?
|
||
- 鍖哄垎蹇呭~/鍙<>€夊瓧娈?
|
||
|
||
**Schema 瀹氫箟**锛?
|
||
```json
|
||
{
|
||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||
"type": "object",
|
||
"required": ["decision", "reason", "confidence", "pico"],
|
||
"properties": {
|
||
"decision": {
|
||
"type": "string",
|
||
"enum": ["include", "exclude", "uncertain"]
|
||
},
|
||
"reason": {
|
||
"type": "string",
|
||
"minLength": 10,
|
||
"maxLength": 500
|
||
},
|
||
"confidence": {
|
||
"type": "number",
|
||
"minimum": 0,
|
||
"maximum": 1
|
||
},
|
||
"pico": {
|
||
"type": "object",
|
||
"required": ["population", "intervention", "comparison", "outcome"],
|
||
"properties": {
|
||
"population": {
|
||
"type": "string",
|
||
"enum": ["match", "partial", "mismatch"]
|
||
},
|
||
"intervention": {
|
||
"type": "string",
|
||
"enum": ["match", "partial", "mismatch"]
|
||
},
|
||
"comparison": {
|
||
"type": "string",
|
||
"enum": ["match", "partial", "mismatch", "not_applicable"]
|
||
},
|
||
"outcome": {
|
||
"type": "string",
|
||
"enum": ["match", "partial", "mismatch"]
|
||
}
|
||
}
|
||
},
|
||
"studyDesign": {
|
||
"type": "string",
|
||
"enum": ["RCT", "cohort", "case-control", "cross-sectional", "other"]
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
**鎻愮ず璇嶆ā鏉?*锛?
|
||
```typescript
|
||
const prompt = `
|
||
浣犳槸涓€浣嶅尰瀛︽枃鐚<EFBFBD>瓫閫変笓瀹躲€傝<EFBFBD>鏍规嵁浠ヤ笅 PICO 鏍囧噯鍒ゆ柇杩欑瘒鏂囩尞鏄<E5B09E>惁搴旇<E690B4>绾冲叆绯荤粺璇勪环銆?
|
||
|
||
# PICO 鏍囧噯
|
||
- Population: ${protocol.population}
|
||
- Intervention: ${protocol.intervention}
|
||
- Comparison: ${protocol.comparison}
|
||
- Outcome: ${protocol.outcome}
|
||
|
||
# 鏂囩尞淇℃伅
|
||
鏍囬<EFBFBD>: ${literature.title}
|
||
鎽樿<EFBFBD>: ${literature.abstract}
|
||
|
||
# 杈撳嚭瑕佹眰
|
||
璇蜂弗鏍兼寜鐓т互涓?JSON Schema 杈撳嚭缁撴灉锛?
|
||
|
||
${JSON.stringify(schema, null, 2)}
|
||
|
||
娉ㄦ剰锛?
|
||
1. decision 鍙<>兘鏄?"include"銆?exclude" 鎴?"uncertain"
|
||
2. reason 蹇呴』鍏蜂綋璇存槑鍒ゆ柇渚濇嵁锛?0-500瀛楋級
|
||
3. confidence 涓?0-1 涔嬮棿鐨勬暟鍊硷紝琛ㄧず浣犵殑鍒ゆ柇鎶婃彙
|
||
4. pico 瀛楁<E7809B>閫愰」璇勪及鍖归厤绋嬪害
|
||
`;
|
||
```
|
||
|
||
#### 2.3 鉁?缃<>俊搴﹁瘎鍒?
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- 瑕佹眰妯″瀷瀵规瘡涓<E798A1>垽鏂<E59EBD>粰鍑虹疆淇″害锛?-1锛?
|
||
- 缃<>俊搴?< 0.7 鑷<>姩鏍囪<E98F8D>涓洪渶浜哄伐澶嶆牳
|
||
- 璁板綍缃<E7B68D>俊搴﹀垎甯冿紝浼樺寲闃堝€?
|
||
|
||
**鑷<>姩鍒嗘祦瑙勫垯**锛?
|
||
```typescript
|
||
function autoTriage(result: DualModelResult) {
|
||
const avgConfidence = (
|
||
result.models[0].confidence +
|
||
result.models[1].confidence
|
||
) / 2;
|
||
|
||
// 瑙勫垯1锛氬啿绐?鈫?蹇呴』澶嶆牳
|
||
if (result.consensus === 'conflict') {
|
||
return { needReview: true, priority: 'high' };
|
||
}
|
||
|
||
// 瑙勫垯2锛氫綆缃<E7B686>俊搴?鈫?闇€瑕佸<E79195>鏍?
|
||
if (avgConfidence < 0.7) {
|
||
return { needReview: true, priority: 'medium' };
|
||
}
|
||
|
||
// 瑙勫垯3锛氶珮缃<E78FAE>俊搴?+ 涓€鑷?鈫?鑷<>姩閫氳繃
|
||
return { needReview: false, priority: 'low' };
|
||
}
|
||
```
|
||
|
||
#### 2.4 鉁?鍩虹<E98DA9>鍙<EFBFBD>拷婧?
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- 淇濆瓨鍘熷<E98D98>鎻愮ず璇嶅拰妯″瀷杈撳嚭
|
||
- 璁板綍妯″瀷鐗堟湰鍜屾椂闂存埑
|
||
- 鍏宠仈浜哄伐澶嶆牳璁板綍
|
||
|
||
**鏁版嵁搴撹<E690B4>璁?*锛?
|
||
```prisma
|
||
model ScreeningResult {
|
||
id String @id @default(uuid())
|
||
literatureId String
|
||
protocolId String
|
||
|
||
// 妯″瀷A缁撴灉
|
||
modelAName String // "deepseek-chat"
|
||
modelAOutput Json // 鍘熷<E98D98>JSON杈撳嚭
|
||
modelAConfidence Float
|
||
|
||
// 妯″瀷B缁撴灉
|
||
modelBName String // "qwen-max"
|
||
modelBOutput Json
|
||
modelBConfidence Float
|
||
|
||
// 鏈€缁堝喅绛?
|
||
finalDecision String // "include"/"exclude"/"uncertain"
|
||
consensus String // "high"/"conflict"
|
||
needReview Boolean
|
||
|
||
// 浜哄伐澶嶆牳
|
||
reviewedBy String?
|
||
reviewedAt DateTime?
|
||
reviewDecision String?
|
||
reviewNotes String?
|
||
|
||
// 鍙<>拷婧<E68BB7>俊鎭?
|
||
promptTemplate String @db.Text // 浣跨敤鐨勬彁绀鸿瘝妯℃澘
|
||
createdAt DateTime @default(now())
|
||
|
||
@@map("asl_screening_results")
|
||
}
|
||
```
|
||
|
||
### 涓夈€丮VP 鎴愭湰棰勭畻
|
||
|
||
**鍦烘櫙锛氱瓫閫?1000 绡囨枃鐚?*
|
||
|
||
| 椤圭洰 | DeepSeek | Qwen3 | 鍚堣<E98D9A> |
|
||
|------|----------|-------|------|
|
||
| 杈撳叆 tokens锛堝钩鍧囷級 | 800 | 800 | - |
|
||
| 杈撳嚭 tokens锛堝钩鍧囷級 | 200 | 200 | - |
|
||
| 鍗曟<E98D97>鎴愭湰 | 楼0.001 | 楼0.004 | 楼0.005 |
|
||
| **1000 绡囨€绘垚鏈?* | 楼1 | 楼4 | **楼5** |
|
||
|
||
**鍐茬獊鐜?20% 浜哄伐澶嶆牳**锛?
|
||
- 鑷<>姩閫氳繃锛?00 绡?脳 楼0.005 = 楼4
|
||
- 浜哄伐澶嶆牳锛?00 绡?脳 2 鍒嗛挓 = 6.7 灏忔椂
|
||
- **鎬绘垚鏈?*锛毬? + 浜哄伐鎴愭湰
|
||
|
||
### 鍥涖€丮VP 楠屾敹鏍囧噯
|
||
|
||
| 鎸囨爣 | 鐩<>爣 | 楠岃瘉鏂规硶 |
|
||
|------|------|----------|
|
||
| 鍙屾ā鍨嬩竴鑷寸巼 | 鈮?80% | 缁熻<E7BC81>鎶ヨ〃 |
|
||
| JSON Schema 楠岃瘉閫氳繃鐜?| 鈮?95% | 鑷<>姩妫€鏌?|
|
||
| 浜哄伐澶嶆牳闃熷垪鍗犳瘮 | 鈮?20% | 绯荤粺缁熻<E7BC81> |
|
||
| 鎻愬彇缁撴灉鍙<E78189>拷婧?| 100% | 瀹¤<E780B9>妫€鏌?|
|
||
| 鎴愭湰鎺у埗 | 鈮?楼50/1000 绡?| 璐﹀崟鐩戞帶 |
|
||
|
||
---
|
||
|
||
## 馃搱 V1.0 闃舵<E99783>锛? 鍛<>級
|
||
|
||
### 鐩<>爣瀹氫綅
|
||
|
||
- **鍑嗙‘鐜囩洰鏍?*锛氣墺 90%
|
||
- **鎴愭湰棰勭畻**锛氱瓫閫?1000 绡囨枃鐚?鈮?楼80
|
||
- **浜や粯鏍囧噯**锛氶珮璐ㄩ噺杈撳嚭锛屾櫤鑳借川閲忔帶鍒?
|
||
|
||
### 涓€銆佹ā鍨嬬瓥鐣ヤ紭鍖?
|
||
|
||
#### 1.1 鎴愭湰浼樺寲绛栫暐
|
||
|
||
**鏍稿績鎬濊矾**锛?0% 鐢ㄤ綆鎴愭湰妯″瀷锛?0% 楂樹环鍊间换鍔$敤椤剁骇妯″瀷
|
||
|
||
```typescript
|
||
async function smartScreening(literature: Literature, protocol: Protocol) {
|
||
// 绗<>竴闃舵<E99783>锛氬揩閫熷垵绛涳紙DeepSeek锛?
|
||
const quickResult = await llmService.chat('deepseek', buildPrompt(...));
|
||
const quickDecision = parseJSON(quickResult.content);
|
||
|
||
// 濡傛灉楂樼疆淇″害 + 鏄庣‘缁撹<E7BC81> 鈫?鐩存帴閲囩撼
|
||
if (
|
||
quickDecision.confidence > 0.85 &&
|
||
quickDecision.decision !== 'uncertain'
|
||
) {
|
||
return {
|
||
finalDecision: quickDecision.decision,
|
||
strategy: 'cost-optimized',
|
||
models: [quickDecision]
|
||
};
|
||
}
|
||
|
||
// 鍚﹀垯 鈫?鍚<>敤楂樼<E6A582>妯″瀷澶嶆牳
|
||
const detailedResult = await llmService.chat('gpt5', buildPrompt(...));
|
||
return {
|
||
finalDecision: detailedResult.decision,
|
||
strategy: 'quality-assured',
|
||
models: [quickDecision, detailedResult]
|
||
};
|
||
}
|
||
```
|
||
|
||
**棰勬湡鎴愭湰鑺傜渷**锛?
|
||
- 80% 浠诲姟鐢?DeepSeek锛?00 脳 楼0.001 = 楼0.8
|
||
- 20% 浠诲姟鐢?GPT-5锛?00 脳 楼0.10 = 楼20
|
||
- **鎬绘垚鏈?*锛毬?0.8锛堢浉姣斿叏鐢?GPT-5 鑺傜渷 80%锛?
|
||
|
||
### 浜屻€佹牳蹇冩妧鏈<E5A6A7><E98F88>寮?
|
||
|
||
#### 2.1 鉁?Few-shot 绀轰緥搴?
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- 浜哄伐鏍囨敞 20-30 涓<>珮璐ㄩ噺绀轰緥
|
||
- 閽堝<E996BD>涓嶅悓鐮旂┒绫诲瀷鍒嗙被锛圧CT銆侀槦鍒椼€佺梾渚嬪<E6B89A>鐓э級
|
||
- 鍔ㄦ€侀€夋嫨鐩镐技绀轰緥宓屽叆鎻愮ず璇?
|
||
|
||
**绀轰緥鏍煎紡**锛?
|
||
```json
|
||
{
|
||
"examples": [
|
||
{
|
||
"title": "Effect of aspirin on cardiovascular events in patients with diabetes",
|
||
"abstract": "...",
|
||
"goldStandard": {
|
||
"decision": "include",
|
||
"reason": "RCT鐮旂┒锛屼汉缇や负绯栧翱鐥呮偅鑰咃紙鍖归厤P锛夛紝骞查<E9AA9E>涓洪樋鍙稿尮鏋楋紙鍖归厤I锛夛紝瀵圭収涓哄畨鎱板墏锛堝尮閰岰锛夛紝缁撳眬涓哄績琛€绠′簨浠讹紙鍖归厤O锛?,
|
||
"pico": {
|
||
"population": "match",
|
||
"intervention": "match",
|
||
"comparison": "match",
|
||
"outcome": "match"
|
||
},
|
||
"studyDesign": "RCT"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**鎻愮ず璇嶅<E79287>寮?*锛?
|
||
```typescript
|
||
const promptWithExamples = `
|
||
# 鍙傝€冪ず渚?
|
||
|
||
浠ヤ笅鏄?3 涓<>爣娉ㄥソ鐨勭ず渚嬶紝甯<E7B49D>姪浣犵悊瑙e垽鏂<E59EBD>爣鍑嗭細
|
||
|
||
${examples.map((ex, i) => `
|
||
## 绀轰緥 ${i + 1}
|
||
鏍囬<EFBFBD>: ${ex.title}
|
||
鎽樿<EFBFBD>: ${ex.abstract}
|
||
鍒ゆ柇: ${ex.goldStandard.decision}
|
||
鐞嗙敱: ${ex.goldStandard.reason}
|
||
`).join('\n')}
|
||
|
||
# 寰呯瓫閫夋枃鐚?
|
||
鏍囬<EFBFBD>: ${literature.title}
|
||
鎽樿<EFBFBD>: ${literature.abstract}
|
||
|
||
璇峰弬鑰冧笂杩扮ず渚嬶紝杈撳嚭浣犵殑鍒ゆ柇缁撴灉锛圝SON鏍煎紡锛夈€?
|
||
`;
|
||
```
|
||
|
||
#### 2.2 鉁?鍒嗘<E98D92>鎻愬彇
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- 閽堝<E996BD>鍏ㄦ枃鏁版嵁鎻愬彇锛屾寜绔犺妭鍒嗘<E98D92>澶勭悊
|
||
- 姣忔<E5A7A3>鐙<EFBFBD>珛鎻愬彇锛屽噺灏戜笂涓嬫枃娣锋穯
|
||
- 鏈€鍚庡悎骞剁粨鏋滐紝浜ゅ弶楠岃瘉涓€鑷存€?
|
||
|
||
**鍒嗘<E98D92>绛栫暐**锛?
|
||
```typescript
|
||
async function segmentedExtraction(fullText: string, protocol: Protocol) {
|
||
// 鍒嗘<E98D92>
|
||
const sections = {
|
||
methods: extractSection(fullText, 'methods'),
|
||
results: extractSection(fullText, 'results'),
|
||
tables: extractTables(fullText),
|
||
};
|
||
|
||
// 骞惰<E9AA9E>鎻愬彇
|
||
const [methodsData, resultsData, tablesData] = await Promise.all([
|
||
extractFromMethods(sections.methods, protocol),
|
||
extractFromResults(sections.results, protocol),
|
||
extractFromTables(sections.tables, protocol),
|
||
]);
|
||
|
||
// 鍚堝苟缁撴灉
|
||
return mergeExtractionResults([methodsData, resultsData, tablesData]);
|
||
}
|
||
```
|
||
|
||
**鎻愬彇绀轰緥锛堟柟娉曞<E5A889>閮ㄥ垎锛?*锛?
|
||
```typescript
|
||
const methodsPrompt = `
|
||
璇蜂粠浠ヤ笅鏂规硶瀛﹂儴鍒嗘彁鍙栫爺绌惰<EFBFBD>璁′俊鎭<EFBFBD>細
|
||
|
||
# 鏂规硶瀛﹀師鏂?
|
||
${methodsSection}
|
||
|
||
# 鎻愬彇瀛楁<E7809B>
|
||
- 鐮旂┒璁捐<E79281>绫诲瀷锛圧CT/cohort/case-control绛夛級
|
||
- 鏍锋湰閲忥紙骞查<E9AA9E>缁?瀵圭収缁勶級
|
||
- 绾冲叆鏍囧噯
|
||
- 鎺掗櫎鏍囧噯
|
||
- 闅忔満鍖栨柟娉曪紙濡傞€傜敤锛?
|
||
- 鐩叉硶锛堝<E9949B>閫傜敤锛?
|
||
|
||
# 杈撳嚭鏍煎紡锛圝SON锛?
|
||
${methodsSchema}
|
||
`;
|
||
```
|
||
|
||
#### 2.3 鉁?瑙勫垯寮曟搸楠岃瘉
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- 瀹氫箟涓氬姟瑙勫垯锛岃嚜鍔ㄦ<E98D94>鏌ラ€昏緫閿欒<E996BF>
|
||
- 鏁板€艰寖鍥撮獙璇?
|
||
- 蹇呭~瀛楁<E7809B>瀹屾暣鎬ф<E98EAC>鏌?
|
||
|
||
**楠岃瘉瑙勫垯**锛?
|
||
```typescript
|
||
const validationRules = [
|
||
{
|
||
name: '鏍锋湰閲忓悎鐞嗘€?,
|
||
check: (data) => {
|
||
const total = data.sampleSize.intervention + data.sampleSize.control;
|
||
return total >= 10 && total <= 100000;
|
||
},
|
||
errorMessage: '鏍锋湰閲忚秴鍑哄悎鐞嗚寖鍥达紙10-100000锛?
|
||
},
|
||
{
|
||
name: 'P鍊艰寖鍥?,
|
||
check: (data) => {
|
||
return data.pValue >= 0 && data.pValue <= 1;
|
||
},
|
||
errorMessage: 'P鍊煎繀椤诲湪0-1涔嬮棿'
|
||
},
|
||
{
|
||
name: '蹇呭~瀛楁<EFBFBD>瀹屾暣鎬?,
|
||
check: (data) => {
|
||
const required = ['studyDesign', 'sampleSize', 'primaryOutcome'];
|
||
return required.every(field => data[field] != null);
|
||
},
|
||
errorMessage: '缂哄皯蹇呭~瀛楁<E7809B>'
|
||
}
|
||
];
|
||
|
||
function validateExtraction(data: ExtractionResult): ValidationReport {
|
||
const errors = [];
|
||
for (const rule of validationRules) {
|
||
if (!rule.check(data)) {
|
||
errors.push(rule.errorMessage);
|
||
}
|
||
}
|
||
return {
|
||
isValid: errors.length === 0,
|
||
errors
|
||
};
|
||
}
|
||
```
|
||
|
||
#### 2.4 鉁?瀹屾暣璇佹嵁閾?
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- 璁板綍鍘熸枃寮曠敤浣嶇疆锛堥〉鐮併€佹<E282AC>钀姐€佸彞瀛愶級
|
||
- 淇濆瓨妯″瀷瀹屾暣杈撳嚭锛堝惈涓<E68388>棿鎺ㄧ悊锛?
|
||
- 鍏宠仈鎵€鏈変汉宸ヤ慨鏀硅<E98F80>褰?
|
||
|
||
**鏁版嵁搴撳<E690B4>寮?*锛?
|
||
```prisma
|
||
model ExtractionResult {
|
||
id String @id @default(uuid())
|
||
|
||
// 鎻愬彇鍐呭<E98D90>
|
||
extractedData Json
|
||
|
||
// 璇佹嵁閾撅紙鏂板<E98F82>锛?
|
||
evidenceChain Json // {
|
||
// "sampleSize": {
|
||
// "value": 150,
|
||
// "source": {
|
||
// "page": 3,
|
||
// "paragraph": 2,
|
||
// "text": "A total of 150 patients were enrolled..."
|
||
// }
|
||
// }
|
||
// }
|
||
|
||
// 妯″瀷淇℃伅
|
||
modelName String
|
||
modelVersion String
|
||
promptVersion String // "v1.2.0"
|
||
rawOutput String @db.Text // 鍘熷<E98D98>杈撳嚭锛堝惈CoT鎺ㄧ悊锛?
|
||
|
||
// 淇<>敼鍘嗗彶
|
||
revisions ExtractionRevision[]
|
||
|
||
createdAt DateTime @default(now())
|
||
@@map("asl_extraction_results")
|
||
}
|
||
|
||
model ExtractionRevision {
|
||
id String @id @default(uuid())
|
||
extractionId String
|
||
|
||
fieldName String // 淇<>敼鐨勫瓧娈?
|
||
oldValue Json
|
||
newValue Json
|
||
reason String // 淇<>敼鐞嗙敱
|
||
|
||
revisedBy String
|
||
revisedAt DateTime @default(now())
|
||
|
||
extraction ExtractionResult @relation(fields: [extractionId], references: [id])
|
||
@@map("asl_extraction_revisions")
|
||
}
|
||
```
|
||
|
||
### 涓夈€乂1.0 鎴愭湰棰勭畻
|
||
|
||
**鍦烘櫙锛氱瓫閫?1000 绡?+ 鎻愬彇 200 绡囧叏鏂?*
|
||
|
||
| 浠诲姟 | 绛栫暐 | 鎴愭湰 |
|
||
|------|------|------|
|
||
| 鏍囬<E98F8D>鎽樿<E98EBD>绛涢€?| 80% DeepSeek + 20% GPT-5 | 楼21 |
|
||
| 鍏ㄦ枃鏁版嵁鎻愬彇 | 鍒嗘<E98D92>鎻愬彇锛圙PT-5锛?| 楼60 |
|
||
| **鎬绘垚鏈?* | - | **楼81** |
|
||
|
||
### 鍥涖€乂1.0 楠屾敹鏍囧噯
|
||
|
||
| 鎸囨爣 | 鐩<>爣 | 楠岃瘉鏂规硶 |
|
||
|------|------|----------|
|
||
| 鎻愬彇鍑嗙‘鐜?| 鈮?90% | 浜哄伐鎶芥煡 50 绡?|
|
||
| Few-shot 绀轰緥搴?| 鈮?20 涓?| 浜哄伐鏍囨敞 |
|
||
| 瑙勫垯寮曟搸瑕嗙洊鐜?| 鈮?80% | 浠g爜瀹℃煡 |
|
||
| 璇佹嵁閾惧畬鏁存€?| 100% | 瀹¤<E780B9>妫€鏌?|
|
||
| 鎴愭湰鎺у埗 | 鈮?楼80/椤圭洰 | 璐﹀崟鐩戞帶 |
|
||
|
||
---
|
||
|
||
## 馃弳 V2.0 闃舵<E99783>锛? 鍛<>級
|
||
|
||
### 鐩<>爣瀹氫綅
|
||
|
||
- **鍑嗙‘鐜囩洰鏍?*锛氣墺 95%锛堝尰瀛︾骇锛?
|
||
- **鎴愭湰棰勭畻**锛氭寜闇€閰嶇疆
|
||
- **浜や粯鏍囧噯**锛氳嚜鍔ㄥ寲璐ㄩ噺瀹¤<E780B9>锛岀<E9949B>鍚堜复搴婄爺绌惰<E7BB8C>鑼?
|
||
|
||
### 涓€銆佸尰瀛︾骇璐ㄩ噺淇濋殰
|
||
|
||
#### 1.1 鉁?涓夋ā鍨嬪叡璇嗕徊瑁?
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- 鍙屾ā鍨嬪啿绐佹椂锛岃嚜鍔ㄥ惎鐢ㄧ<E990A2>涓夋柟浠茶<E6B5A0>
|
||
- 涓夋ā鍨嬫姇绁ㄥ喅绛?
|
||
- 璁板綍浠茶<E6B5A0>杩囩▼
|
||
|
||
```typescript
|
||
async function threeModelArbitration(
|
||
literature: Literature,
|
||
protocol: Protocol
|
||
) {
|
||
// 绗<>竴杞<E7ABB4>細鍙屾ā鍨?
|
||
const [resultA, resultB] = await Promise.all([
|
||
llmService.chat('deepseek', buildPrompt(...)),
|
||
llmService.chat('qwen', buildPrompt(...))
|
||
]);
|
||
|
||
// 濡傛灉涓€鑷达紝鐩存帴杩斿洖
|
||
if (resultA.decision === resultB.decision) {
|
||
return { finalDecision: resultA.decision, arbitration: false };
|
||
}
|
||
|
||
// 鍐茬獊 鈫?鍚<>敤 Claude 浠茶<E6B5A0>
|
||
console.log('妫€娴嬪埌鍐茬獊锛屽惎鐢?Claude-4.5 浠茶<E6B5A0>...');
|
||
const resultC = await llmService.chat('claude', buildPrompt(...));
|
||
|
||
// 涓夋ā鍨嬫姇绁?
|
||
const votes = [resultA.decision, resultB.decision, resultC.decision];
|
||
const voteCount = {
|
||
include: votes.filter(v => v === 'include').length,
|
||
exclude: votes.filter(v => v === 'exclude').length,
|
||
uncertain: votes.filter(v => v === 'uncertain').length,
|
||
};
|
||
|
||
// 澶氭暟鍐?
|
||
const winner = Object.entries(voteCount)
|
||
.sort((a, b) => b[1] - a[1])[0][0];
|
||
|
||
return {
|
||
finalDecision: winner,
|
||
arbitration: true,
|
||
votes: { resultA, resultB, resultC },
|
||
consensus: voteCount[winner] >= 2 ? 'strong' : 'weak'
|
||
};
|
||
}
|
||
```
|
||
|
||
**鎴愭湰鎺у埗**锛?
|
||
- 浠呭湪鍐茬獊鏃跺惎鐢ㄤ徊瑁侊紙棰勮<E6A3B0> 10-15%锛?
|
||
- 鍗曟<E98D97>浠茶<E6B5A0>棰濆<E6A3B0>鎴愭湰锛毬?.021锛圕laude-4.5锛?
|
||
|
||
#### 1.2 鉁?HITL 鏅鸿兘鍒嗘祦
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- 鍩轰簬瑙勫垯鐨勬櫤鑳戒紭鍏堢骇鎺掑簭
|
||
- 楂樹环鍊?楂橀<E6A582>闄╀换鍔′紭鍏堜汉宸ュ<E5AEB8>鏍?
|
||
- 浣庨<E6B5A3>闄╀换鍔¤嚜鍔ㄥ寲澶勭悊
|
||
|
||
**鍒嗘祦瑙勫垯**锛?
|
||
```typescript
|
||
function intelligentTriage(result: ScreeningResult): TriageDecision {
|
||
let priority = 0;
|
||
let needReview = false;
|
||
|
||
// 瑙勫垯1锛氫笁妯″瀷浠嶄笉涓€鑷?鈫?鏈€楂樹紭鍏堢骇
|
||
if (result.arbitration && result.consensus === 'weak') {
|
||
priority = 100;
|
||
needReview = true;
|
||
}
|
||
// 瑙勫垯2锛歊CT 鐮旂┒ 鈫?涓<>瓑浼樺厛绾?
|
||
else if (result.studyDesign === 'RCT') {
|
||
priority = 70;
|
||
needReview = result.confidence < 0.9;
|
||
}
|
||
// 瑙勫垯3锛氬叧閿<E58FA7>粨灞€鎸囨爣 鈫?楂樹紭鍏堢骇
|
||
else if (result.outcome.includes('mortality')) {
|
||
priority = 80;
|
||
needReview = result.confidence < 0.85;
|
||
}
|
||
// 瑙勫垯4锛氶珮缃<E78FAE>俊搴?+ 涓€鑷?鈫?鑷<>姩閫氳繃
|
||
else if (result.confidence > 0.95 && result.consensus === 'high') {
|
||
priority = 10;
|
||
needReview = false;
|
||
}
|
||
|
||
return { priority, needReview };
|
||
}
|
||
```
|
||
|
||
#### 1.3 鉁?鎻愮ず璇嶇増鏈<E5A297><E98F88>鐞?
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- Git 绠$悊鎻愮ず璇嶆ā鏉?
|
||
- 鐗堟湰鍙锋爣璁帮紙璇<E7B499>箟鍖栫増鏈<E5A297>級
|
||
- A/B 娴嬭瘯涓嶅悓鐗堟湰鏁堟灉
|
||
|
||
**鐩<>綍缁撴瀯**锛?
|
||
```
|
||
backend/prompts/asl/
|
||
鈹溾攢鈹€ screening/
|
||
鈹? 鈹溾攢鈹€ v1.0.0-basic.txt
|
||
鈹? 鈹溾攢鈹€ v1.1.0-with-examples.txt
|
||
鈹? 鈹斺攢鈹€ v1.2.0-cot.txt
|
||
鈹溾攢鈹€ extraction/
|
||
鈹? 鈹溾攢鈹€ v1.0.0-methods.txt
|
||
鈹? 鈹斺攢鈹€ v1.1.0-methods-segmented.txt
|
||
鈹斺攢鈹€ changelog.md
|
||
```
|
||
|
||
**鐗堟湰璁板綍**锛?
|
||
```prisma
|
||
model PromptVersion {
|
||
id String @id @default(uuid())
|
||
|
||
name String // "screening-v1.2.0"
|
||
content String @db.Text
|
||
version String // "1.2.0"
|
||
changelog String // "澧炲姞 Few-shot 绀轰緥"
|
||
|
||
// 鎬ц兘鎸囨爣
|
||
accuracy Float? // 0.92
|
||
usageCount Int @default(0)
|
||
|
||
isActive Boolean @default(false)
|
||
createdAt DateTime @default(now())
|
||
|
||
@@map("asl_prompt_versions")
|
||
}
|
||
```
|
||
|
||
#### 1.4 鉁?鑷<>姩璐ㄩ噺瀹¤<E780B9>
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- 瀹氭湡鎵归噺鎶芥煡锛?0%锛?
|
||
- 鑷<>姩鐢熸垚璐ㄩ噺鎶ュ憡
|
||
- 寮傚父妫€娴嬪拰鍛婅<E98D9B>
|
||
|
||
**瀹¤<E780B9>鎶ヨ〃**锛?
|
||
```typescript
|
||
interface QualityAuditReport {
|
||
period: { start: Date; end: Date };
|
||
totalTasks: number;
|
||
sampledTasks: number;
|
||
|
||
metrics: {
|
||
accuracy: number; // 鍑嗙‘鐜?
|
||
interRaterAgreement: number; // 浜烘満涓€鑷存€?
|
||
falsePositiveRate: number; // 鍋囬槼鎬х巼
|
||
falseNegativeRate: number; // 鍋囬槾鎬х巼
|
||
};
|
||
|
||
modelPerformance: {
|
||
deepseek: { accuracy: number; avgConfidence: number };
|
||
qwen: { accuracy: number; avgConfidence: number };
|
||
gpt5: { accuracy: number; avgConfidence: number };
|
||
};
|
||
|
||
issues: {
|
||
type: string;
|
||
count: number;
|
||
examples: string[];
|
||
}[];
|
||
|
||
recommendations: string[];
|
||
}
|
||
```
|
||
|
||
### 浜屻€侀珮绾ф彁绀鸿瘝宸ョ▼
|
||
|
||
#### 2.1 鉁?Chain of Thought (CoT)
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- 瑕佹眰妯″瀷杈撳嚭鎺ㄧ悊杩囩▼
|
||
- 鍒嗘<E98D92>楠ゅ垽鏂?PICO 鍖归厤搴?
|
||
- 鏈€鍚庣粰鍑虹患鍚堢粨璁?
|
||
|
||
**鎻愮ず璇嶇ず渚?*锛?
|
||
```
|
||
璇锋寜鐓т互涓嬫<EFBFBD>楠ゅ垽鏂<EFBFBD>繖绡囨枃鐚<EFBFBD>槸鍚﹀簲璇ョ撼鍏ワ細
|
||
|
||
# Step 1: 鐮旂┒璁捐<E79281>鍒ゆ柇
|
||
- 璇嗗埆鐮旂┒绫诲瀷锛圧CT/闃熷垪/鐥呬緥瀵圭収绛夛級
|
||
- 鍒ゆ柇鏄<E69F87>惁绗﹀悎绾冲叆鏍囧噯
|
||
|
||
# Step 2: PICO 閫愰」璇勪及
|
||
- Population: 璇︾粏鍒嗘瀽浜虹兢鏄<E585A2>惁鍖归厤
|
||
- Intervention: 璇︾粏鍒嗘瀽骞查<E9AA9E>鎺<EFBFBD>柦鏄<E69FA6>惁鍖归厤
|
||
- Comparison: 璇︾粏鍒嗘瀽瀵圭収鏄<E58F8E>惁鍖归厤
|
||
- Outcome: 璇︾粏鍒嗘瀽缁撳眬鎸囨爣鏄<E788A3>惁鍖归厤
|
||
|
||
# Step 3: 缁煎悎鍒ゆ柇
|
||
- 姹囨€讳互涓婂垎鏋?
|
||
- 缁欏嚭鏈€缁堝喅绛栵紙include/exclude/uncertain锛?
|
||
- 璇勪及缃<E58F8A>俊搴︼紙0-1锛?
|
||
|
||
# 杈撳嚭鏍煎紡
|
||
{
|
||
"reasoning": {
|
||
"studyDesign": "杩欐槸涓€椤?..",
|
||
"population": "浜虹兢鍖归厤搴﹀垎鏋?..",
|
||
"intervention": "骞查<E9AA9E>鎺<EFBFBD>柦鍒嗘瀽...",
|
||
"comparison": "瀵圭収鍒嗘瀽...",
|
||
"outcome": "缁撳眬鎸囨爣鍒嗘瀽..."
|
||
},
|
||
"decision": "include",
|
||
"confidence": 0.95,
|
||
"reason": "鍩轰簬浠ヤ笂鍒嗘瀽..."
|
||
}
|
||
```
|
||
|
||
#### 2.2 鉁?鍔ㄦ€佺ず渚嬮€夋嫨
|
||
|
||
**瀹炴柦鏂规<E98F82>**锛?
|
||
- 璁$畻寰呯瓫閫夋枃鐚<E69E83>笌绀轰緥搴撶殑璇<E6AE91>箟鐩镐技搴?
|
||
- 鍔ㄦ€侀€夋嫨鏈€鐩镐技鐨?3-5 涓<>ず渚?
|
||
- 宓屽叆鎻愮ず璇?
|
||
|
||
```typescript
|
||
async function selectSimilarExamples(
|
||
literature: Literature,
|
||
examplePool: Example[]
|
||
): Promise<Example[]> {
|
||
// 浣跨敤宓屽叆妯″瀷璁$畻鐩镐技搴?
|
||
const literatureEmbedding = await getEmbedding(
|
||
`${literature.title} ${literature.abstract}`
|
||
);
|
||
|
||
const similarities = examplePool.map(ex => ({
|
||
example: ex,
|
||
similarity: cosineSimilarity(literatureEmbedding, ex.embedding)
|
||
}));
|
||
|
||
// 杩斿洖鏈€鐩镐技鐨?5 涓?
|
||
return similarities
|
||
.sort((a, b) => b.similarity - a.similarity)
|
||
.slice(0, 5)
|
||
.map(s => s.example);
|
||
}
|
||
```
|
||
|
||
### 涓夈€乂2.0 鎴愭湰棰勭畻
|
||
|
||
**鍦烘櫙锛氶珮璐ㄩ噺绯荤粺璇勪环椤圭洰锛堢瓫閫?5000 绡?+ 鎻愬彇 300 绡囷級**
|
||
|
||
| 浠诲姟 | 绛栫暐 | 鎴愭湰 |
|
||
|------|------|------|
|
||
| 鏍囬<E98F8D>鎽樿<E98EBD>绛涢€?| 鎴愭湰浼樺寲 + 15% 浠茶<E6B5A0> | 楼120 |
|
||
| 鍏ㄦ枃鏁版嵁鎻愬彇 | GPT-5 + Claude 鍙屾ā鍨?| 楼350 |
|
||
| 璐ㄩ噺瀹¤<E780B9> | 10% 鎶芥煡 | 楼30 |
|
||
| **鎬绘垚鏈?* | - | **楼500** |
|
||
|
||
### 鍥涖€乂2.0 楠屾敹鏍囧噯
|
||
|
||
| 鎸囨爣 | 鐩<>爣 | 楠岃瘉鏂规硶 |
|
||
|------|------|----------|
|
||
| 鎻愬彇鍑嗙‘鐜?| 鈮?95% | 浜哄伐鎶芥煡 100 绡?|
|
||
| 浜烘満涓€鑷存€?| 鈮?90% | Cohen's Kappa |
|
||
| 鍋囬槼鎬х巼 | 鈮?5% | 缁熻<E7BC81>鍒嗘瀽 |
|
||
| 鍋囬槾鎬х巼 | 鈮?3% | 缁熻<E7BC81>鍒嗘瀽 |
|
||
| 鎻愮ず璇嶇増鏈<E5A297><E98F88>鐞?| 100% | Git 鍘嗗彶 |
|
||
| 鑷<>姩鍖栧<E98D96>璁?| 姣忓懆 1 娆?| 绯荤粺鎶ヨ〃 |
|
||
|
||
---
|
||
|
||
## 馃搳 涓夐樁娈靛<E5A888>姣旀€荤粨
|
||
|
||
| 缁村害 | MVP | V1.0 | V2.0 |
|
||
|------|-----|------|------|
|
||
| **鍑嗙‘鐜?* | 85% | 90% | 95% |
|
||
| **妯″瀷缁勫悎** | DeepSeek + Qwen3 | 鎴愭湰浼樺寲绛栫暐 | 涓夋ā鍨嬩徊瑁?|
|
||
| **璐ㄩ噺鎺у埗** | 鍙屾ā鍨嬮獙璇?| 瑙勫垯寮曟搸 + Few-shot | HITL + 鑷<>姩瀹¤<E780B9> |
|
||
| **鍙<>拷婧<E68BB7>€?* | 鍩烘湰鏃ュ織 | 瀹屾暣璇佹嵁閾?| 瀹¤<E780B9>绾ц<E7BBBE>褰?|
|
||
| **鎴愭湰/1000 绡?* | 楼5 | 楼21 | 楼24 + 浠茶<E6B5A0> |
|
||
| **寮€鍙戝懆鏈?* | 4 鍛?| 6 鍛?| 8 鍛?|
|
||
| **閫傜敤鍦烘櫙** | 蹇<>€熼獙璇?| 甯歌<E794AF>椤圭洰 | 楂樿川閲忓彂琛?|
|
||
|
||
---
|
||
|
||
## 馃攧 瀹炴柦璺<E69FA6>緞
|
||
|
||
### 闃舵<E99783> 1: MVP 寮€鍙戯紙Week 1-4锛?
|
||
|
||
**Week 1**锛氬熀纭€鏋舵瀯
|
||
- [ ] LLM 鏈嶅姟灏佽<E7818F>锛圖eepSeek + Qwen3锛?
|
||
- [ ] JSON Schema 瀹氫箟
|
||
- [ ] 鏁版嵁搴撹〃璁捐<E79281>
|
||
|
||
**Week 2**锛氭牳蹇冨姛鑳?
|
||
- [ ] 鍙屾ā鍨嬪苟琛岃皟鐢?
|
||
- [ ] 涓€鑷存€у垽鏂<E59EBD>€昏緫
|
||
- [ ] 浜哄伐澶嶆牳闃熷垪
|
||
|
||
**Week 3**锛氬墠绔<E5A2A0>紑鍙?
|
||
- [ ] 绛涢€夊伐浣滃彴
|
||
- [ ] 鍐茬獊瀵规瘮瑙嗗浘
|
||
- [ ] 浜哄伐澶嶆牳鐣岄潰
|
||
|
||
**Week 4**锛氭祴璇曢獙鏀?
|
||
- [ ] 鍔熻兘娴嬭瘯
|
||
- [ ] 鍑嗙‘鐜囪瘎浼?
|
||
- [ ] 鎴愭湰鐩戞帶
|
||
|
||
### 闃舵<E99783> 2: V1.0 澧炲己锛圵eek 5-10锛?
|
||
|
||
**Week 5-6**锛氭櫤鑳戒紭鍖?
|
||
- [ ] 鎴愭湰浼樺寲绛栫暐
|
||
- [ ] Few-shot 绀轰緥搴?
|
||
- [ ] 鍔ㄦ€佺ず渚嬮€夋嫨
|
||
|
||
**Week 7-8**锛氳川閲忔帶鍒?
|
||
- [ ] 鍒嗘<E98D92>鎻愬彇
|
||
- [ ] 瑙勫垯寮曟搸
|
||
- [ ] 璇佹嵁閾惧畬鏁村寲
|
||
|
||
**Week 9-10**锛氭祴璇曚紭鍖?
|
||
- [ ] A/B 娴嬭瘯
|
||
- [ ] 鍑嗙‘鐜囨彁鍗?
|
||
- [ ] 鏂囨。瀹屽杽
|
||
|
||
### 闃舵<E99783> 3: V2.0 瀹屽杽锛圵eek 11-18锛?
|
||
|
||
**Week 11-13**锛氶珮绾у姛鑳?
|
||
- [ ] 涓夋ā鍨嬩徊瑁?
|
||
- [ ] HITL 鏅鸿兘鍒嗘祦
|
||
- [ ] 鎻愮ず璇嶇増鏈<E5A297><E98F88>鐞?
|
||
|
||
**Week 14-16**锛氳川閲忓<E996B2>璁?
|
||
- [ ] 鑷<>姩瀹¤<E780B9>绯荤粺
|
||
- [ ] 璐ㄩ噺鎶ヨ〃
|
||
- [ ] 寮傚父妫€娴?
|
||
|
||
**Week 17-18**锛氬彂甯冨噯澶?
|
||
- [ ] 鍏ㄩ噺娴嬭瘯
|
||
- [ ] 鍖诲<E98D96>涓撳<E6B693>楠岃瘉
|
||
- [ ] 鏂囨。鍜屽煿璁?
|
||
|
||
---
|
||
|
||
## 馃摎 鐩稿叧鏂囨。
|
||
|
||
- [CloseAI 闆嗘垚鎸囧崡](../../../02-閫氱敤鑳藉姏灞?01-LLM澶фā鍨嬬綉鍏?03-CloseAI闆嗘垚鎸囧崡.md)
|
||
- [AI 妯″瀷闆嗘垚璁捐<E79281>](./04-AI妯″瀷闆嗘垚璁捐<E79281>.md)
|
||
- [鏁版嵁搴撹<E690B4>璁<EFBFBD>(./01-鏁版嵁搴撹<E690B4>璁?md)
|
||
- [API 璁捐<E79281>瑙勮寖](./02-API璁捐<E79281>瑙勮寖.md)
|
||
|
||
---
|
||
|
||
**鏇存柊鏃ュ織**锛?
|
||
- 2025-11-15: 鍒涘缓鏂囨。锛屽畾涔?MVP/V1.0/V2.0 涓夐樁娈电瓥鐣?
|
||
|
||
|
||
|
||
|
||
|