LangChain 简介 #

什么是 LLM 应用开发? #

在了解 LangChain 之前,我们需要先理解"大语言模型应用开发"的概念。随着 GPT、Claude 等大语言模型的兴起,开发者需要构建能够利用这些模型能力的应用程序。

text
┌─────────────────────────────────────────────────────────────┐
│                    LLM 应用开发挑战                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   输入:                                                     │
│   "帮我分析这份销售报告并生成摘要"                           │
│                                                             │
│   处理过程需要:                                             │
│   ┌─────────────────────────────────────────────────────┐   │
│   │                                                     │   │
│   │   1. 读取文档 ───> 2. 文本分割 ───> 3. 向量化存储    │   │
│   │                                                     │   │
│   │   4. 相似检索 ───> 5. 构建提示 ───> 6. 调用 LLM      │   │
│   │                                                     │   │
│   │   7. 解析输出 ───> 8. 记忆管理 ───> 9. 返回结果      │   │
│   │                                                     │   │
│   └─────────────────────────────────────────────────────┘   │
│                                                             │
│   问题:                                                     │
│   ❌ 每个环节都需要单独实现                                  │
│   ❌ 不同 LLM 提供商 API 各不相同                           │
│   ❌ 记忆管理复杂                                           │
│   ❌ 提示工程需要大量经验                                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

传统开发 vs LangChain #

text
┌─────────────────────────────────────────────────────────────┐
│                    传统 LLM 开发                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   问题:                                                     │
│   ❌ 需要学习不同 LLM 的 API                                │
│   ❌ 手动管理对话历史                                       │
│   ❌ 自己实现 RAG 流程                                      │
│   ❌ 缺乏标准化组件                                         │
│   ❌ 难以切换模型提供商                                     │
│                                                             │
│   LangChain 解决方案:                                       │
│   ✅ 统一的模型接口                                         │
│   ✅ 内置记忆管理                                           │
│   ✅ 开箱即用的 RAG 组件                                    │
│   ✅ 模块化可组合                                           │
│   ✅ 轻松切换提供商                                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

什么是 LangChain? #

LangChain 是一个开源框架,专门用于开发由大语言模型(LLM)驱动的应用程序。它提供了一套完整的工具和抽象,帮助开发者快速构建复杂的 AI 应用,如聊天机器人、文档问答系统、智能代理等。

核心定位 #

text
┌─────────────────────────────────────────────────────────────┐
│                       LangChain                              │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │   Models    │  │   Prompts   │  │   Chains    │         │
│  │   模型层    │  │   提示层    │  │   链式调用  │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │   Memory    │  │   Agents    │  │  Retrieval  │         │
│  │   记忆管理  │  │   智能代理  │  │   检索增强  │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
└─────────────────────────────────────────────────────────────┘

LangChain 解决的问题 #

text
┌─────────────────────────────────────────────────────────────┐
│                    LangChain 核心价值                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 统一接口                                                │
│     一套代码,支持 OpenAI、Claude、Gemini 等多种模型         │
│                                                             │
│  2. 组件化开发                                              │
│     模块化设计,像搭积木一样构建应用                         │
│                                                             │
│  3. 链式组合                                                │
│     将多个操作串联成复杂工作流                               │
│                                                             │
│  4. 智能代理                                                │
│     让 LLM 自主决策调用工具和执行任务                        │
│                                                             │
│  5. 检索增强                                                │
│     轻松构建 RAG 应用,让 LLM 访问外部知识                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

LangChain 的历史 #

发展历程 #

text
2022年10月 ─── LangChain 项目启动
      │
      │      Harrison Chase 创建
      │      开源发布
      │      专注于 LLM 应用开发
      │
2023年1月 ─── 快速增长
      │
      │      GitHub Stars 破万
      │      社区活跃
      │      Python 版本成熟
      │
2023年3月 ─── LangChain 公司成立
      │
      │      获得融资
      │      团队扩张
      │      JS 版本发布
      │
2023年7月 ─── LangSmith 发布
      │
      │      调试和监控平台
      │      企业级支持
      │
2024年1月 ─── LangGraph 发布
      │
      │      状态图工作流
      │      复杂 Agent 构建
      │
