Skip to content

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 = 大模型应用的"脚手架"
  • 提供统一的接口,屏蔽不同模型的差异
  • 核心思想:组件化 + 链式组合

🏃 下一章

02-环境搭建 →

基于 LangChain.js v1.x 版本