大数跨境

LangChain 实战(中):Chains + Memory,解锁大模型应用的高阶能力

LangChain 实战(中):Chains + Memory,解锁大模型应用的高阶能力 知识代码AI
2026-09-20
1

🔗 LangChain 实战(中):Chains + Memory,解锁大模型应用的高阶能力


一、本章概览

第10章《大模型应用开发框架 LangChain(中)》是 LangChain 核心进阶篇,聚焦两大核心模块——Chains(链) 和 Memory(记忆),让你从"单次调用大模型"升级到"编排复杂业务流水线"。

核心内容:

  1. Chains:大模型应用的最佳实践
  2. LLMChain:上手你的第一个链(公司取名实战)
  3. SequentialChain:串联式调用链(戏剧简介 + 评论实战)
  4. SimpleSequentialChain vs SequentialChain
  5. TransformChain:处理超长文本的转换链
  6. RouterChain:实现条件判断的路由链
  7. Memory System:赋予应用记忆能力
  8. 三大记忆类型详解
  9. 可选作业:文本摘要 + 翻译聊天助手

二、Chains:大模型应用的最佳实践

乐高式创新思维

LangChain 的核心设计理念是乐高式创新——将语言模型、提示模板、输出解析器等组件像乐高积木一样模块化组合,通过 Chains(链) 串联起来,构建复杂的大模型应用。

大模型抽象回顾:Model I/O

Format(格式化)→ Predict(预测)→ Parse(解析)

X = "foo", y = "bar"
    ↓
Prompt Template → "Does {x} like {y}, and why?"
    ↓
LLM / Chat Model → {"likes": True, "reason": "Because ..."}
    ↓
Output Parser → "Foo does..."

LangChain 高层结构

Chains 是连接所有组件的"最终链条",可应用于:

应用场景
说明
📄 文档问答
Question Answering over Docs
📝 摘要生成
Summarization
💬 聊天机器人
Chatbots
📊 表格查询
Querying Tabular Data
💻 代码理解
Code Understanding
🔌 与 API 交互
Interacting with APIs
🏪 特征存储
FeatureStore

三、LLMChain:第一个链

LLMChain 是整合语言模型和提示模板的最简单链,也是上手 LangChain 的起点。

工作流程

Input(prompts)
    ↓
Prompt Template 格式化
    ↓
LLM / Chat Model 预测
    ↓
Output(contents)
    ↓
Output Parser 解析

实战:公司取名

from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

llm = OpenAI(temperature=..., max_tokens=...)

prompt = PromptTemplate(
    input_variables=["product"],
    template="给制造{product}的有限公司取10个好名字,并给出完整的公司名称"
)

chain = LLMChain(llm=llm, prompt=prompt)
print(chain.run({'product''性能卓越的GPU'}))

输出示例(10个公司名称):

序号
公司名称
1
Hyperion High-End GPU Company
2
CyberGPU Ingenuity Technologies
3
NeoTronix Advanced Graphics Inc.
4
Fusionworks Graphics Systems
5
CryptoCore Creative Computing
6
Levai Visual Solutions
7
Quanta Vision Technologies
8
Catalyst Technologies International
9
ZenCore Graphic Innovations
10
ViZoX Precision Graphics LLC

四、SimpleSequentialChain:单输入/输出串联

SimpleSequentialChain 是最简单形式的顺序链,每个步骤具有单一输入/输出,上一个步骤的输出自动成为下一个步骤的输入。

Input → LLMChain A → LLMChain B → Output

实战:戏剧简介 → 戏剧评论

Step 1 — synopsis_chain:根据剧目标题撰写简介

元素
内容
提示模板
你是一位剧作家。根据戏剧的标题,你的任务是为该标题写一个简介。标题:{title}
输入变量
title = "三体人不是无法战胜的"
输出(synopsis)
讲述了一个古老而又充满悬念的故事,三个被当作宿命的人之间的奋斗……

Step 2 — review_chain:撰写戏剧评论

元素
内容
提示模板
你是《纽约时报》的戏剧评论家。根据剧情简介,你的工作是为该剧撰写一篇评论。剧情简介:{synopsis}
输入变量
synopsis_chain 的输出
输出(review)
一部引人入胜的戏剧,拥有出色的视觉效果……

代码实现:

from langchain.chains import SimpleSequentialChain

overall_chain = SimpleSequentialChain(
    chains=[synopsis_chain, review_chain],
    verbose=True
)

review = overall_chain.run("三体人不是无法战胜的")

五、SequentialChain:多输入/输出串联

SequentialChain 是更通用形式的顺序链,允许多个输入和多个输出,适合复杂业务场景。

Input 1 ──→ LLMChain A ──→ Output A
Input 2 ──→ LLMChain B ──→ Output B

实战:带时代背景的戏剧简介 + 评论

from langchain.chains import SequentialChain

overall_chain = SequentialChain(
    chains=[synopsis_chain, review_chain],
    input_variables=["era""title"],
    output_variables=["synopsis""review"],
    verbose=True
)

overall_chain({
    "title""三体人不是无法战胜的",
    "era""二十一世纪的新中国"
})

运行结果:

{
  "title""三体人不是无法战胜的",
  "era""二十一世纪的新中国",
  "synopsis""讲述了一个普通家庭中的三体人,受到传统的社会和政治压力,面对社会歧视与偏见以及政治压迫和控制,却不断坚持自己的价值观和信念",
  "review""一部非常有趣且有意义的戏剧,展示了社会歧视和偏见,以及政治压迫等内容"
}

