基于LangChain与LangGraph构建医疗问诊智能体:从原理到实战

基于LangChain与LangGraph构建医疗问诊智能体:从原理到实战 最近在尝试将大语言模型(LLM)应用到具体业务场景时,很多开发者都会遇到一个共同的困惑:如何让一个“聪明”的模型,变成一个能稳定、可靠、按流程完成复杂任务的“智能体”(Agent)?尤其是在医疗、金融、客服这类对流程和准确性要求极高的领域,单纯调用模型API往往力不从心。本文将以一个医疗问诊智能体的完整构建过程为例,手把手带你理解 LangChain、LangGraph 和 LangSmith 这三个核心工具如何各司其职,协同工作。你将看到如何从一个简单的想法出发,逐步搭建起一个具备导诊、分诊、多轮对话和工具调用能力的智能系统。无论你是刚接触 Agent 开发的新手,还是希望优化现有流程的开发者,这篇文章都将提供一套可复现的实战方案。1. 背景与核心概念:为什么需要 Agent 框架?在深入代码之前,我们有必要厘清几个关键概念,理解它们解决的问题。1.1 什么是 AI Agent?AI Agent(智能体)不仅仅是一个问答模型。它是一个能够感知环境、自主决策、执行动作以实现特定目标的系统。在医疗问诊场景中,一个合格的 Agent 需要:理解用户意图:区分是咨询感冒症状,还是预约挂号。管理对话状态:记住用户之前提到的病史、过敏史。调用工具:查询药品数据库、检索最新的诊疗指南、计算用药剂量。控制流程:决定下一步是继续追问症状,还是直接给出建议,或是转接给专科模块。单纯使用大模型 API,你需要自己处理对话历史、工具调用逻辑、流程控制,代码会迅速变得复杂且难以维护。1.2 LangChain、LangGraph、LangSmith 分别是什么?你可以把它们想象成建设一座“智能医院”所需的不同专业团队:LangChain:医生的“工具箱”与“标准操作流程”LangChain 是一个用于开发由语言模型驱动的应用程序的框架。它提供了丰富的“组件”,比如:提示模板(Prompt Templates):将用户输入和上下文规范化为模型能更好理解的指令。模型抽象(LLMs):统一接口,方便切换不同的模型(如 OpenAI GPT, Anthropic Claude, 国内的通义千问等)。记忆(Memory):管理对话历史,支持短期(缓冲区)和长期(数据库)记忆。链(Chains):将多个组件(如提示词、模型、解析器)按顺序组合起来,完成一个固定任务。比如“问答链”、“摘要链”。工具(Tools):封装外部功能,如搜索、计算、数据库查询,供模型调用。简单说,LangChain 提供了构建 Agent 所需的所有基础砖块和粘合剂。LangGraph:医院的“就诊流程图”与“调度中心”当任务变得复杂,需要循环、分支、并行或状态管理时,简单的“链”就不够用了。LangGraph 建立在 LangChain 之上,用于构建有状态、多环节的工作流。它用图(Graph)来定义工作流,节点(Node)代表一个步骤(如调用模型、执行工具),边(Edge)代表步骤之间的流转条件。它维护一个状态(State)对象,在整个流程中传递和更新信息(如用户输入、模型回复、工具结果)。它特别适合实现多智能体协作和复杂决策流程。比如,在我们的医疗问诊中,导诊Agent判断病情后,可以将状态传递给呼吸科Agent或皮肤科Agent。LangGraph 负责指挥调度,确保整个问诊流程井然有序,不会跑偏。LangSmith:医院的“质控中心”与“培训部”开发 Agent 过程中,调试和优化非常困难。为什么这次回答好,那次回答差?提示词怎么改?LangSmith 是一个用于调试、测试、评估和监控 LLM 应用程序的平台。跟踪(Tracing):可视化整个链或工作流的执行过程,查看每一步的输入输出。评估(Evaluation):用人工或自动化的方式评估应用表现,量化改进效果。数据管理:管理用于测试和优化的提示词、数据集。LangSmith 帮助开发者洞察系统内部,持续迭代优化,确保智能体的表现稳定可靠。三者关系总结:用 LangChain 造零件,用 LangGraph 组装成能运转的机器,用 LangSmith 来调试和优化这台机器。2. 环境准备与版本说明在开始构建之前,请确保你的开发环境已就绪。本文将使用 Python 作为开发语言。2.1 基础环境操作系统:Windows 10/11, macOS 或 Linux (Ubuntu 20.04+) 均可。Python 版本:建议使用 Python 3.10 或 3.11。某些库对新版本(3.12+)的兼容性可能还在完善中。包管理工具:使用pip进行安装。2.2 创建虚拟环境(强烈推荐)为避免包冲突,建议为项目创建独立的虚拟环境。# 使用 venv (Python 内置) python -m venv med_agent_env # 激活环境 # Windows: med_agent_env\Scripts\activate # macOS/Linux: source med_agent_env/bin/activate2.3 安装核心库激活虚拟环境后,安装必要的 Python 包。我们将安装 LangChain 全家桶,并选用 OpenAI 的模型作为示例(你需要准备自己的 API Key)。你也可以替换为其他兼容的模型。pip install langchain langchain-core langchain-community langgraph langsmith pip install openai # 使用OpenAI API # 可选,用于网页搜索工具示例 pip install duckduckgo-search注意:LangChain 生态更新较快,上述langchain包是一个元包,会安装核心组件。langgraph和langsmith是独立的库。2.4 获取 API 密钥OpenAI:访问 OpenAI Platform 创建 API Key。LangSmith(可选但推荐):访问 LangSmith 注册并创建 API Key。它提供免费的额度,对于开发和调试非常有帮助。将密钥设置为环境变量,这是管理敏感信息的推荐方式。# Windows (PowerShell) $env:OPENAI_API_KEY="your-openai-api-key" $env:LANGCHAIN_API_KEY="your-langsmith-api-key" # 可选 $env:LANGCHAIN_TRACING_V2="true" # 可选,启用追踪 $env:LANGCHAIN_PROJECT="Medical-Agent-Demo" # 可选,设置项目名 # macOS/