一句话回答:LangChain 是一个用于快速构建 AI 智能体的开源高层框架。到了 1.x 版本,它的重点已经从“把各种链式组件都装进一个大包”收敛为标准化模型接口、工具调用、create_agent 和可插拔中间件;智能体循环实际运行在 LangGraph 之上。它适合需要模型调用工具、保存状态、加入审批和持续评测的应用,但简单问答或单次结构化抽取未必需要它。
LangChain 现在到底是什么?
根据 LangChain 官方的 1.0 说明,LangChain 的当前定位是“更快地构建 AI 智能体”。开发者给智能体配置模型、工具和系统提示词后,运行时会让模型在“调用工具”和“返回最终答案”之间循环,直到得到结果或触发停止条件。这个抽象解决的是多模型、多工具和多步骤任务的通用组织问题,而不是提供一个新的大语言模型。
这也意味着很多旧教程已经过时。早期文章常把 LangChain 解释为 Prompt、Chain、Memory、Retriever 和 Agent 的组件合集;这些概念仍可能存在于生态或兼容包中,但 1.x 主包已经明显缩小命名空间,并把代理开发集中到 langchain.agents。如果正在阅读 0.x 教程,不能直接照抄导入路径和初始化方式。
LangChain、LangGraph、LangSmith 和 langchain-classic 有什么区别?
| 组件 | 主要职责 | 适合场景 |
|---|---|---|
| LangChain | 高层智能体 API、统一模型与工具接口、中间件 | 标准的“模型—工具—回答”循环,希望快速交付 |
| LangGraph | 低层图运行时、状态、检查点、路由和恢复 | 长任务、复杂分支、确定性流程与智能体混合 |
| LangSmith | 追踪、调试、数据集、评测与可观测性平台 | 定位失败链路,比较提示词或模型版本 |
| langchain-classic | 承接从 v1 主包移出的旧链、旧检索等功能 | 迁移遗留项目,不建议把它当新项目默认入口 |
最容易理解的关系是:LangChain 像现成的智能体装配层,LangGraph 像可控的执行引擎,LangSmith负责观察和评测。LangChain 智能体本身就构建在 LangGraph 运行时之上,因此项目可以先用高层接口验证价值,确实需要复杂状态机时再下沉,而不用一开始就手写所有节点。
LangChain 1.x 的核心运行过程
- 接收请求:把用户消息、会话上下文和运行时配置交给智能体。
- 调用模型:模型判断是直接回答,还是生成一个或多个工具调用。
- 执行工具:程序校验工具名和参数,在受控权限内访问数据库、API 或业务系统。
- 写回结果:工具结果加入消息状态,模型继续判断下一步。
- 结束或暂停:返回最终答案,或在敏感操作前暂停等待人工批准。
中间件可以在这些步骤前后插入逻辑,例如记录日志、动态选择模型、限制调用次数、重试失败请求、压缩过长历史、过滤个人信息或在高风险工具前要求审批。官方文档把中间件作为 1.x 的关键扩展机制,而不是要求开发者复制一份完整代理循环再自行修改。
如何安装 LangChain?
官方安装页要求 Python 3.10 或更高版本。核心包与模型提供商集成分开发布,因此只安装 langchain 并不会自动带上每一家模型 SDK。以 OpenAI 集成为例:
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
pip install -U langchain langchain-openai
生产项目应把依赖写入锁文件,先在测试环境升级,再通过固定测试集验证。不要让线上容器每次启动都无条件拉取最新版本,因为次要版本、模型端行为或第三方集成都可能改变结果。
一个最小可运行的 create_agent 示例
下面的示例只提供“查询库存”工具。模型标识使用官方支持的 provider:model 形式;运行前请将它替换为账号当前可用的模型,并通过环境变量设置对应密钥。
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def get_inventory(sku: str) -> str:
"""按 SKU 查询演示库存。"""
demo = {"SKU-100": 12, "SKU-200": 0}
return f"{sku} 当前库存:{demo.get(sku, '未找到')}"
agent = create_agent(
model="openai:gpt-5",
tools=[get_inventory],
system_prompt=(
"你是库存查询助手。只能查询,不得修改库存;"
"找不到商品时明确说明,不要猜测。"
),
)
result = agent.invoke({
"messages": [
{"role": "user", "content": "查询 SKU-100 的库存"}
]
})
print(result["messages"][-1].content)
这段代码能说明框架用法,却还不是生产系统。真实库存工具需要鉴权、参数白名单、超时、审计日志和最小权限;如果要执行扣减库存、退款、发邮件等写操作,还应加入幂等键与人工确认。可进一步阅读本站的AI 智能体与自动化治理指南,理解为什么“能调用工具”不等于“可以直接上线”。
什么时候应该使用 LangChain?
- 同一套业务需要在多个模型提供商之间切换或做路由。
- 模型需要调用多个工具,并根据工具结果继续推理。
- 需要结构化输出、流式事件、短期记忆或可插拔中间件。
- 需要用 LangGraph 的检查点、恢复、人工介入或复杂分支。
- 团队愿意建立追踪、评测和版本管理,而不是只做一次演示。
什么时候不必使用 LangChain?
- 单次模型调用:固定提示词加一次 JSON 输出,直接使用模型官方 SDK 往往更清楚。
- 完全确定的工作流:每一步都能用普通代码表达,没有模型自主选择工具的必要。
- 极端延迟敏感:应先测量框架、追踪和多轮循环带来的额外耗时。
- 团队无法承担升级:如果没有依赖锁定、回归测试和维护负责人,增加抽象层只会扩大故障面。
框架不是项目成熟度的证明。先用最小方案验证任务是否真的需要智能体,再决定引入 LangChain 或直接使用 LangGraph。对于代码仓库级任务,还可以参考本站的Claude Code 使用与安全工作流;对于模型 API 切换,则可参考DeepSeek API 迁移方法。
从 0.x 迁移到 1.x 要检查什么?
- 运行环境:确认 Python 已升级到 3.10+,并建立隔离环境。
- 导入路径:以 v1 迁移文档为准;旧 chains、retrievers、hub 等功能可能需要
langchain-classic。 - 代理入口:把旧的预构建 ReAct 代理迁移思路调整为
langchain.agents.create_agent。 - 提示词和状态:检查系统提示词、动态提示词、自定义状态以及 pre/post model hook 的新表达方式。
- 结构化输出:重新验证 schema、工具策略和提供商原生策略,不能假定旧返回结构不变。
- 流式与节点名:如果前端或监控依赖事件名,必须按照迁移文档逐项回归。
不要为了“升级版本”一次性重写整个系统。更稳妥的做法是保存旧环境、建立可重复测试集,先迁移一个低风险入口,再比较成功率、延迟、Token 消耗和错误类型。
生产环境必须补上的可靠性控制
| 风险 | 最低控制措施 | 验收证据 |
|---|---|---|
| 工具越权 | 独立身份、最小权限、工具和参数白名单 | 权限清单与拒绝测试 |
| 无限循环或费用失控 | 迭代上限、超时、预算和熔断 | 边界测试与费用告警 |
| 高风险写操作 | 人工批准、幂等键、预览与回滚 | 审批记录和回滚演练 |
| 服务中断 | 检查点、持久化、重试和恢复 | 故障注入后可续跑 |
| 质量漂移 | 版本化测试集、追踪、离线与在线评测 | 发布前后对比报告 |
| 敏感数据泄露 | 数据分级、脱敏、日志最小化和保留期 | 审计日志与清理策略 |
LangChain 的 Human-in-the-loop 中间件支持对工具调用执行批准、编辑或拒绝,但官方也明确要求配合持久化检查点。内存保存器适合演示,不应被当作生产持久化方案。涉及组织级智能体治理时,可结合Microsoft Agent 365 权限与治理指南中的身份、负责人和持续审查思路。
LangChain 常见问题
LangChain 是模型吗?
不是。它是应用框架,通过统一接口连接 OpenAI、Anthropic 等模型提供商,并组织工具、状态和智能体循环。
LangChain 和 RAG 是一回事吗?
不是。RAG 是先检索外部资料再生成答案的应用模式;LangChain 可以用于组织检索、模型和工具,但也可以构建完全不含 RAG 的智能体。
用了 LangChain 就必须直接写 LangGraph 吗?
不必。LangChain 的 create_agent 已经运行在 LangGraph 上。只有当默认循环无法表达复杂分支、长任务或精细状态控制时,才需要直接使用 LangGraph。
langchain-classic 适合新项目吗?
它主要为旧功能和迁移兼容服务。新项目应优先使用 v1 主包的精简接口,只有明确依赖旧链或旧检索组件时再引入,并记录退出计划。
官方资料与复查日期
- LangChain 安装文档
- LangChain Agents 文档
- LangChain v1 迁移指南
- Middleware 概览
- Human-in-the-loop 文档
- LangGraph 持久化文档
- LangChain 与 LangGraph 1.0 发布说明
资料复核日期:2026 年 7 月 15 日。LangChain 生态更新较快,复制示例前应再次查看官方安装、迁移和安全文档,并以项目锁定的依赖版本为准。