欢迎光临
我们一直在努力

基于langchain的智能医疗助手agent

文章目录

  • 项目介绍
  • 完整代码
  • 代码解释
    • 环境导入
    • 专科医生类
    • 医疗代理协调类
    • 主程序入口

特别提醒:唯一需要改动的地方为代码中的api_key,可前往deepseek开放平台获取——
点击前往

项目介绍

这是一个基于大语言模型(LLM)的多学科AI医疗会诊系统,它通过模拟不同科室的医学专家协作,对医疗报告进行综合分析,旨在提供更全面的辅助诊断意见。其核心价值在于将单一AI诊断模型升级为多智能体协作框架,通过集成全科、心内科、内分泌科等多个专业的“AI医生”,能够从不同角度解读复杂的临床指标,并最终生成一份汇总了主要风险、生活建议和就医指导的综合性评估报告。该系统采用了模块化设计,每个MedicalSpecialist类代表一个独立的专业诊断模块,并由一个协调员智能体进行意见整合,这不仅模仿了真实世界中的多学科会诊(MDT)模式,也有效提升了AI辅助诊断的深度与可靠性。 在这里插入图片描述

完整代码

import os
from typing import Dict
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain.chat_models import init_chat_model

os.environ["DEEPSEEK_API_KEY"] = "换成自己的api_key"

class MedicalSpecialist:
def __init__(self, specialty: str, focus_areas: str):
self.specialty = specialty
self.focus_areas = focus_areas
self.llm = init_chat_model(model='deepseek-chat', model_provider="deepseek")

def diagnose(self, report_content: str) > str:
prompt = ChatPromptTemplate.from_messages([
("system",
f"你是一位资深的{self.specialty}专家。你的关注重点是:{self.focus_areas}。请根据提供的医疗报告,从你的专业角度给出诊断建议、潜在问题推测以及进一步检查的建议。"),
("user", "医疗报告内容如下:\\n{report_content}")
])

# 使用 llm.invoke 方式调用模型
chain = prompt | self.llm | StrOutputParser()
return chain.invoke({"report_content": report_content})

class MedicalAgent:
def __init__(self):
self.specialists = [
MedicalSpecialist("全科医生", "整体健康状况评估、各指标间的关联性、初步筛查"),
MedicalSpecialist("心内科医生", "血压、心率、血脂、心电图指标及循环系统风险"),
MedicalSpecialist("内分泌科医生", "血糖、甲状腺功能、代谢指标及激素水平")
]
self.coordinator_llm = init_chat_model(model='deepseek-chat', model_provider="deepseek")

def analyze_report(self, report_content: str) > Dict[str, str]:
diagnoses = {}

print(f"正在启动多学科会诊…")
for specialist in self.specialists:
print(f"正在咨询{specialist.specialty}…")
diagnoses[specialist.specialty] = specialist.diagnose(report_content)

print("正在汇总专家意见…")
summary_prompt = ChatPromptTemplate.from_messages([
("system",
"你是一位医疗会诊协调员。请汇总以下多位专家的诊断意见,给出一份综合性的健康评估报告,包括主要风险点、生活建议和后续就医指导。"),
("user", "专家诊断意见如下:\\n{expert_opinions}\\n\\n原始报告内容:\\n{report_content}")
])

expert_opinions_str = "\\n\\n".join([f"【{s}】: {d}" for s, d in diagnoses.items()])
chain = summary_prompt | self.coordinator_llm | StrOutputParser()

summary = chain.invoke({
"expert_opinions": expert_opinions_str,
"report_content": report_content
})

diagnoses["综合评估"] = summary
return diagnoses

if __name__ == "__main__":
# 示例医疗报告
sample_report = """
患者姓名:张三 性别:男 年龄:45岁
检查日期:2026年1月15日

检查项目结果:
1. 血压:145/95 mmHg (偏高)
2. 空腹血糖:6.8 mmol/L (偏高)
3. 总胆固醇:6.2 mmol/L (偏高)
4. 甘油三酯:2.1 mmol/L (偏高)
5. 心率:88次/分 (正常)
6. 肝功能:ALT 45 U/L (轻度升高), AST 38 U/L (正常)
7. 肾功能:肌酐 85 umol/L (正常)

主诉:近期偶有头晕,易疲劳,饮食较油腻,缺乏运动。
"""

