jjhhjj commited on
Commit
2279dfe
·
verified ·
1 Parent(s): fff9e0f

Upload 3 files

Browse files
Files changed (2) hide show
  1. README.md +20 -346
  2. gitattributes +35 -0
README.md CHANGED
@@ -1,346 +1,20 @@
1
- 临床MDT智能模拟助手
2
-
3
- 一个基于多智能体系统的临床多学科会诊模拟平台,支持多种医学专科智能体协作讨论病例,提供专业的诊断和治疗建议。
4
-
5
- 🏥 项目简介
6
-
7
- 临床MDT智能模拟助手是一个创新的临床决策支持系统,通过模拟真实的多学科会诊(MDT)过程,整合多个医学专科智能体的专业意见,为临床医生提供全面的病例分析和治疗建议。
8
-
9
- 核心特性
10
-
11
- 多专科智能体协作:集成30+医学专科智能体,模拟真实MDT讨论
12
-
13
- • 智能交互式讨论:支持用户实时介入和引导讨论方向
14
-
15
- 专业临床推理:基于循证医学原则提供诊断和治疗建议
16
-
17
- 多种导出格式:支持JSON、Word、HTML等多种结果导出格式
18
-
19
- 用户友好界面:提供命令行和Web两种交互界面
20
-
21
- 🚀 快速开始
22
-
23
- 环境要求
24
-
25
- • Python 3.8+
26
-
27
- • 支持的LLM后端:vLLM、OpenAI、DeepSeek、SiliconFlow、智谱AI等
28
-
29
- 安装步骤
30
-
31
- 1. 克隆项目
32
- git clone <repository-url>
33
- cd clinical-mdt-assistant
34
-
35
-
36
- 2. 安装依赖
37
- pip install -r requirements.txt
38
-
39
-
40
- 3. 配置模型参数
41
- # 创建模型配置文件
42
- python -c "from utils.config import create_default_model_config; create_default_model_config()"
43
-
44
-
45
- 4. 修改配置文件
46
- 编辑 config/model_config.json,配置您的LLM API端点:
47
- {
48
- "model_config": {
49
- "engine": "vllm",
50
- "api_base": "http://your-api-endpoint/v1",
51
- "model_name": "your-model-name"
52
- }
53
- }
54
-
55
-
56
- 5. 启动系统
57
- # 命令行界面
58
- python clinical_cli.py
59
-
60
- # Web界面
61
- streamlit run web_interface.py
62
-
63
-
64
- 📋 系统功能
65
-
66
- 核心功能模块
67
-
68
- 1. 用户认证管理
69
-
70
- • 用户注册、登录、会话管理
71
-
72
- • 权限控制和个性化设置
73
-
74
- • 讨论历史记录管理
75
-
76
- 2. 智能体管理
77
-
78
- • 内置专科智能体:30+医学专科,涵盖内科、外科、医技科等
79
-
80
- • 自定义智能体:支持用户创建个性化智能体
81
-
82
- • 智能体注册表:统一的智能体管理和配置
83
-
84
- 3. 多智能体讨论引擎
85
-
86
- • 轮次式讨论:多轮智能体交互讨论
87
-
88
- • 实时用户介入:支持提问、补充信息、改变焦点等介入方式
89
-
90
- • 逻辑一致性检查:确保讨论过程的逻辑严谨性
91
-
92
- • 决策汇总:自动生成综合诊断和治疗方案
93
-
94
- 4. 数据存储与导出
95
-
96
- • 讨论记录存储:JSON格式存储完整讨论过程
97
-
98
- • 多种导出格式:Word、HTML、JSON、TXT等
99
-
100
- • 数据备份恢复:支持数据备份和恢复功能
101
-
102
- 支持的专科智能体
103
-
104
- 类别 包含专科
105
-
106
- 内科 心内科、肾内科、内分泌科、呼吸科、消化科、血液科、风湿免疫科、感染科等
107
-
108
- 外科 普外科、胸外科、神经外科、骨科、血管外科、泌尿外科、妇产科等
109
-
110
- 医技科 影像科、病理科、放射科、麻醉科等
111
-
112
- 其他 重症医学科、急诊科、儿科、皮肤科、眼科、耳鼻喉科等
113
-
114
- 🛠 使用方法
115
-
116
- 命令行界面使用
117
-
118
- 1. 用户认证
119
- # 启动系统后选择登录或注册
120
- 临床MDT智能模拟助手 - 用户认证
121
- 1. 用户登录
122
- 2. 用户注册
123
- 3. 退出系统
124
-
125
-
126
- 2. 开始新讨论
127
- # 主菜单选择"开始新的讨论"
128
- 步骤1: 选择参与讨论的智能体(可多选)
129
- 步骤2: 输入病历信息(主诉、现病史、辅助检查等)
130
- 步骤3: 输入讨论问题
131
- 步骤4: 配置讨论参数(轮数、用户参与模式等)
132
- 步骤5: 开始自动讨论
133
-
134
-
135
- 3. 讨论过程中的介入
136
- # 在讨论过程中,系统会提示用户介入选项:
137
- 💡💡💡💡 是否介入讨论?
138
- 选项: 1-向智能体提问, 2-向所有提问, 3-补充信息, 4-跳过轮次, 5-终止讨论
139
-
140
-
141
- Web界面使用
142
-
143
- 1. 访问系统
144
- streamlit run web_interface.py
145
- # 在浏览器中访问 http://localhost:8501
146
-
147
-
148
- 2. 主要功能区域
149
- • 控制面板:系统概览和快速操作
150
-
151
- • 智能体管理:选择和管理参与讨论的智能体
152
-
153
- • 病历输入:结构化病历信息输入界面
154
-
155
- • 实时讨论:可视化讨论过程展示
156
-
157
- • 结果分析:多维度的讨论结果分析
158
-
159
- ⚙️ 配置说明
160
-
161
- 模型配置
162
-
163
- 系统支持多种LLM后端,配置示例:
164
- {
165
- "model_config": {
166
- "engine": "vllm",
167
- "api_base": "http://127.0.0.1:8000/v1",
168
- "model_name": "Qwen2-7B-Chat",
169
- "temperature": 0.3,
170
- "max_tokens": 100000,
171
- "timeout": 60
172
- }
173
- }
174
-
175
-
176
- 讨论参数配置
177
-
178
- • default_rounds:默认讨论轮数(1-10)
179
-
180
- • enable_user_intervention:是否启用用户介入
181
-
182
- • auto_save:是否自动保存讨论记录
183
-
184
- • export_format:默认导出格式(json、docx、html等)
185
-
186
- 🏗 系统架构
187
-
188
- 核心模块
189
-
190
-
191
- clinical-mdt-assistant/
192
- ├── auth/ # 认证模块
193
- │ ├── user_manager.py # 用户管理
194
- │ └── session_handler.py # 会话管理
195
- ├── agents/ # 智能体模块
196
- │ ├── base_agent.py # 基础智能体类
197
- │ ├── specialty_agents.py # 专科智能体
198
- │ ├── custom_agent.py # 自定义智能体
199
- │ └── agent_registry.py # 智能体注册表
200
- ├── discussion/ # 讨论引擎
201
- │ ├── discussion_engine.py # 讨论引擎核心
202
- │ └── user_interaction.py # 用户交互管理
203
- ├── storage/ # 数据存储
204
- │ ├── discussion_storage.py # 讨论记录存储
205
- │ └── user_data.py # 用户数据管理
206
- ├── interface/ # 用户界面
207
- │ ├── cli_interface.py # 命令行界面
208
- │ └── web_interface.py # Web界面
209
- ├── utils/ # 工具模块
210
- │ ├── config.py # 配置管理
211
- │ ├── logger.py # 日志管理
212
- │ └── error_handler.py # 错误处理
213
- └── data/ # 数据目录
214
- ├── users/ # 用户数据
215
- ├── discussions/ # 讨论记录
216
- └── exports/ # 导出文件
217
-
218
-
219
- 数据流图
220
-
221
-
222
- 用户输入 → 认证验证 → 智能体选择 → 病历输入 → 多轮讨论 → 结果生成 → 导出存储
223
- ↑ ↓ ↓ ↓ ↓ ↓ ↓
224
- 界面层 ←── 会话管理 ←─ 智能体管理 ←─ 数据验证 ←─ 讨论引擎 ←─ 决策汇总 ←─ 存储管理
225
-
226
-
227
- 🔧 开发指南
228
-
229
- 添加新的专科智能体
230
-
231
- 1. 在智能体注册表中添加配置
232
- # 在agents/agent_registry.py的builtin_agents中添加
233
- "新专科名称": {
234
- "specialty": "新专科名称",
235
- "description": "专科描述",
236
- "prompt": "专业提示词",
237
- "is_builtin": True,
238
- "category": "内科"
239
- }
240
-
241
-
242
- 2. 创建专科智能体类(可选)
243
- from agents.base_agent import BaseAgent
244
-
245
- class NewSpecialtyAgent(BaseAgent):
246
- def __init__(self, args, specialty, agent_name, logger=None):
247
- super().__init__(args, specialty, system_prompt, agent_name, logger)
248
-
249
- def analyze_case(self, medical_record, discussion_history):
250
- # 实现专科特定的分析逻辑
251
- pass
252
-
253
-
254
- 自定义导出格式
255
-
256
- 1. 在DiscussionStorage类中添加导出方法
257
- def export_to_custom_format(self, discussion_data, export_path=None):
258
- # 实现自定义导出逻辑
259
- pass
260
-
261
-
262
- 2. 更新导出选项
263
- # 在clinical_cli.py中更新export_formats
264
- export_formats = ["json", "docx", "html", "custom_format"]
265
-
266
-
267
- 🐛 故障排除
268
-
269
- 常见问题
270
-
271
- 1. 模型连接失败
272
-
273
- 错误:API调用失败
274
- 解决:检查api_base配置,确保LLM服务正常运行
275
-
276
-
277
- 2. 智能体初始化失败
278
-
279
- 错误:专科智能体'xxx'不存在
280
- 解决:检查agent_registry中的配置,确保专科名称正确
281
-
282
-
283
- 3. 讨论过程中断
284
-
285
- 错误:讨论被用户中断
286
- 解决:检查用户介入配置,或重新开始讨论
287
-
288
-
289
- 日志查看
290
-
291
- 系统日志保存在logs/目录下,可通过以下方式查看:
292
- tail -f logs/clinical_system_*.log
293
-
294
-
295
- 📊 性能优化
296
-
297
- 讨论性能优化
298
-
299
- • 调整max_rounds参数控制讨论轮数
300
-
301
- • 使用temperature参数控制回答的创造性
302
-
303
- • 配置timeout参数避免长时间等待
304
-
305
- 内存优化
306
-
307
- • 定期清理临时文件和缓存
308
-
309
- • 使用分页加载历史记录
310
-
311
- • 配置自动备份和清理策略
312
-
313
- 🤝 贡献指南
314
-
315
-
316
- 开发环境设置
317
-
318
- # 创建虚拟环境
319
- python -m venv venv
320
- source venv/bin/activate # Linux/Mac
321
- venv\Scripts\activate # Windows
322
-
323
- # 安装开发依赖
324
- pip install -r requirements-dev.txt
325
-
326
- # 运行测试
327
- python -m pytest tests/
328
-
329
-
330
- 📄 许可证
331
-
332
-
333
-
334
- 🙏 致谢
335
-
336
- 感谢所有为本项目做出贡献的开发者,以及提供医学专业指导的临床专家。
337
-
338
- 📞 联系方式
339
-
340
- • 项目主页:
341
-
342
- • 问题反馈:
343
-
344
- • 邮箱联系:
345
-
346
- 注意:本系统旨在辅助临床决策,不能替代专业医生的诊断和治疗建议。在使用系统生成的建议时,请结合临床实际情况和专业判断。
 
1
+ ---
2
+ title: MEDLA
3
+ emoji: 🚀
4
+ colorFrom: red
5
+ colorTo: red
6
+ sdk: docker
7
+ app_port: 8501
8
+ tags:
9
+ - streamlit
10
+ pinned: false
11
+ short_description: Streamlit template space
12
+ license: mit
13
+ ---
14
+
15
+ # Welcome to Streamlit!
16
+
17
+ Edit `/src/streamlit_app.py` to customize this app to your heart's desire. :heart:
18
+
19
+ If you have any questions, checkout our [documentation](https://docs.streamlit.io) and [community
20
+ forums](https://discuss.streamlit.io).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text