跳到正文

LangChain:框架概述

梳理 LangChain 生态、包结构与开发环境,比较 Prompt、Agent、RAG 和微调的适用场景。

23 分钟阅读

LangChain 为模型接入、工具调用和智能体开发提供统一抽象。本章介绍其生态组成、包结构与开发环境,并比较 Prompt、Agent、RAG 和微调的适用场景。

适用版本:langchain==1.2.12、langchain-core==1.2.18、langgraph==1.1.2。

1. 为什么需要 LangChain

1.1 从“生成回答”到“完成任务”

传统应用由开发者预先编排主要流程;大模型应用可以让模型理解自然语言,再选择工具、查询资料并组织结果。框架负责连接模型与应用资源,模型负责生成与决策,具体动作仍由程序或外部系统执行。

单一模型有三个主要局限:

局限 实际表现 应用层的补充能力
知识主要来自训练数据 不知道企业私有文档、近期订单或最新政策 检索、数据库查询、RAG
不能仅靠生成文本直接操作外部系统 说出“已订票”不代表真的完成订票 工具调用、API 与执行反馈
单次请求不会自动携带应用历史 下一次调用可能不知道上一轮说过什么 消息历史、State、检查点与长期存储

LangChain 为这些能力提供统一抽象和集成,帮助减少重复的连接与编排代码。框架不会自动消除幻觉,也不会替代业务校验与数据质量管理。

1.2 典型应用与岗位分工

  • 知识问答与客服: 检索课程、制度或产品文档,再基于证据回答。
  • 任务型智能体: 根据任务调用搜索、计算、订单或数据库工具。
  • 多轮对话: 保存会话上下文,按需加载用户偏好。
  • 多模态应用: 结合支持图像、音频等输入的模型与专用工具。
  • 内容与结构化生成: 自动生成报告、提取字段、分类和路由。

大模型技术体系涵盖算力基础设施、数据开发、模型研发与优化、微调算法,以及模型与 Agent 应用开发。本系列聚焦应用开发:将模型能力接入业务系统,并围绕实际任务构建可用的应用。

2. 版本演进与包结构

2.1 抓住演进主线

LangChain 从早期的提示词模板与链式组合,发展到工具、检索和智能体,再形成 LangGraph 运行时、LangSmith 观测以及 Deep Agents 等生态能力。本系列以 1.2 系列接口为主,重点介绍 create_agent、消息、工具、中间件与持久化。

技术维度 早期常见写法 1.2 系列重点
智能体入口 initialize_agent、AgentExecutor 等 langchain.agents.create_agent
编排 链与各类专用 Agent 工厂 基于 LangGraph 的统一 Agent 循环
运行扩展 回调、专用封装、定制逻辑 生命周期中间件
输出处理 提示词配合解析器 按模型能力选择结构化输出、标准内容块
旧功能兼容 原有命名空间 按需查 langchain-classic 与迁移文档

工具的 Pydantic Schema、结构化输出和异步调用在早期版本中已经存在。理解版本演进时,应关注入口、组织方式与推荐实践的变化;迁移代码前需核对具体接口和包版本。

2.2 包名与职责

安装包 常见导入路径 职责
langchain langchain.agents、langchain.chat_models 高层 Agent、统一模型初始化等
langchain-core langchain_core Runnable、消息、提示词、工具等核心抽象
langchain-community langchain_community 社区维护的模型、加载器等集成
langchain-openai 等伙伴包 langchain_openai 等 特定厂商的独立集成
langgraph langgraph 状态图、运行编排、检查点和 Store 抽象
langchain-classic langchain_classic 部分旧链与旧版能力
langchain-text-splitters langchain_text_splitters 文本切分组件

容易混淆: langchain-openai、langchain-anthropic 是独立伙伴包,不属于 langchain-community 包内部。安装包名常用连字符,Python 导入名常用下划线。

3. 四大生态组件

3.1 LangChain 生态概览

“LangChain”在学习资料中有两种含义:既可以指 LangChain 开发框架本身,也可以泛指围绕智能体开发形成的 LangChain 技术生态。