2024年 ─── LangChain v0.1/v0.2
      │
      │      架构重构
      │      性能优化
      │      更好的类型支持
      │
至今   ─── 行业标准
      │
      │      90K+ GitHub Stars
      │      最流行的 LLM 框架
      │      丰富的生态系统

里程碑版本 #

版本 时间 重要特性
0.0.1 2022.10 首次发布,基础链和模型支持
0.0.100 2023.03 Agent 框架、工具系统
0.0.200 2023.06 RAG 组件、向量存储集成
0.1.0 2024.01 架构重构、LCEL 引入
0.2.0 2024.05 更好的异步支持、性能优化
0.3.0 2024.10 LangGraph 深度集成

LangChain 的核心特点 #

1. 统一的模型接口 #

text
┌─────────────────────────────────────────────────────────────┐
│                    统一模型接口                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  from langchain_openai import ChatOpenAI                   │
│  from langchain_anthropic import ChatAnthropic             │
│  from langchain_google_genai import ChatGoogleGenerativeAI │
│                                                             │
│  统一接口:                                                  │
│  model.invoke("Hello")                                     │
│  model.stream("Hello")                                     │
│  model.batch(["Hello", "Hi"])                              │
│                                                             │
│  轻松切换:                                                  │
│  model = ChatOpenAI()      # 切换到 OpenAI                 │
│  model = ChatAnthropic()   # 切换到 Claude                 │
│  model = ChatGoogleGenerativeAI()  # 切换到 Gemini         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2. 模块化组件 #

text
┌─────────────────────────────────────────────────────────────┐
│                    模块化设计                                │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌──────────────────────────────────────────────────────┐  │
│  │                    LangChain 组件                     │  │
│  │                                                      │  │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐ │  │
│  │  │ Models  │  │ Prompts │  │  Index  │  │ Chains  │ │  │
│  │  └─────────┘  └─────────┘  └─────────┘  └─────────┘ │  │
│  │                                                      │  │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐ │  │
│  │  │ Memory  │  │ Agents  │  │  Tools  │  │Callbacks│ │  │
│  │  └─────────┘  └─────────┘  └─────────┘  └─────────┘ │  │
│  │                                                      │  │
│  └──────────────────────────────────────────────────────┘  │
│                                                             │
│  每个组件独立,可自由组合                                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3. LangChain Expression Language (LCEL) #

text
┌─────────────────────────────────────────────────────────────┐
│                    LCEL 表达式语言                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  声明式组合:                                                │
│                                                             │
│  chain = prompt | model | output_parser                     │
│                                                             │
│  等价于:                                                    │
│                                                             │
│  chain = (                                                  │
│      {"question": RunnablePassthrough()}                    │
│      | prompt                                               │
│      | model                                                │
│      | output_parser                                        │
│  )                                                          │
│                                                             │
│  特性:                                                     │
│  ✅ 支持流式输出                                            │
│  ✅ 支持异步执行                                            │
│  ✅ 支持并行处理                                            │
│  ✅ 自动重试                                                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4. 丰富的集成 #

text
┌─────────────────────────────────────────────────────────────┐
│                    集成生态                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  LLM 提供商:                                                │
│  - OpenAI (GPT-4, GPT-3.5)                                 │
│  - Anthropic (Claude)                                      │
│  - Google (Gemini)                                         │
│  - AWS (Bedrock)                                           │
│  - Azure OpenAI                                            │
│  - 本地模型 (Ollama, LM Studio)                            │
│                                                             │
│  向量存储:                                                  │
│  - Pinecone, Weaviate, Chroma                              │
│  - FAISS, Milvus, Qdrant                                   │
│                                                             │
│  工具集成:                                                  │
│  - 搜索引擎、数据库、API                                    │
│  - 文件系统、代码执行                                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

LangChain 的核心模块 #

1. Models(模型) #

text
┌─────────────────────────────────────────────────────────────┐
│                    Models 模块                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Chat Models(聊天模型):                                   │
│  - 多轮对话                                                 │
│  - 支持系统提示                                             │
│  - 支持多模态                                               │
│                                                             │
│  LLMs(文本补全模型):                                      │
│  - 单轮文本生成                                             │
│  - 传统补全任务                                             │
│                                                             │
│  Embeddings(嵌入模型):                                    │
│  - 文本向量化                                               │
│  - 语义相似度计算                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2. Prompts(提示) #