💡 SimpleSequentialChain vs SequentialChain

对比维度
SimpleSequentialChain
SequentialChain
输入/输出
单一输入/输出
多输入/多输出
传递方式
自动传递
显式指定 input_variables / output_variables
适用场景
简单流水线
复杂业务逻辑

六、TransformChain:处理超长文本的转换链

TransformChain 用于处理超长文本,在调用 LLM 之前进行预处理/转换。

架构图

SequentialChain
  ├── D0C 1
  ├── TransformChain(预处理/截断/提取关键部分)
  ├── LLMChain(摘要生成)
  └── Summary → D0C 2

典型场景:当文档内容超过 LLM 的 Token 限制时,先用 TransformChain 进行文本截断、关键信息提取或分段处理,再交由 LLMChain 处理。


七、RouterChain:实现条件判断的路由链

RouterChain 根据输入条件,由路由链判断选择不同的下游 LLMChain 执行。

Input 1 ──→ LLMRouterChain ──→ LLMChain A ──→ Output A
Input 2 ──→ LLMRouterChain ──→ LLMChain B ──→ Output B

典型场景:根据用户意图(如"翻译"或"摘要")自动路由到不同的处理链。


八、可选作业:文本摘要 + 翻译聊天助手

结合 Chains 全部能力,构建一个既能做摘要又能做翻译的聊天助手:

Input 1 ──→ TransformChain ──→ LLMChain A ──→ Summary
Input 2 ──→ LLMRouterChain ──→ LLMChain B ──→ Translation

九、Memory:赋予应用记忆的能力

为什么需要 Memory?

没有 Memory 的 LLM 应用,每次对话都是"初次见面"——模型无法记住之前说过什么。Memory 系统让应用具备对话记忆能力,实现真正的多轮交互。

Memory System 与 Chain 的关系

Memory 在 Chain 中承担 READ(读取) 和 WRITE(写入) 两个核心功能:

Chain:
Prompt: "{past_messages} {question}" → Model → Output Parser → {"answer": ...}
                             ↑                            ↓
Memory:                   READ  ←──────────────────  WRITE

工作流程:

  1. WRITE:模型生成答案后,Memory 将新的对话历史写入存储
  2. READ:用户发起新问题时,Memory 读取历史消息 {past_messages} 注入到 Prompt 中
  3. 模型在上下文中"看到"历史对话,实现连贯的多轮交互

记忆基类

LangChain 提供了 BaseMemory 和 BaseChatMessageMemory 作为记忆系统的基类,支持高度定制化——你可以替换为不同的 XMemory 实现,使应用具备不同形式的记忆能力。

三大记忆类型详解

记忆类型
工作机制
适用场景
🗃️ ConversationBufferMemory
保存完整的对话历史
短对话、需要精确回溯的场景
🪟 ConversationBufferWindowMemory
只保留最近窗口大小内的对话记录
长对话,避免 Token 超限
📋 ConversationSummaryBufferMemory
对较早对话进行摘要压缩 + 保留最新对话
超长对话,兼顾记忆与上下文限制

记忆类型对比图示:

ConversationBufferMemory:
  [消息1] [消息2] [消息3] [消息4] [消息5] ... 全部保留

ConversationBufferWindowMemory(窗口=3):
  [消息1] [消息2] [消息3] [消息4] [消息5]
  → 只保留 [消息3] [消息4] [消息5](最近3条)

ConversationSummaryBufferMemory:
  [摘要] + [消息4] [消息5](最新对话保留原文)

十、课程项目:GitHub openai-quickstart

项目信息
内容
项目名称
OpenAI Quickstart
定位
一站式大语言模型学习资源
文档
中英文双语(README.md + README-CN.md)
内容
理论基础 + 开发基础 + 动手实例

项目目录

openai-quickstart/
├── openai_api/          # OpenAI API 实战
├── langchain/           # LangChain 集成示例(本章核心)
├── openai-translator/   # OpenAI 翻译工具
├── chatgpt-plugins/     # ChatGPT 插件开发
├── docs/                # 文档与学习资料
└── selected_homework/   # 学员优秀作业

📌 本章核心要点总结

序号
核心要点
一句话总结
1
LLMChain
整合语言模型和提示模板的最简单链,上手第一个链
2
SimpleSequentialChain
单输入/输出串联,自动传递结果
3
SequentialChain
多输入/多输出串联,显式指定变量
4
TransformChain
处理超长文本,先转换再调用 LLM
5
RouterChain
路由链,根据条件选择不同处理链
6
ConversationBufferMemory
保存完整对话历史
7
ConversationBufferWindowMemory
只保留最近窗口内的对话
8
ConversationSummaryBufferMemory
摘要压缩较早对话 + 保留最新对话
9
Memory 工作流程
WRITE(写入历史)→ READ(读取历史注入 Prompt)

📚 下期预告:第11章 —— LangChain 实战(下):Agents + Data Connection,敬请期待!


本文整理自《AI 大模型应用开发实战营》第10章,讲师:彭靖田


【声明】内容源于网络
0
0
知识代码AI
技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
内容 411
粉丝 0
知识代码AI 技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
总阅读7.4k
粉丝0
内容411