Prompt实战之多文档总结 2)Stuff 策略总结多文档

Prompt实战之多文档总结 2)Stuff 策略总结多文档

2.1 引言

在本章中,我们将实践Stuff 策略。这是最简单的一种多文档总结方法:直接将所有文档堆叠(stuff)在一起,统一发送给 LLM,请求生成总结。

虽然简单,但 Stuff 策略在小规模、多数文档内容较短的场景中,依然非常有效。


2.2 什么是 Stuff 策略?

Stuff(堆叠)策略指的是:

  • 将所有需要处理的文档一次性拼接成一条超大文本;
  • 作为一个整体传递给 LLM;
  • 由 LLM 直接输出总结内容。

适用场景

  • 文档数量较少(例如 5~10份);
  • 每份文档内容较短(不超过几百字);
  • 总拼接长度远低于 LLM 的上下文窗口(通常 8k、16k、32k token 不等)。

▶️ 提示:如果文档总长度接近或超过上下文窗口限制,Stuff 方法会失败,需要使用更复杂的方法(下一章将介绍)。


2.3 流程图

让我们先看一下 Stuff 策略总结的基本流程:

加载多个文档
拼接文档内容
构建 Prompt
调用 LLM 获取总结结果
输出总结文本

2.4 实战步骤

2.4.1 加载文档

我们以网页为例,使用 WebBaseLoader 加载文档:

from langchain_community.document_loaders import WebBaseLoader

# 示例:加载多个网页作为文档
urls = [
    "https://docs.smith.langchain.com/overview",
    "https://python.langchain.com/docs/expression_language",
]

loader = WebBaseLoader(urls)
documents = loader.load()

print(f"一共加载了 {len(documents)} 份文档")

▶️ 小贴士
如果是本地 PDF、Markdown 文件,可以换用 PyPDFLoaderUnstructuredLoader 等。


2.4.2 创建 Stuff Summarization Chain

使用 LangChain 中的 stuff_documents 工具链,快速建立 summarization chain:

from langchain_openai import ChatOpenAI
from langchain.chains.summarize import load_summarize_chain

# 初始化 OpenAI Chat 模型
llm = ChatOpenAI(model="gpt-4", temperature=0)

# 使用 Stuff 策略加载总结链
stuff_chain = load_summarize_chain(
    llm,
    chain_type="stuff",
)

# 调用链执行总结
summary = stuff_chain.invoke(documents)

print(summary['output_text'])

▶️ 小贴士
如果想自己自定义提示词(Prompt Template),也可以传递 prompt=your_prompt 参数给 load_summarize_chain


2.5 整合代码示例

完整示范整合在一起,方便复制运行:

from langchain_community.document_loaders import WebBaseLoader
from langchain_openai import ChatOpenAI
from langchain.chains.summarize import load_summarize_chain

# 加载文档
urls = [
    "https://docs.smith.langchain.com/overview",
    "https://python.langchain.com/docs/expression_language",
]
loader = WebBaseLoader(urls)
documents = loader.load()

# 初始化 LLM
llm = ChatOpenAI(model="gpt-4", temperature=0)

# 创建 Stuff Summarization Chain
stuff_chain = load_summarize_chain(llm, chain_type="stuff")

# 执行总结
summary = stuff_chain.invoke(documents)

# 输出结果
print(summary['output_text'])

2.6 本章小结

在本章中,我们:

  • 学习了 Stuff 策略的原理与适用范围;
  • 使用 LangChain 快速搭建了一个多文档 Stuff 总结系统;
  • 成功调用 LLM 生成了整合后的总结。

虽然 Stuff 策略简单,但在合适场景下,它是最快速、最直接的总结方式。


✏️ 练习

  1. 尝试使用 WebBaseLoader 加载自己感兴趣的 2-3 个网页内容,并使用 Stuff 策略生成总结。
  2. 替换 LLM 为 gpt-3.5-turbo 或其他模型,观察总结质量差异。
  3. 修改 Summarization Chain,传入自定义 Prompt,比如要求模型输出“要点提炼版总结”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这是Jamon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值