text
┌─────────────────────────────────────────────────────────────┐
│                    Prompts 模块                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Prompt Templates:                                         │
│  - 动态生成提示                                             │
│  - 变量插值                                                 │
│                                                             │
│  Few-shot Examples:                                        │
│  - 示例学习                                                 │
│  - 提高输出质量                                             │
│                                                             │
│  Output Parsers:                                           │
│  - 结构化输出                                               │
│  - 格式化解析                                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3. Chains(链) #

text
┌─────────────────────────────────────────────────────────────┐
│                    Chains 模块                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  将多个组件串联执行:                                        │
│                                                             │
│  输入 → Prompt → Model → Parser → 输出                      │
│                                                             │
│  常用链:                                                    │
│  - LLMChain:基础链                                         │
│  - SequentialChain:顺序执行                                │
│  - RouterChain:条件路由                                    │
│  - TransformChain:数据转换                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4. Memory(记忆) #

text
┌─────────────────────────────────────────────────────────────┐
│                    Memory 模块                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  对话记忆:                                                  │
│  - ConversationBufferMemory                                │
│  - ConversationBufferWindowMemory                          │
│  - ConversationSummaryMemory                               │
│                                                             │
│  持久化:                                                    │
│  - Redis 存储                                               │
│  - 文件存储                                                 │
│  - 数据库存储                                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

5. Agents(代理) #

text
┌─────────────────────────────────────────────────────────────┐
│                    Agents 模块                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  让 LLM 自主决策:                                           │
│                                                             │
│   ┌─────────┐     ┌─────────┐     ┌─────────┐              │
│   │  用户   │ ───>│  Agent  │ ───>│  工具   │              │
│   └─────────┘     └────┬────┘     └─────────┘              │
│                        │                                    │
│                        ▼                                    │
│                   ┌─────────┐                              │
│                   │   LLM   │                              │
│                   │  决策   │                              │
│                   └─────────┘                              │
│                                                             │
│  Agent 类型:                                                │
│  - ReAct Agent:推理+行动                                   │
│  - OpenAI Functions Agent:函数调用                         │
│  - Structured Chat Agent:结构化对话                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

6. Retrieval(检索) #

text
┌─────────────────────────────────────────────────────────────┐
│                    Retrieval 模块                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  RAG(检索增强生成)流程:                                   │
│                                                             │
│  1. Document Loaders:加载文档                              │
│  2. Text Splitters:文本分割                                │
│  3. Embeddings:向量化                                      │
│  4. Vector Stores:存储向量                                 │
│  5. Retrievers:检索相关内容                                │
│                                                             │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐             │
│  │  文档    │ ──>│  分割    │ ──>│  向量化  │             │
│  └──────────┘    └──────────┘    └──────────┘             │
│                                        │                    │
│                                        ▼                    │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐             │
│  │  LLM     │ <──│  检索    │ <──│ 向量存储 │             │
│  └──────────┘    └──────────┘    └──────────┘             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

LangChain 的应用场景 #

1. 智能问答系统 #

text
┌─────────────────────────────────────────────────────────────┐
│                    智能问答系统                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   用户提问:                                                 │
│   "公司的年假政策是什么?"                                   │
│                                                             │
│   系统处理:                                                 │
│   1. 检索员工手册相关内容                                   │
│   2. 找到年假政策章节                                       │
│   3. 结合问题生成答案                                       │
│                                                             │
│   AI 回答:                                                  │
│   "根据公司员工手册,年假政策如下:                          │
│    - 入职满一年后享有 5 天年假                              │
│    - 工龄每增加一年,年假增加 1 天                          │
│    - 年假需提前 3 天申请..."                                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2. 聊天机器人 #

text
应用场景:
- 客户服务
- 销售助手
- 技术支持

优势:
✅ 多轮对话记忆
✅ 上下文理解
✅ 工具调用能力
✅ 知识库检索

3. 文档分析 #

