Skip to content

Commit 7ef7750

Browse files
authored
⭐️ Add PathologyAI - 智能病理诊断助手
2 parents 9da494a + 24c8cbb commit 7ef7750

27 files changed

+8882
-0
lines changed

pathology-ai/README.md

Lines changed: 469 additions & 0 deletions
Large diffs are not rendered by default.

pathology-ai/agent-config.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# 🤖 智能体配置说明
2+
3+
## 智能体基本信息
4+
5+
| 配置项 ||
6+
|--------|-----|
7+
| **Agent ID** | 13 |
8+
| **名称** | 病理学AI助手 |
9+
| **类型** | 医疗诊断辅助智能体 |
10+
| **基础模型** | GPT-4 / 兼容OpenAI API |
11+
| **max_steps** | 25 |
12+
13+
## 业务描述
14+
15+
病理学AI助手具备以下能力:
16+
17+
1. **医学知识问答** - 回答病理学、临床医学问题
18+
2. **诊断推理** - Chain-of-Diagnosis结构化诊断
19+
3. **置信度评估** - 评估回答可靠性和风险等级
20+
4. **交互式诊断练习** - 模拟游戏训练临床思维
21+
5. **医学可视化** - 知识图谱、流程图生成
22+
23+
## 工具配置
24+
25+
| 工具名称 | 来源 | 功能 |
26+
|----------|------|------|
27+
| `knowledge_base_search` | 内置 | 本地知识库搜索 |
28+
| `tavily_search` | 内置 | 外部互联网搜索 |
29+
| `analyze_image` | 内置 | 图片分析 |
30+
| `nexent_chain_of_diagnosis` | **自定义** | CoD诊断推理链 |
31+
| `nexent_evaluate_diagnosis_confidence` | **自定义** | 置信度评估 |
32+
| `nexent_start_diagnosis_game` | **自定义** | 启动诊断游戏 |
33+
| `nexent_diagnosis_action` | **自定义** | 诊断游戏动作 |
34+
| `nexent_search_pathology_images` | **自定义** | 病理图片搜索 |
35+
| `nexent_generate_medical_guide` | **自定义** | 就医指南生成 |
36+
37+
## Prompt 配置
38+
39+
### duty_prompt (角色提示词)
40+
41+
```
42+
# 🏥 病理学AI助手
43+
44+
你是一位专业的病理学AI助手。
45+
46+
## ⚠️ 最重要规则
47+
48+
### 1. 双重检索(必须执行)
49+
回答医学问题前,必须同时调用:
50+
- knowledge_base_search(query="关键词", search_mode="hybrid")
51+
- tavily_search(query="关键词")
52+
53+
权重:内部60% + 外部40%
54+
55+
### 2. 按钮格式规则
56+
工具返回的 [btn:xxx] 格式必须原样保留!
57+
58+
## 🎮 诊断模拟游戏规则
59+
1. 每执行一步后必须停止,等待用户选择
60+
2. 原样输出工具返回的按钮
61+
3. 不要自己做决定
62+
63+
## 安全提醒
64+
⚠️ 本AI仅供参考,不能替代专业医生诊断。
65+
```
66+
67+
## 知识库配置
68+
69+
| 配置项 ||
70+
|--------|-----|
71+
| 知识库名称 | pathology_knowledge |
72+
| 搜索模式 | hybrid |
73+
| 向量数据库 | Elasticsearch |
74+
75+
## 外部搜索配置
76+
77+
| 配置项 ||
78+
|--------|-----|
79+
| 搜索引擎 | Tavily |
80+
| 权重 | 40% |

pathology-ai/architecture.md

