01-基础概念:什么是 LangChain?
💡 注意: 本教程适用于 LangChain.js v1.x,需要 Node.js 20+
📖 一句话解释
LangChain 是一个用于开发大语言模型 (LLM) 应用的 JavaScript 库。
简单说:它让你用"搭积木"的方式构建 AI 应用。
🤔 为什么需要 LangChain?
不使用 LangChain 时
javascript
// 直接调用 API
const response = await fetch('https://api.openai.com/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk-xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gpt-4',
messages: [{ role: 'user', content: '你好' }]
})
});问题:
- ❌ 每个模型 API 都不同,需要分别学习
- ❌ 没有统一的消息格式
- ❌ 流式输出需要自己处理
- ❌ 多轮对话要自己管理历史
- ❌ 复杂功能(如 RAG、Agent)要自己实现
使用 LangChain 后
javascript
// 统一的接口
import { ChatOpenAI } from "@langchain/openai";
import { HumanMessage } from "@langchain/core/messages";
const model = new ChatOpenAI({ apiKey: "sk-xxx" });
const response = await model.invoke([new HumanMessage("你好")]);优势:
- ✅ 所有模型用同一套 API
- ✅ 流式输出一行代码搞定
- ✅ 内置对话历史管理
- ✅ 丰富的组件(工具、链、Agent)
🧱 LangChain 的核心组件
┌─────────────────────────────────────────────────────────┐
│ LangChain.js │
├─────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 模型层 │ │ 提示词 │ │ 输出解析 │ │
│ │ (Models) │ │ (Prompts) │ │ (Output) │ │
│ │ ChatOpenAI │ │ PromptTempl. │ │ JSON/Zod │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 链 (Chain) │ │ 记忆 │ │ 工具 │ │
│ │ (组合) │ │ (Memory) │ │ (Tools) │ │
│ │ LLMChain │ │ BufferMemory │ │ Calculator │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────┘🎯 典型应用场景
| 场景 | 说明 | LangChain 组件 |
|---|---|---|
| 智能客服 | 自动回答用户问题 | ChatModel + Memory |
| 文档问答 | 基于文档内容回答问题 | RAG + VectorStore |
| 数据分析 | 用自然语言查询数据 | Agent + Tools |
| 代码助手 | 生成/解释代码 | ChatModel + OutputParser |
| 多步骤任务 | 自动执行复杂流程 | Chain + Agent |
📦 LangChain v1.x 包结构
@langchain/
├── core/ # 核心抽象(必需)
├── openai/ # OpenAI 兼容模型
├── anthropic/ # Anthropic 模型
├── community/ # 社区贡献的工具/存储
└── ...核心依赖
json
{
"@langchain/core": "^1.x", // 核心抽象(必需)
"@langchain/openai": "^1.x", // OpenAI 兼容模型
"zod": "^3.x" // 模式验证(推荐)
}📝 本章小结
- LangChain = 大模型应用的"脚手架"
- 提供统一的接口,屏蔽不同模型的差异
- 核心思想:组件化 + 链式组合