这套生态覆盖从技术验证、应用构建到运行监控与质量评估的过程。四个核心组成部分如下:

组成部分 核心定位 主要解决的问题 关键词
LangChain 模型、工具与智能体开发框架 如何接入模型、组合能力并快速构建应用? 统一接口、模块化、集成
LangGraph 有状态工作流的编排与运行时 多个步骤如何流转,如何维护执行状态? 节点、边、状态、分支、循环
Deep Agents 面向复杂任务的智能体执行框架(Agent Harness) 如何让智能体规划任务、管理文件并委派子任务? 规划、文件系统、子智能体、记忆
LangSmith 调用追踪、调试与评测平台 智能体运行过程是否正常,结果质量如何? 全链路追踪、调试、评测、协作

3.2 LangChain:智能体开发的基础能力

LangChain 为开发者提供模型调用、工具与中间件集成、智能体构建等能力,帮助快速搭建基于大语言模型(LLM)的应用。

3.2.1 统一模型接口

不同模型服务或运行平台,例如 OpenAI、Anthropic、Ollama,具有不同的接口形式。LangChain 通过统一的模型抽象,减少应用直接适配不同接口的工作量。

学习重点:把注意力更多放在应用逻辑上,同时保留对具体模型能力和配置差异的理解。

3.2.2 模块化设计

模型、消息、工具、智能体和中间件分别承担不同职责:

组件 含义 作用
Model / LLM 模型 理解输入、生成回复,支持智能体决策
Message 消息 组织用户、模型与工具之间交换的信息
Tool 工具 将搜索、订票、数据库查询等外部能力提供给智能体
Agent 智能体 围绕目标组织模型与工具的调用
Middleware 中间件 在运行过程中加入自定义处理逻辑

这些组件可以组合和扩展,不必为每种应用从头实现所有基础功能。

3.2.3 丰富的集成生态

LangChain 提供模型、数据源、API 和中间件等集成,方便将外部能力接入应用。典型场景包括搜索、订票和数据库查询。

适用思路: 当目标是快速构建智能体,或主要需求是模型接入、工具调用与常规智能体逻辑时,可以从 LangChain 入手。

3.3 LangGraph:复杂工作流的编排与运行时

当任务扩展为多步骤、带分支或循环、需要共享上下文的工作流时,就需要更明确地管理执行过程。

LangGraph 的核心思想是:将工作流表示为一张有向图,通过节点、边和状态描述任务如何执行。

3.3.1 三个核心概念

概念 含义 理解方式
Node(节点) 执行某项功能或计算的单元 这一步做什么
Edge(边) 节点之间的执行路径;条件边用于根据条件选择后续路径 下一步去哪里
State(状态) 工作流各步骤共享和更新的上下文 当前已知什么、完成了什么

状态可以承载任务信息和中间结果;需要在中断或后续调用中恢复时,还要配置相应的持久化机制。

3.3.2 能解决什么问题

  • 多步骤执行: 将任务拆成明确的处理节点。
  • 条件分支: 根据当前状态或执行结果选择后续路径。
  • 循环与反馈: 根据检查结果返回前面的步骤继续处理。
  • 状态维护: 在不同步骤之间传递并更新任务上下文。
  • 多智能体协作: 编排不同智能体之间的分工和信息交换。

图结构让流程更明确,也便于控制和观察执行过程。

3.3.3 与 LangChain 的职责区别

可以从能力抽象和执行流程两个角度区分:

  • LangChain:有什么能力? 关注模型、工具、消息等抽象及集成。
  • LangGraph:流程怎么运行? 关注执行路径、循环、分支和状态维护。

适用思路: 当应用需要精细控制工作流,或者需要组合固定流程与智能体决策时,可以直接使用 LangGraph。

3.4 Deep Agents:面向复杂任务的智能体执行框架

Deep Agents 的定位是 Agent Harness(智能体执行框架):在 LangChain 和 LangGraph 的基础上,提供规划、文件管理、子智能体等较完整的能力组合,减少开发者自行搭建复杂智能体控制逻辑的工作。

