医疗分诊助手

一个AI驱动的医疗分诊系统,结合LangChain进行智能评估和MCP工具进行患者数据检索和预约。

  • by AnshuOnGit
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 AnshuOnGit/agents-mcp-play

使用说明

🏥 医疗分诊助理

一个基于人工智能的医疗分诊系统,将用于智能评估的LangChain与用于患者数据检索和预约的MCP(模型上下文协议)工具相结合。

概述

该项目展示了一个生产就绪的工作流程,该流程:

  1. 从自然语言输入中提取患者信息
  2. 验证信息的完整性
  3. 通过MCP工具检索患者病史
  4. 使用LLM推理评估紧急程度
  5. 预约(紧急/标准护理)

特性

  • 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)
  • 虚拟环境

安装

  1. 克隆和设置虚拟环境:
cd agent-mcp-play
python3.11 -m venv virtualenv
source virtualenv/bin/activate  # On macOS/Linux
  1. 安装依赖项:
pip install -r requirements.txt
  1. 启动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、数据隐私法规和适当的医疗监督。