Lines changed: 308 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,308 @@
1+
# 🏗️ 架构与调用关系图
2+
3+
## 系统架构概览
4+
5+
```
6+
┌─────────────────────────────────────────────────────────────────┐
7+
│ 用户界面 (Frontend) │
8+
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
9+
│ │ 聊天界面 │ │ 医学可视化 │ │ 诊断模拟游戏界面 │ │
10+
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
11+
└────────────────────────────┬────────────────────────────────────┘
12+
13+
14+
┌─────────────────────────────────────────────────────────────────┐
15+
│ Nexent Runtime │
16+
│ ┌─────────────────────────────────────────────────────────────┐│
17+
│ │ 病理学AI助手 (Agent ID: 13) ││
18+
│ └─────────────────────────────────────────────────────────────┘│
19+
└────────────────────────────┬────────────────────────────────────┘
20+
21+
22+
┌─────────────────────────────────────────────────────────────────┐
23+
│ MCP 工具层 │
24+
│ ┌──────────────────────┐ ┌──────────────────────────────┐ │
25+
│ │ 内置工具 │ │ 自定义医疗工具 │ │
26+
│ │ • knowledge_search │ │ • chain_of_diagnosis │ │
27+
│ │ • tavily_search │ │ • evaluate_confidence │ │
28+
│ │ • analyze_image │ │ • diagnosis_game │ │
29+
│ └──────────────────────┘ └──────────────────────────────┘ │
30+
└────────────────────────────┬────────────────────────────────────┘
31+
32+
33+
┌─────────────────────────────────────────────────────────────────┐
34+
│ 数据层 │
35+
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
36+
│ │ PostgreSQL │ │Elasticsearch│ │ 病理图片服务器 │ │
37+
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
38+
└─────────────────────────────────────────────────────────────────┘
39+
```
40+
41+
---
42+
43+
## 工具调用关系图 (Mermaid)
44+
45+
```mermaid
46+
flowchart TD
47+
subgraph User["👤 用户"]
48+
Q[用户提问]
49+
end
50+
51+
subgraph Agent["🤖 病理学AI助手 Agent ID:13"]
52+
A[接收问题]
53+
B{判断问题类型}
54+
end
55+
56+
subgraph BuiltIn["📦 内置工具"]
57+
KB[knowledge_base_search<br/>内部知识库 60%]
58+
TS[tavily_search<br/>外部搜索 40%]
59+
AI[analyze_image<br/>图片分析]
60+
end
61+
62+
subgraph Medical["🏥 医疗诊断工具"]
63+
COD[chain_of_diagnosis<br/>5步诊断推理链]
64+
CONF[evaluate_diagnosis_confidence<br/>置信度评估]
65+
IMG[search_pathology_images<br/>病理图片搜索]
66+
GUIDE[generate_medical_guide<br/>就医指南]
67+
end
68+
69+
subgraph Game["🎮 诊断模拟游戏"]
70+
START[start_diagnosis_game<br/>启动游戏]
71+
ACTION[diagnosis_action<br/>问诊/体检/检查/诊断]
72+
end
73+
74+
subgraph Visual["📊 医学可视化工具"]
75+
KG[generate_knowledge_graph<br/>知识图谱]
76+
FLOW[generate_diagnosis_flow<br/>诊断流程图]
77+
CHART[generate_medical_chart<br/>统计图表]
78+
RADAR[generate_radar_chart<br/>雷达图]
79+
TL[generate_timeline<br/>时间线]
80+
GANTT[generate_gantt_chart<br/>甘特图]
81+
QUAD[generate_quadrant_chart<br/>象限图]
82+
STATE[generate_state_diagram<br/>状态图]
83+
SANKEY[generate_sankey_diagram<br/>桑基图]
84+
end
85+
86+
Q --> A
87+
A --> B
88+
B -->|医学问答| KB
89+
B -->|医学问答| TS
90+
B -->|图片分析| AI
91+
B -->|诊断分析| COD
92+
B -->|诊断游戏| START
93+
B -->|可视化| KG
94+
B -->|就医咨询| GUIDE
95+
96+
KB --> R[生成回答]
97+
TS --> R
98+
AI --> R
99+
COD --> CONF --> R
100+
START --> ACTION --> R
101+
KG --> R
102+
FLOW --> R
103+
CHART --> R
104+
RADAR --> R
105+
TL --> R
106+
GANTT --> R
107+
QUAD --> R
108+
STATE --> R
109+
SANKEY --> R
110+
IMG --> R
111+
GUIDE --> R
112+
```
113+
114+
---
115+
116+
## 完整工具调用流程图
117+
118+
```mermaid
119+
flowchart LR
120+
subgraph Input["输入"]
121+
U[用户问题]
122+
end
123+
124+
subgraph Process["处理流程"]
125+
U --> Agent[病理学AI助手]
126+
Agent --> Parse{解析意图}
127+
128+
Parse -->|知识查询| Search["双重检索"]
129+
Parse -->|诊断请求| Diag["诊断分析"]
130+
Parse -->|游戏请求| Game["诊断游戏"]
131+
Parse -->|可视化| Viz["图表生成"]
132+
Parse -->|就医咨询| Guide["就医指南"]
133+
134+
Search --> KB[内部知识库]
135+
Search --> Web[外部搜索]
136+
137+
Diag --> CoD[CoD推理链]
138+
CoD --> Eval[置信度评估]
139+
140+
Game --> Start[启动游戏]
141+
Start --> Action[执行动作]
142+
143+
Viz --> Charts[9种图表工具]
144+
end
145+
146+
subgraph Output["输出"]
147+
KB --> Merge[结果融合]
148+
Web --> Merge
149+
Eval --> Merge
150+
Action --> Merge
151+
Charts --> Merge
152+
Guide --> Merge
153+
Merge --> Response[AI回答]
154+
end
155+
```
156+
157+
---
158+
159+
## 诊断游戏流程图
160+
161+
```mermaid
162+
flowchart LR
163+
A[启动游戏] --> B[问诊阶段]
164+
B --> C[体格检查]
165+
C --> D[辅助检查]
166+
D --> E[给出诊断]
167+
E --> F[评分反馈]
168+
```
169+
170+
---
171+
172+
## Chain-of-Diagnosis 流程
173+
174+
```mermaid
175+
flowchart TD
176+
INPUT[输入症状] --> S1[Step1: 症状分析]
177+
S1 --> S2[Step2: 病史关联]
178+
S2 --> S3[Step3: 鉴别诊断]
179+
S3 --> S4[Step4: 检查建议]
180+
S4 --> S5[Step5: 初步结论]
181+
S5 --> EVAL[置信度评估]
182+
EVAL --> OUTPUT[诊断报告]
183+
```
184+
185+
---
186+
187+
## 前端组件调用关系
188+
189+
```mermaid
190+
flowchart TD
191+
subgraph Chat["聊天界面"]
192+
CI[chatInterface.tsx]
193+
MD[markdownRenderer.tsx]
194+
end
195+
196+
subgraph MedViz["医学可视化组件"]
197+
MVP[MedicalVisualizationPanel]
198+
PIG[PathologyImageGallery]
199+
DCC[DiagnosisConfidenceCard]
200+
ST[SourceTag]
201+
end
202+
203+
subgraph Services["服务层"]
204+
CS[conversationService.ts]
205+
end
206+
207+
CI --> MD
208+
MD -->|渲染Mermaid| MVP
209+
MD -->|渲染图片| PIG
210+
MD -->|渲染置信度| DCC
211+
MD -->|渲染来源| ST
212+
MD -->|[btn:xx]按钮| BTN[ClickableOption]
213+
214+
CI --> CS
215+
CS -->|deleteAll| API[后端API]
216+
```
217+
218+
---
219+
220+
## MCP工具注册关系
221+
222+
```mermaid
223+
flowchart TD
224+
subgraph MCP["FastMCP框架"]
225+
LMS[local_mcp_service.py]
226+
end
227+
228+
subgraph Decorator["@local_mcp_service.tool 装饰器"]
229+
D1[医疗诊断工具 x4]
230+
D2[诊断游戏工具 x2]
231+
D3[可视化工具 x9]
232+
end
233+
234+
subgraph Runtime["Nexent Runtime"]
235+
Agent[病理学AI助手]
236+
end
237+
238+
LMS --> D1
239+
LMS --> D2
240+
LMS --> D3
241+
242+
D1 --> Agent
243+
D2 --> Agent
244+
D3 --> Agent
245+
```
246+
247+
---
248+
249+
## 数据流向图
250+
251+
```mermaid
252+
flowchart LR
253+
subgraph Input["用户输入"]
254+
Text[文本问题]
255+
Image[病理图片]
256+
Click[按钮点击]
257+
end
258+
259+
subgraph Process["Agent处理"]
260+
Text --> Agent[病理学AI助手]
261+
Image --> Agent
262+
Click --> Agent
263+
264+
Agent --> Tools[MCP工具]
265+
Tools --> KB[(知识库)]
266+
Tools --> Web((互联网))
267+
Tools --> ImgDB[(图片库)]
268+
end
269+
270+
subgraph Output["输出"]
271+
KB --> Response
272+
Web --> Response
273+
ImgDB --> Response
274+
Response[AI回答] --> Render[前端渲染]
275+
Render --> Markdown[文本/表格]
276+
Render --> Mermaid[图表]
277+
Render --> Images[图片]
278+
Render --> Buttons[交互按钮]
279+
end
280+
```
281+
282+
---
283+
284+
## 文件修改清单
285+
286+
### 后端修改
287+
288+
| 文件 | 类型 | 说明 |
289+
|------|------|------|
290+
| `backend/tool_collection/mcp/local_mcp_service.py` | 新增 | 15个医疗MCP工具 |
291+
292+
### 前端修改
293+
294+
| 文件 | 类型 | 说明 |
295+
|------|------|------|
296+
| `frontend/components/medical-visualization/PathologyImageGallery.tsx` | 新增 | 病理图片画廊 |
297+
| `frontend/components/medical-visualization/DiagnosisConfidenceCard.tsx` | 新增 | 置信度卡片 |
298+
| `frontend/components/medical-visualization/SourceTag.tsx` | 新增 | 来源标签 |
299+
| `frontend/components/medical-visualization/MedicalVisualizationPanel.tsx` | 修改 | 去除硬编码 |
300+
| `frontend/components/ui/markdownRenderer.tsx` | 修改 | [btn:xx]按钮解析 |
301+
| `frontend/app/[locale]/chat/components/chatLeftSidebar.tsx` | 修改 | 清空对话按钮 |
302+
| `frontend/services/conversationService.ts` | 修改 | deleteAll方法 |
303+
304+
### 配置文件
305+
306+
| 文件 | 说明 |
307+
|------|------|
308+
| `docker/update_prompt_btn.sql` | Agent提示词配置 |

0 commit comments

Comments
 (0)