agent = MedicalAgent()
results = agent.analyze_report(sample_report)

print("\\n" + "=" * 50)
print("医疗诊断 Agent 分析结果")
print("=" * 50 + "\\n")

for specialty, diagnosis in results.items():
print(f"### {specialty} ###")
print(diagnosis)
print("-" * 30)

代码解释

环境导入

这段代码是构建基于 LangChain 的 AI 应用的基础设置,主要完成两项关键任务:导入必要的功能库,以及将您的 DeepSeek API 密钥设置为环境变量。这样做是为了避免将敏感信息直接写在代码中,从而提升项目的安全性,并便于在不同环境间迁移。后续即可利用这些配置来初始化大语言模型并构建应用链。

import os
from typing import Dict
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain.chat_models import init_chat_model

# API密钥配置
os.environ["DEEPSEEK_API_KEY"] = "换成自己的api_key"

专科医生类

这是一个基于大语言模型的专科医疗诊断智能体类,它通过模块化设计将AI能力封装为特定医疗领域的“虚拟专家”,实现了专科化的医疗报告分析功能。 该类是构建多学科AI会诊系统的核心组件。通过创建多个MedicalSpecialist实例(如全科、心内科、内分泌科),系统能模拟真实医疗场景中的多专家协作,为患者提供综合诊断建议。其价值在于将通用的AI模型转化为专业受限的领域工具,通过提示词工程确保AI在特定医学领域内安全、有效地发挥作用,为智慧医疗应用提供了可靠的底层技术支持。

class MedicalSpecialist:
def __init__(self, specialty: str, focus_areas: str):
self.specialty = specialty
self.focus_areas = focus_areas
self.llm = init_chat_model(model='deepseek-chat', model_provider="deepseek")

def diagnose(self, report_content: str) > str:
# 专科诊断逻辑
prompt = ChatPromptTemplate.from_messages([
("system", f"你是一位资深的{self.specialty}专家…"),
("user", "医疗报告内容如下:\\n{report_content}")
])
chain = prompt | self.llm | StrOutputParser()
return chain.invoke({"report_content": report_content})

医疗代理协调类

这段代码是多智能体医疗协同诊断系统的核心协调类,它通过模拟真实世界中的多学科会诊(MDT)模式,将多个专科AI医生的诊断意见进行整合,最终生成一份综合性的医疗评估报告。

该类在初始化时创建了一个包含全科、心内科和内分泌科专家的AI医生团队,每个专家专注于特定的医学领域。其核心工作流程由 analyze_report方法实现:首先,它并行地让每位专科AI医生对同一份医疗报告进行独立分析和诊断;然后,利用一个专门的“协调员”大语言模型,将所有专家的初步意见作为上下文,生成一份汇总了关键发现、风险点和建议的综合性诊断报告。这种设计巧妙地将复杂的医疗诊断任务分解,既利用了专科模型的深度,又通过协调员模型保证了最终结论的整体性和可读性,有效提升了AI辅助诊断的系统性和可靠性。

class MedicalAgent:
def __init__(self):
self.specialists = [
MedicalSpecialist("全科医生", "整体健康状况评估…"),
MedicalSpecialist("心内科医生", "血压、心率、血脂…"),
MedicalSpecialist("内分泌科医生", "血糖、甲状腺功能…")
]
self.coordinator_llm = init_chat_model(model='deepseek-chat', model_provider="deepseek")

def analyze_report(self, report_content: str) > Dict[str, str]:
# 协调多专科会诊和汇总逻辑
diagnoses = {}
for specialist in self.specialists:
diagnoses[specialist.specialty] = specialist.diagnose(report_content)

# 汇总专家意见
summary_prompt = ChatPromptTemplate.from_messages([...])
# … 汇总逻辑
return diagnoses

主程序入口

主程序代码,用来启动项目。

if __name__ == "__main__":
# 示例医疗报告
sample_report = """…"""

agent = MedicalAgent()
results = agent.analyze_report(sample_report)

# 结果展示逻辑
print("\\n" + "=" * 50)
print("医疗诊断 Agent 分析结果")
# … 输出格式化逻辑

赞(0)
未经允许不得转载:171主机测评 » 基于langchain的智能医疗助手agent
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址