告别信息过载:用大语言模型实现智能文本摘要(附代码)
摘要
每天面对海量文本——产品评论、新闻文章、内部报告……我们根本没有时间逐字阅读。大语言模型(LLM)的文本摘要能力可以彻底改变这一局面。本文基于 OpenAI 官方课程,系统讲解如何使用 LLM 进行智能摘要。你将学到:控制摘要长度(字数/句子数)、为特定部门(如物流、定价)定制摘要、使用“提取”而非“总结”获得精准信息、批量处理多条评论并生成摘要列表。所有代码均基于 gpt-3.5-turbo 模型,可直接复制运行。读完本文,你就能构建属于自己的“智能阅读助手”。
适用人群 / 前置知识
适用人群:需要处理大量文本的开发者、运营人员、产品经理、数据分析师;希望利用 LLM 提高信息处理效率的学习者。
前置知识:了解 Python 基础;能读懂 API 调用代码;熟悉基本的提示词概念即可。
引言:文本摘要为何是 LLM 的“杀手级应用”
在信息爆炸的时代,我们每天被新闻、邮件、文档、用户评论淹没。据统计,普通人每天接触的信息量相当于 174 份报纸。我们缺的不是信息,而是处理信息的时间。
大语言模型(LLM)的文本摘要能力,正好解决了这一痛点。它可以在几秒内将一篇长文章压缩成几个关键句子,保留核心信息,过滤冗余细节。更重要的是,你可以通过调整提示词,让摘要聚焦于特定主题(如物流、价格、产品质量),甚至直接提取相关信息而非“创造”摘要。
本文将通过一个完整的电商产品评论处理案例,手把手教你实现从单条摘要到批量处理的全流程。
环境准备
首先确保安装 OpenAI Python 库并配置 API 密钥。以下为辅助函数(使用库版本 0.27.0):
import openai
import os
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
openai.api_key = os.getenv('OPENAI_API_KEY')
def get_completion(prompt, model="gpt-3.5-turbo"):
messages = [{"role": "user", "content": prompt}]
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=0, # 确定性输出
)
return response.choices[0].message["content"]
如果你使用 OpenAI 库 1.0.0+,请参考前文博客中的替代代码。
案例数据:一条产品评论
我们有一条关于熊猫毛绒玩具的产品评论,将用它来演示各种摘要技巧。
prod_review = """
Got this panda plush toy for my daughter's birthday,
who loves it and takes it everywhere. It's soft and
super cute, and its face has a friendly look. It's
a bit small for what I paid though. I think there
might be other options that are bigger for the
same price. It arrived a day earlier than expected,
so I got to play with it myself before I gave it
to her.
"""
基础摘要:控制长度
最简单的摘要就是“短”。通过指定最大词数、句子数或字符数,你可以让模型生成简洁的摘要。
prompt = f"""
你的任务是为电商网站生成一个简短的产品评论摘要。
将下面用三重反引号分隔的评论总结为最多 30 个词。
评论:```{prod_review}```
"""
response = get_completion(prompt)
print(response)
输出示例:
柔软可爱的熊猫毛绒玩具,女儿很喜欢;价格略贵偏小;提前一天送达。
你也可以尝试:
- at most 3 sentences(最多 3 句话)
- at most 200 characters(最多 200 个字符)
注意:模型对精确字数的控制不是完美的,但大致在合理范围内。建议多试几次,或使用后处理截断。
定向摘要:为不同部门定制内容
同一个摘要可能对不同的人有不同的价值。物流部门只关心“什么时候到货”,定价部门只关心“价格是否合理”。通过修改提示词,你可以让模型聚焦于特定主题。
为物流部门定制
prompt = f"""
你的任务是为电商网站生成一个简短的产品评论摘要,
用于向物流部门提供反馈。
将下面用三重反引号分隔的评论总结为最多 30 个词,
重点关注提到产品运输和配送的方面。
评论:```{prod_review}```
"""
response = get_completion(prompt)
print(response)
输出:
产品比预期早到了一天,让我在送人之前自己先玩了一会儿。
为定价部门定制
prompt = f"""
你的任务是为电商网站生成一个简短的产品评论摘要,
用于向定价部门提供反馈(定价部门负责确定产品价格)。
将下面用三重反引号分隔的评论总结为最多 30 个词,
重点关注与价格和感知价值相关的方面。
评论:```{prod_review}```
"""
response = get_completion(prompt)
print(response)
输出:
毛绒玩具很可爱,但相对于价格来说尺寸偏小,可能有同样价格但更大的选择。
进阶技巧:提取(Extract)而非总结(Summarize)
在上面的定向摘要中,模型仍然包含了一些“其他信息”(例如物流部门的摘要里还提到了“让我先玩了一会儿”)。如果你只想要纯粹的事实,不需要任何额外描述,可以使用“提取”而非“总结”。
prompt = f"""
你的任务是从电商网站的产品评论中提取相关信息,
用于向物流部门提供反馈。
从下面用三重引号分隔的评论中,
提取与运输和配送相关的信息。限制在 30 个词以内。
评论:```{prod_review}```
"""
response = get_completion(prompt)
print(response)
输出:
产品比预期早到了一天。
这就是“提取”与“总结”的区别:总结会重新组织语言,可能加入过渡词或额外描述;提取则是直接从原文中摘取相关句子或短语,更加精准。
批量处理:对多条评论生成摘要
在实际场景中,你往往有几十上百条评论。我们可以把所有评论放入一个列表,然后循环调用模型生成摘要。
以下准备了四条评论(熊猫玩具、落地灯、电动牙刷、搅拌机)。为了节省篇幅,代码中只展示关键部分。
reviews = [review_1, review_2, review_3, review_4]
for i in range(len(reviews)):
prompt = f"""
你的任务是为电商网站生成一个简短的产品评论摘要。
将下面用三重反引号分隔的评论总结为最多 20 个词。
评论:```{reviews[i]}```
"""
response = get_completion(prompt)
print(f"评论 {i+1} 摘要:{response}\n")
输出示例:
- 评论1摘要:柔软可爱的熊猫玩具,女儿很喜欢;价格略贵但提前送达。
- 评论2摘要:落地灯带额外储物空间,价格合理,两天内到货,客服响应迅速。
- 评论3摘要:电动牙刷电池续航优秀,但刷头太小;50美元左右是好价。
- 评论4摘要:17件套搅拌机季节性半价,但后来涨价;电机一年后出问题。
这样,你可以在一个仪表盘上快速浏览所有评论的核心内容,需要时再点击查看原文。
常见问题与注意事项
1. 摘要会丢失信息吗? 会,这是设计使然。摘要的目的是提取最重要的信息,你可以通过调整“最大长度”来控制保留的信息量。
2. 如何确保摘要不产生幻觉? 使用“提取”模式比“总结”模式更安全,因为提取直接使用原文。对于总结,可以要求模型“仅基于给定文本”并降低 temperature。
3. 中文评论能用吗? 可以。GPT 模型支持中文输入和输出,提示词用中文写即可。
4. 批量处理成本高吗? 以 gpt-3.5-turbo 为例,每 1000 个 token 约 $0.002,总结一条 200
词的评论成本极低。
5. 摘要长度控制不精确怎么办? 可以在提示中同时使用词数和句子数双重约束,或者在代码中对输出做后处理截断。
扩展应用场景
除了产品评论,文本摘要能力还可以应用于:
- 新闻聚合:每天自动摘要头条新闻,生成简报。
- 会议记录:将长会议记录压缩成要点列表。
- 客户支持工单:快速了解工单核心问题。
- 学术论文:为每篇论文生成一句话核心贡献。
- 内部文档:为长篇报告生成执行摘要。
总结
| 技巧 | 关键提示词指令 | 适用场景 |
|---|---|---|
| 控制长度 | at most N words / sentences | 通用摘要 |
| 定向摘要 | focusing on aspects that mention X | 为特定部门定制 |
| 提取信息 | extract relevant information | 需要精确事实 |
| 批量处理 | 循环调用 + 列表输入 | 大规模文本处理 |
文本摘要是大语言模型最实用、最容易上手的能力之一。掌握它,你就能从信息过载中解脱出来,把时间花在真正重要的决策上。
下一步,你可以尝试将自己的邮件、文档或用户反馈输入模型,看看它能为你节省多少时间。下一篇文章中,我们将探讨 LLM 的另一个强大能力——文本推理(情感分析、实体识别等),敬请期待!
更多推荐

所有评论(0)