LangChain 教程 01|概述:AI 应用开发的新范式
📖 本篇导读:这是 LangChain 系列教程的第 1 篇。如果你是 AI 开发新手,想快速了解 LangChain 能做什么、为什么选择它,这篇文章就是为你准备的。读完预计需要 5 分钟。
简单来说
LangChain 是一个"开箱即用"的 AI 应用开发框架,让你用 10 行代码就能创建一个"会思考、会用工具"的智能代理(Agent)。
它解决了传统 AI 开发的三大痛点:模型切换困难、工具集成复杂、Agent 架构难以构建。
🎯 本节目标
读完本节,你将能够回答这些问题:
- ❓ LangChain 到底是什么?它和普通的 LLM SDK 有什么区别?
- ❓ LangChain、LangGraph、Deep Agents 三者的关系和选择标准是什么?
- ❓ 为什么说 LangChain 是"开箱即用"的?10 行代码能实现什么?
- ❓ LangChain 的核心优势有哪些?适合哪些场景?
核心痛点与解决方案
痛点:AI 应用开发的三大难题
| 痛点 | 传统做法 | 有多痛苦 |
|---|---|---|
| 模型切换困难 | 每个模型提供商都有不同的 API 和参数 | 想换模型?重写一半代码 |
| 工具集成复杂 | 手动调用 API,写一堆 if-else 串联 | 代码像面条一样难维护 |
| Agent 架构难 | 自己设计推理循环、状态管理、错误处理 | 从零开始,累成狗 |
举个例子: 你想做一个能查天气、查股票、发邮件的 AI 助手。
传统做法:
1. 集成 OpenAI API
2. 集成天气 API
3. 集成股票 API
4. 集成邮件 API
5. 写推理逻辑:用户问什么就调用什么工具
6. 写错误处理:API 调用失败怎么办
7. 写状态管理:记住对话历史
8. 想换 Anthropic 模型?重写第一步
解决:LangChain 一键搞定
import * as z from "zod";
import { createAgent, tool } from "langchain";
// 定义天气工具
const getWeather = tool(
({ city }) => `It's always sunny in ${city}!`,
{
name: "get_weather",
description: "获取指定城市的天气",
schema: z.object({ city: z.string() }),
},
);
// 10 行代码创建 Agent
const agent = createAgent({
model: "claude-sonnet-4-5-20250929",
tools: [getWeather],
});
// 调用
const result = await agent.invoke({
messages: [{ role: "user", content: "北京天气怎么样?" }]
});
console.log(result.messages.at(-1)?.content);
效果对比:
| 指标 | 传统做法 | LangChain |
|---|---|---|
| 代码量 | 100+ 行 | 10+ 行 |
| 模型切换 | 重写集成 | 改一行字符串 |
| 工具调用 | 手动串联 | 自动推理 |
| 错误处理 | 自己写 | 内置支持 |
| 状态管理 | 自己做 | 开箱即用 |
生活化类比:AI 应用的"工具箱 + 管家"
| 概念 | 类比 | 说明 |
|---|---|---|
| LangChain | 智能家居控制系统 | 统一管理各种设备(模型和工具),让它们协同工作 |
| LangGraph | 底层电路和逻辑 | 更底层,更灵活,适合定制复杂场景 |
| Deep Agents | 精装智能家居 | 预装了所有高级功能,开箱即用 |
| Agent | 智能管家 | 会思考、会用工具、能自己完成任务 |
| Tool | 工具 | 管家能用的各种工具:查天气、订机票等 |
| Model | 管家的大脑 | 负责思考和决策 |
三者关系图解
┌─────────────────────────────────────────────┐
│ │
│ 📦 Deep Agents │
│ ("精装房":开箱即用,功能丰富) │
│ ↓ 基于 │
│ │
│ 🔧 LangChain │
│ ("标准装修":框架完整,灵活配置) │
│ ↓ 构建在 │
│ │
│ 🛠️ LangGraph │
│ ("毛坯房":底层框架,高度定制) │
│ │
└─────────────────────────────────────────────┘
核心优势
1. 标准模型接口
解决的问题: 不同模型提供商(OpenAI、Anthropic、Google)的 API 格式不同,切换成本高。
LangChain 的方案: 统一的模型接口,一行代码切换模型。
// OpenAI
const agent1 = createAgent({ model: "openai:gpt-4.1" });
// Anthropic
const agent2 = createAgent({ model: "anthropic:claude-3.5-sonnet" });
// Google
const agent3 = createAgent({ model: "google:gemini-1.5-pro" });
💡 人话解读:就像手机充电器的 USB-C 接口,不管哪个品牌的手机都能充,模型切换再也不用重写代码了。
2. 易于使用,高度灵活的 Agent
解决的问题: Agent 架构复杂,从零构建需要设计推理循环、状态管理等。
LangChain 的方案: 预构建的 Agent 架构,10 行代码创建一个会思考的 Agent。
const agent = createAgent({
model: "gpt-4.1",
tools: [weatherTool, searchTool],
systemPrompt: "你是一个乐于助人的助手",
});
💡 人话解读:就像买了一个组装好的机器人,你只需要告诉它做什么,它自己会想办法完成。
3. 构建在 LangGraph 之上
解决的问题: Agent 执行不稳定,容易中断,缺少持久化。
LangChain 的方案: 基于 LangGraph 的持久执行、流式传输、人机交互支持。
| LangGraph 特性 | 带来的好处 |
|---|---|
| 持久执行 | 任务中断后能续跑,不会丢失进度 |
| 流式传输 | 实时显示执行过程,用户体验更好 |
| 人机交互 | 复杂决策时可以让人类介入 |
| 状态持久化 | 跨会话记忆,不会"健忘" |
💡 人话解读:就像给机器人装了一个"黑匣子",记录所有行动,就算没电了重启后也能接着干。
4. LangSmith 调试工具
解决的问题: Agent 行为难以理解,调试困难。
LangChain 的方案: 可视化工具,跟踪执行路径、捕获状态转换、提供详细指标。
| LangSmith 功能 | 作用 |
|---|---|
| 执行追踪 | 看到每一步的思考和行动 |
| 状态可视化 | 直观看到状态变化 |
| 性能分析 | 找出瓶颈,优化执行 |
| 错误定位 | 快速找到失败原因 |
💡 人话解读:就像给机器人装了一个监控摄像头,它的每一个动作、每一个想法都能被记录和分析。
快速创建:10 行代码的奇迹
完整示例:天气查询 Agent
import * as z from "zod";
import { createAgent, tool } from "langchain";
// 1. 定义天气工具
const getWeather = tool(
({ city }) => `It's always sunny in ${city}!`,
{
name: "get_weather",
description: "获取指定城市的天气",
schema: z.object({ city: z.string() }),
},
);
// 2. 创建 Agent
const agent = createAgent({
model: "claude-sonnet-4-5-20250929",
tools: [getWeather],
});
// 3. 调用 Agent
const result = await agent.invoke({
messages: [{ role: "user", content: "What's the weather in Tokyo?" }]
});
// 4. 查看结果
console.log(result.messages.at(-1)?.content);
// Output: It's always sunny in Tokyo!
执行流程解析
┌─────────────────────────────────────┐
│ │
│ 用户:"东京天气怎么样?" │
│ ↓ │
│ Agent(思考):"用户想查天气" │
│ ↓ │
│ 调用 get_weather 工具 │
│ ↓ │
│ 工具返回:"东京晴天" │
│ ↓ │
│ Agent(总结):"东京天气晴朗" │
│ ↓ │
│ 输出结果给用户 │
│ │
└─────────────────────────────────────┘
💡 人话解读:
tool()函数定义了一个工具,告诉 Agent 这个工具能做什么createAgent()创建了一个会思考的 AI 助手invoke()启动任务,Agent 会自己决定调用什么工具
业务场景:LangChain 适合哪些人?
| 角色 | 痛点 | LangChain 如何帮助 | 推荐方案 |
|---|---|---|---|
| 产品经理 | 原型验证慢,想法难落地 | 10 行代码创建原型,快速验证 | Deep Agents |
| 后端开发者 | 模型集成复杂,工具调用混乱 | 统一接口,自动推理,代码简洁 | LangChain |
| AI 研究员 | 实验环境搭建麻烦,对比困难 | 模型切换容易,LangSmith 分析 | LangChain |
| 创业者 | 快速 MVP,抢占市场 | 快速开发,功能完整 | Deep Agents |
| 技术专家 | 需要深度定制,性能优化 | 底层可控,高度灵活 | LangGraph |
典型应用场景
| 场景 | 传统做法 | LangChain 做法 | 节省时间 |
|---|---|---|---|
| 智能客服 | 硬编码所有场景 | Agent 自己理解用户意图 | 80% |
| 知识问答 | 搜索 + 总结 | RAG + Agent 自动检索 | 60% |
| 个人助手 | 多个独立工具 | 统一 Agent 协调所有工具 | 70% |
| 数据分析 | 写脚本分析 | Agent 调用分析工具 | 50% |
总结对比表
| 维度 | LangChain | LangGraph | Deep Agents |
|---|---|---|---|
| 定位 | 框架级 | 运行时级 | 应用级 |
| 复杂度 | 中等 | 高 | 低 |
| 灵活性 | 高 | 极高 | 中 |
| 开箱即用 | ⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐⭐ |
| 定制能力 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 适用场景 | 快速开发、灵活配置 | 复杂场景、深度定制 | 快速上线、功能丰富 |
| 学习曲线 | 平缓 | 陡峭 | 极平缓 |
核心要点回顾
-
✅ LangChain 是什么:一个"开箱即用"的 AI 应用开发框架,让你用 10 行代码创建智能 Agent
-
✅ 三者关系:
- Deep Agents:"精装房",开箱即用
- LangChain:"标准装修",框架完整
- LangGraph:"毛坯房",底层灵活
-
✅ 核心优势:
- 标准模型接口,避免供应商锁定
- 预构建 Agent 架构,10 行代码启动
- 基于 LangGraph,支持持久执行和流式传输
- LangSmith 调试工具,可视化执行过程
-
✅ 适用场景:快速原型、智能客服、知识问答、个人助手、数据分析
-
✅ 为什么选择:如果你想快速构建 Agent 和自主应用,LangChain 是最佳起点
如果这篇文章对你有帮助,点个赞再走呗 👍
关注「WEB大前端」,每周分享技术实践和行业洞察。