3.4.1 核心能力

能力 主要作用
显式规划 生成多步骤任务计划,并在执行中调整计划
虚拟文件系统 保存、组织和访问中间结果与知识材料
子智能体 将任务拆分并委派给不同智能体协作完成
长期记忆支持 配合存储机制,让信息可以在后续对话中复用
可扩展中间件 加入安全审计、性能监控或自定义业务逻辑

其中,“支持长期记忆”需要结合实际存储配置理解,不能直接等同于所有信息都会自动跨会话永久保存。

3.4.2 适用思路

如果任务需要规划多个步骤、维护较多中间材料,或者委派给多个专业子智能体处理,可以考虑 Deep Agents 提供的现成能力。

例如,调研并撰写报告可以拆成制定计划、搜集材料、分工分析、保存中间结果、汇总成文等步骤。

3.5 LangSmith:让运行过程可追踪、结果可评估

智能体系统复杂后,仅靠日志和 print 不容易看清完整的执行过程。LangSmith 用于追踪、记录和分析调用链路,帮助开发者理解系统行为并评估质量。

3.5.1 四个核心目标

目标 具体内容
全链路追踪 查看模型调用、提示词输入、结果输出和工具使用等过程
调试与优化 定位异常行为,分析性能瓶颈
评测与质量控制 通过人工和自动化评测,衡量智能体表现
团队协作 共享测试集与调用记录,方便共同分析问题

LangSmith 贯穿开发与运行过程,可以与上述框架配合使用。它的作用是帮助回答:系统执行了哪些步骤、哪里出了问题、调整之后效果是否更好。

3.6 四者如何协作

3.6.1 按职责理解

按职责划分,LangChain 提供基础能力,LangGraph 负责运行编排,Deep Agents 提供更高层的智能体能力组合,LangSmith 则提供监控与评估。

这是一种帮助理解职责的划分。实际开发中,它们可以协同使用,不必把选择理解为只能四选一。

3.6.2 按实现关系理解

高层智能体实现与底层运行时之间的关系如下:

  • Deep Agents 构建于 LangChain Agents,提供规划、文件管理和子智能体等能力。
  • LangChain Agents 运行于 LangGraph,提供较高层的智能体开发接口。
  • LangGraph 负责工作流编排与运行时支持。
  • LangSmith 可以对上述框架构建的应用进行追踪、调试与评测。

LangGraph 也可以独立使用。 “LangChain 提供基础能力”描述的是开发职责,不代表 LangGraph 在代码依赖上必须建立在 LangChain 之上。

3.6.3 需求与选型对照

当前主要需求 可以优先考虑 原因
接入模型、组合工具、快速构建智能体 LangChain 提供统一抽象与常用智能体开发能力
精细控制分支、循环、状态和复杂工作流 LangGraph 可以显式定义和控制执行过程
使用现成的规划、文件管理与子智能体能力 Deep Agents 提供面向复杂任务的能力组合
追踪执行、排查异常、比较输出质量 LangSmith 提供观测与评测支持,可与上述方案组合

建议的学习路径是:先理解 LangChain 的基础能力,再学习 LangGraph 的编排思想,随后认识 Deep Agents 的高级能力,并用 LangSmith 观察和评估运行效果。这是学习路径,实际项目可以按需求直接选择合适的入口。

4. 开发前的准备

4.1 前置知识

需要掌握 Python 的函数与参数、类、类型注解、装饰器、容器、JSON、异常处理、包管理和基础异步编程;理解 LLM、Token、Prompt、Embedding、API Key 的含义。

4.2 环境选择

工具 适用情形 边界
Conda 科学计算、本地模型、混合 Python 与底层库的环境 用独立环境隔离项目,避免随意混装依赖
uv Python 应用依赖、解释器与项目管理 不替代通用的系统依赖管理
venv + pip 轻量学习项目、已有 Python 解释器 venv 本身不下载新的解释器

LangChain 1.x 要求 Python 3.10 及以上,具体环境还需满足所用集成包的要求。建议为项目创建独立环境,并统一锁定依赖版本,避免不同章节或模块使用互不兼容的接口。

