LangChain 入门与实践
这篇文档的目标不是把 LangChain 讲成一个“大而全”的框架百科,而是从工程视角回答几个更实际的问题:
LangChain 到底是什么?它适合当前处在哪个阶段?它和 LangGraph、LangSmith 分别是什么关系?什么时候该直接上 LangChain,什么时候自己手写更合适?如果要快速跑一个最小 agent,应该怎么开始?它和本专题里已经有的章节,应该怎么对照着看?
本文内容以 LangChain 官方文档为主,尤其参考:
- LangChain overview
- LangGraph overview
- LangSmith docs
1. LangChain 是什么
先说一句最重要的话:
LangChain 不是模型,也不是“自动帮你做完 AI Agent”的黑盒。
按照官方文档现在的表述,LangChain 是一个 open source framework,核心定位是:
- 提供
prebuilt agent architecture - 提供统一的
model interface - 提供大量
tool / model integrations - 让你能更快搭起可运行的 agent 或 LLM application
如果用更工程化的话来翻译,它做的事情大致是:
- 帮你把不同模型厂商的调用方式统一起来。
- 帮你把消息、工具、结构化输出、流式输出等常见能力组织成较一致的接口。
- 帮你减少“自己反复写 agent loop、tool registration、message plumbing”的重复劳动。
- 在需要的时候,往下可以衔接 LangGraph 的编排能力,往外可以接 LangSmith 的调试、追踪和评测能力。
所以 LangChain 适合被理解成:
一个偏应用层、偏 agent 开发体验的框架层。
它不是最低层,也不是最高层,更不是唯一正确答案。它的价值主要在于:
起步快抽象适中可先简单,后续再逐步加复杂度
1.1 官方文档强调的几个核心收益
根据官方 overview,LangChain 现在重点强调的能力主要有:
Standard model interface:不同模型提供商接口差异很大,LangChain 帮你统一交互方式,降低切换成本。Easy to use, highly flexible agent:可以很快写出一个最小 agent,同时又保留一定灵活性。Built on top of LangGraph:LangChain 的 agents 建在 LangGraph 之上,因此天然可以接上更底层的执行能力。Debug with LangSmith:方便接入 tracing、debugging、evaluation。
如果只看一句总结,可以记成:
LangChain 解决的是“更快把 agent 应用搭起来”这件事。
2. LangChain 适合什么阶段
很多人第一次接触 Agent 框架时,真正的问题不是“LangChain 好不好”,而是:
我现在这个阶段,是否已经适合用它?
我更建议按下面三个阶段来判断。
2.1 阶段一:刚理解模型、Prompt、工具调用
如果还在学习这些基础:
- prompt 是怎么影响输出的
- messages 是怎么组织的
- tool calling 的输入输出长什么样
- 一个最小 loop 是怎么跑起来的
这时 可以用 LangChain,但不要过度依赖它的抽象。
更具体地说:
- 可以用 LangChain 快速搭 demo
- 但同时最好知道底层到底发了什么消息、工具 schema 长什么样、返回结果怎么进入下一轮上下文
这一阶段更稳妥的做法,不是“完全不用框架”,也不是“只会调框架 API”,而是:
把 LangChain 当作一个帮助你减少样板代码的练习平台。
2.2 阶段二:开始做自己的第一个可用 agent
如果已经开始进入这些需求:
- 接一个或多个工具
- 做多轮对话
- 想要结构化输出
- 想加简单 memory
- 想把代码做成最小可运行项目
这通常就是 LangChain 非常合适的阶段。
因为这时候你最需要的不是“极致底层控制”,而是:
- 尽快 把系统搭起来
- 把模型、工具、消息、状态这些核心部件串起来
- 保持代码可读、可改、可调试
LangChain 的价值,会在这一阶段最明显。
2.3 阶段三:进入更复杂的 agent 工程化
当你开始需要这些能力时:
- 更长生命周期的状态流转
- 更复杂的多步编排
- deterministic workflow 和 agentic workflow 混合
- human-in-the-loop
- durable execution
- 更细颗粒度的节点控制
这时就要开始考虑:
- 继续用 LangChain agent 抽象是否够用
- 是否要下沉到 LangGraph
- 是否要把 observability、evaluation、deployment 单独体系化
这并不代表 LangChain 失效了,而是说明:
这通常说明系统正在从“快速搭应用”进入“精细编排系统”阶段。
官方文档也明确给出这个建议:
- 如果是刚开始做 agent,或希望用更高层抽象,优先用
LangChain agents - 如果需要更高级的、低层次的编排能力,再考虑
LangGraph
3. LangChain、LangGraph、LangSmith 的关系
这三个名字经常一起出现,但它们解决的问题并不相同。
最简单的理解方式是:
LangChain:偏开发框架,负责更快构建 agent / LLM 应用LangGraph:偏底层编排运行时,负责复杂、长时、可控的 agent orchestrationLangSmith:偏观测、评测、调试、部署平台,负责把系统从“能跑”推进到“可看、可测、可上线”
3.1 LangChain 和 LangGraph 的关系
官方文档里有两个非常关键的点:
LangChain agents are built on top of LangGraphYou do not need to know LangGraph for basic LangChain agent usage
把这两句话翻译成工程语言就是:
- LangChain 并不是和 LangGraph 平行对立的替代品
- LangChain 的 agent 能力,本身就是构建在 LangGraph 提供的底层能力之上的
- 但你在做基础 agent 时,不需要先把 LangGraph 学完再开始
可以把它们理解成:
LangChain给你高层、开箱更快的开发入口LangGraph给你低层、可控性更强的编排与运行能力
3.2 LangGraph 更适合什么
根据官方 LangGraph overview,LangGraph 更强调这些点:
durable executionhuman-in-the-loopmemorystreamingproduction-ready deployment
并且官方明确说:LangGraph 是一个 very low-level、专注于 agent orchestration 的框架。
因此:
- 如果只是要一个最小工具型 agent,直接从 LangChain 起步通常更省力
- 如果已经开始需要“图式状态流转、节点级控制、长流程恢复、复杂状态管理”,LangGraph 会更对口
3.3 LangSmith 更适合什么
LangSmith 官方现在的定位很清楚:它是一个 framework-agnostic platform,也就是:
它不是只服务 LangChain,也不是必须和 LangChain 绑定。
它主要做这些事:
Trace requestsEvaluate outputsTest promptsManage deployments
因此:
- 可以用 LangChain + LangSmith
- 也可以用手写 agent + LangSmith
- 也可以用其他 agent stack + LangSmith
所以三者关系最稳妥的理解应该是:
LangChain:帮你搭LangGraph:帮你编排和控制LangSmith:帮你观察、评测、部署