text
┌─────────────────────────────────────────────────────────────┐
│                    文档分析                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  输入:PDF 合同文档                                          │
│                                                             │
│  AI 处理:                                                   │
│  1. 解析文档结构                                            │
│  2. 提取关键条款                                            │
│  3. 识别风险点                                              │
│  4. 生成分析报告                                            │
│                                                             │
│  输出:                                                      │
│  "合同分析报告:                                             │
│   1. 合同类型:软件开发服务合同                             │
│   2. 关键条款:...                                          │
│   3. 风险提示:...                                          │
│   4. 建议修改:..."                                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4. 代码助手 #

text
应用场景:
- 代码生成
- 代码解释
- Bug 修复
- 代码审查

优势:
✅ 理解代码上下文
✅ 支持多种语言
✅ 可执行代码验证

5. 自动化工作流 #

text
┌─────────────────────────────────────────────────────────────┐
│                    自动化工作流                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  任务:处理客户邮件                                          │
│                                                             │
│  Agent 执行:                                                │
│  1. 读取邮件内容                                            │
│  2. 分析邮件意图                                            │
│  3. 检索相关产品信息                                        │
│  4. 生成回复草稿                                            │
│  5. 发送或等待审核                                          │
│                                                             │
│  涉及工具:                                                  │
│  - 邮件 API                                                 │
│  - 产品数据库                                               │
│  - CRM 系统                                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

LangChain vs 其他框架 #

对比分析 #

特性 LangChain LlamaIndex Haystack
定位 通用 LLM 框架 数据框架 NLP 框架
学习曲线 中等 较低 中等
Agent 支持 ✅ 强大 ⚠️ 基础 ✅ 支持
RAG 支持 ✅ 完善 ✅ 专注 ✅ 完善
集成数量 ✅ 最多
社区活跃度 ✅ 最高 中等
生产就绪 ✅ LangSmith ⚠️ 发展中 ✅ 支持

选择建议 #

text
┌─────────────────────────────────────────────────────────────┐
│                    选择指南                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  选择 LangChain 的场景:                                     │
│  ✅ 需要构建复杂的 Agent 应用                               │
│  ✅ 需要灵活组合多种组件                                    │
│  ✅ 需要最大的生态系统支持                                  │
│  ✅ 需要企业级监控(LangSmith)                             │
│                                                             │
│  选择 LlamaIndex 的场景:                                    │
│  ✅ 专注于 RAG 应用                                         │
│  ✅ 需要处理大量文档                                        │
│  ✅ 简单易用                                                │
│                                                             │
│  选择 Haystack 的场景:                                      │
│  ✅ NLP 管道应用                                            │
│  ✅ 搜索系统                                                │
│  ✅ 已有 Haystack 项目                                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

LangChain 的优势与局限 #

优势 #

text
✅ 生态丰富
   - 100+ 集成
   - 活跃的社区
   - 持续更新

✅ 抽象合理
   - 模块化设计
   - 易于扩展
   - 统一接口

✅ 生产就绪
   - LangSmith 监控
   - LangServe 部署
   - 企业支持

✅ 多语言支持
   - Python(主要)
   - JavaScript/TypeScript

局限性 #

text
⚠️ 学习曲线
   - 概念较多
   - 版本更新快
   - 文档有时滞后

⚠️ 抽象开销
   - 简单任务可能过度抽象
   - 调试可能复杂

⚠️ 性能考量
   - 额外的抽象层
   - 需要优化配置

⚠️ 版本变化
   - API 变化较快
   - 需要关注更新

学习路径 #

text
入门阶段
├── LangChain 简介(本文)
├── 快速开始
└── 核心概念

基础阶段
├── 模型(Models)
├── 提示(Prompts)
├── 链(Chains)
└── 记忆(Memory)

进阶阶段
├── 检索(Retrieval)
├── 代理(Agents)
├── 工具(Tools)
└── RAG 应用

高级阶段
├── 流式处理
├── 回调系统
├── LangGraph
└── 生产部署

下一步 #

现在你已经了解了 LangChain 的基本概念,接下来学习 快速开始,开始你的 LLM 应用开发之旅!

最后更新:2026-03-30