以下示例使用 Conda 和 Python 3.13.12 创建隔离环境,并安装本系列采用的核心依赖:

Terminal window
conda create -n langchain-demo python=3.13.12
conda activate langchain-demo
python -m pip install "langchain==1.2.12" "langchain-core==1.2.18" "langgraph==1.1.2"
python -c "import langchain; print(langchain.__version__)"

在 IDE 中选择同一个环境的解释器。命令行安装成功而 IDE 报导入错误时,先比较解释器路径。模型集成、RAG、数据库和文档解析所需的额外依赖,应按对应章节与实际环境安装。

5. Prompt、Agent、RAG 与微调如何选择

5.1 RAG:补充可检索的外部知识

RAG 是 Retrieval-Augmented Generation,即检索增强生成。离线把文档解析、切分并建立索引;在线将问题用于检索,把相关片段放进提示词,再生成有依据的回答。

关键难点是文档解析、合理切分、检索与重排序。重排器可以在初步召回的候选中重新排序,提高最终上下文的相关性,但无法找回第一阶段根本没召回的材料,也会增加延迟与成本。RAG 能减少部分事实错误,效果仍取决于资料与检索质量。

5.2 Agent:围绕目标选择行动

可以从以下能力组合理解智能体:

Agent ≈ LLM + Planning + Tools + Memory + Action

这是能力划分,不是所有实现都必须同时包含五个独立模块:

  • LLM: 理解输入,决定下一步。
  • Planning: 拆解任务,并根据反馈调整步骤。
  • Tools: 暴露搜索、查询、计算等可调用能力。
  • Memory: 提供任务状态、历史和跨会话资料。
  • Action: 实际执行决定,并取得可观察的结果。

例如“规划旅行并查询沿途酒店”:模型负责理解偏好与规划,工具查天气和酒店,状态保存已确定的路线,工具执行结果再影响后续选择。Function Calling 是表达工具调用的机制;工具执行和整个任务循环由应用或 Agent 运行时完成。

5.3 四种路线的对照

路线 主要解决的问题 是否修改模型参数 典型场景
Prompt 把任务、角色、约束和示例说清楚 否 改写、摘要、已有知识问答
Agent + Function Calling 需要外部能力或动态多步执行 否 查订单、算费用、任务自动化
RAG 缺少最新或私有知识,需要来源依据 否 企业制度、课程与产品知识库
Fine-tuning 稳定改善特定任务行为、格式或风格 是 有高质量数据且评测显示确有收益的专门任务

推荐顺序是先准备测试问题,用提示词与现有模型建立基线,再判断缺的是知识、工具还是特定任务能力。知识缺口考虑 RAG;需要对接系统考虑工具;微调要结合数据量、效果、成本再评估。这些方案可组合使用,不是互斥选项。

区分: 模型权重里的知识、Agent 的短期状态、跨会话长期存储不是同一个“记忆”。增大上下文窗口也不会让模型自动拥有永久记忆。

6. 本章要点

  • LangChain 连接能力,LangGraph 控制流程,Deep Agents 提供规划与任务委派组合,LangSmith 追踪和评估。
  • 模型生成“调用哪个工具、传什么参数”,程序负责执行工具。
  • 缺知识先考虑检索;缺行动能力先考虑工具;行为与风格适配再评估微调。
  • 先查当前安装版本和导入路径,再套用示例;不要混用 0.x 与 1.x 的入口。
  • 运行成功只是第一步,还要评估结果、耗时、成本与错误。

思考题

  1. 为什么单次 model.invoke() 不会自然记住上一轮?
  2. RAG 与微调有什么区别?
  3. LangGraph 能否独立使用?
  4. State 与长期 Store 分别保存什么?

7. 参考资料

资料 链接
LangChain 官网 langchain.com
GitHub 组织 langchain-ai
中文文档 LangChain 中文概览
官方英文文档 LangChain Overview
Python API 参考 LangChain Python Reference
Deep Agents 概览 Deep Agents Overview
LangGraph 概览 LangGraph Overview

你可能还想看