🏥 医疗分诊助理
一个基于人工智能的医疗分诊系统,将用于智能评估的LangChain与用于患者数据检索和预约的MCP(模型上下文协议)工具相结合。
概述
该项目展示了一个生产就绪的工作流程,该流程:
- 从自然语言输入中提取患者信息
- 验证信息的完整性
- 通过MCP工具检索患者病史
- 使用LLM推理评估紧急程度
- 预约(紧急/标准护理)
特性
- LangChain集成:使用ChatOpenAI进行智能提取和紧急性评估
- MCP工具:结构化工具调用患者病史和预约
- 综合录井:每个步骤都记录输入、LLM响应和工具调用
- Gradio用户界面:基于Web的界面,便于交互
- 测试套件:内置测试用例,涵盖各种分流场景
建筑
User Input → LangChain Extraction → Validation → MCP History Tool
↓
Final Summary ← MCP Booking Tool ← LangChain Urgency Assessment组件:
- LangChain:基于LLM的提取和决策
- MCP服务器:提供患者病史和预约工具
- 烟雾剂:用于工具集成的MCP客户端
- 格拉迪奥:用于用户交互的Web UI
先决条件
- Python 3.11+
- LM Studio在本地运行(默认值:http://127.0.0.1:1234/v1)
- 虚拟环境
安装
- 克隆和设置虚拟环境:
cd agent-mcp-play
python3.11 -m venv virtualenv
source virtualenv/bin/activate # On macOS/Linux- 安装依赖项:
pip install -r requirements.txt- 启动LM工作室:
- 运行LM工作室
- 加载兼容的模型(例如devstral-small-2505)
- 确保服务器正在上运行http://127.0.0.1:1234
用法
选项1:Web用户界面(Gradio)
cd src
python ui_gradio.py打开浏览器http://127.0.0.1:7860
输入示例:
- “我有轻微头痛。患者编号为P12345。”
- “严重胸痛,无法呼吸。我的身份证号码是P67890。”
- 高烧103.5华氏度,咳嗽。患者P11111
选项2:运行测试套件
cd src
python langchain_agent.py这将运行9个预定义的测试用例,涵盖各种场景:
- 轻微症状(头痛、胃痛)
- 严重/紧急病例(胸痛、严重出血、中风症状)
- 不同的病史(哮喘、高血压、无记录)
- 缺失信息处理
文件结构
agent-mcp-play/
├── README.md # This file
├── requirements.txt # Python dependencies
├── .gitignore # Git ignore patterns
├── virtualenv/ # Python virtual environment (ignored)
└── src/
├── langchain_agent.py # Main triage agent with LangChain
├── mcp_server_simple.py # MCP server with tools
└── ui_gradio.py # Gradio web interface运作原理
步骤1:提取患者信息(LLM)
使用LangChain解析自然语言并提取:
- 患者ID(格式:P12345)
- 症状描述
步骤2:验证完整性
检查是否存在所需信息。如果缺少,则返回错误消息。
步骤3:获取患者病史(MCP工具)
呼叫 get_patient_history 从数据库/EHR检索医疗记录的工具。
步骤4:评估紧迫性(LLM)
LangChain评估症状+病史以确定:
- 紧急:当天护理(胸痛、呼吸困难、严重出血、中风症状)
- 标准每周24小时(轻度症状,轻伤)
步骤5:预约(MCP工具)
呼叫 book_urgent_care 具有紧急级别的工具,用于安排适当的预约。
患者数据样本
MCP服务器包括测试患者数据:
| 患者ID | 病史 |
|---|---|
| P12345 | 轻度嗜酸性粒细胞增多,无慢性疾病 |
| P67890 | 高血压,既往心脏事件(2020年) |
| P1111 | 哮喘、季节性过敏 |
| P22222 | 健康,无重大病史 |
| 其他 | 首次就诊患者(无记录) |
配置
更改LLM模型
编辑 langchain_agent.py:
llm = ChatOpenAI(
model="your-model-name",
openai_api_base="http://127.0.0.1:1234/v1",
openai_api_key="dummy",
temperature=0.7,
max_tokens=500,
)添加更多紧急规则
修改中的紧急提示 langchain_agent.py:
self.urgency_prompt = ChatPromptTemplate.from_messages([
("system", """Medical triage expert. Determine urgency.
URGENT: chest pain, breathing difficulty...
STANDARD: mild symptoms...
"""),
...
])日志记录
该代理在每个步骤提供全面的日志记录:
- 输入:用户消息,提取的数据
- LLM电话:提示和回应
- 工具调用:函数名称和参数
- 输出:结果和决定
- 总结:最终分诊评估
依赖项
关键包(见 requirements.txt):
mcp==1.25.0-模型上下文协议langchain>=0.1.13-LLM编排langchain-openai==1.1.6-OpenAI集成smolagents[openai]-代理框架smolagents[mcp]-MCP客户端gradio-Web用户界面
故障排除
问题:“与LM Studio的连接被拒绝”
- 解决方案:确保LM Studio正在运行并且服务器已启动
问题:“MCP工具不可用”
- 解决方案:检查一下
mcp_server_simple.py路径正确initialize()
问题:“缺少患者信息”
- 解决方案:在输入中同时提供患者ID(例如P12345)和症状
未来的增强功能
- \[\]与真实的EHR系统集成
- \[\]多语言支持
- \[\]语音输入功能
- \[\]预约日历集成
- \[\]短信/电子邮件通知
- \[\]基于专业的提供商匹配
- \[\]保险验证
许可证
MIT许可证-您可以自由使用和修改您的项目。
贡献
欢迎投稿!请随时提交问题或拉取请求。
______________________________________________________________________
备注:这是一个示范项目。对于生产医疗系统,确保符合HIPAA、数据隐私法规和适当的医疗监督。
