15天学会AI应用开发(五)使用AI摘要来压缩上下文消息

前面两篇文章分别介绍了根据消息数量截断历史对话和根据Token长度截断历史对话,可是这两种方式有两个共同的问题:

1、被删去的早期记录可能包含关键信息,直接截断会导致信息丢失。

2、原始的对话记录可能存在重复、冗余、拖沓的文字内容。

一、为什么要对原始记录做摘要

要知道,重复、冗余、拖沓的文字内容并不高效,因为它的信息密度很低,很啰嗦,同样的意思使用更少的文字即可表达,完全没必要照搬原始的对话记录。

比如很多小说都有缩写本或者极简本,大幅精简后的文字保持了主要的故事框架,省去了许多次要的细节描写,一样可阅读可理解,整体的故事情节没有发生什么变化。

就历史对话的上下文而言,精简文字内容同样适用,这个精简过程被称作"摘要",意思是摘取主要信息。对话摘要既保留了原始记录的关键信息,又大幅压缩了原始记录的文字长度,可有效降低下次AI会话的Token消耗。

Python有成熟的第三方库,可以直接对一段中文做自动摘要,无需开发者自己写算法,非常方便。常见的摘要库有snownlp和sumy,分别说明如下。

二、中文摘要库 snownlp

snownlp专门做中文的文本处理,内置自动摘要功能,体积小且速度快。在编写Python代码前,要先在命令行执行下面的pip安装命令:

复制代码
pip install snownlp

然后编写下面的Python摘要测试代码:

复制代码
from snownlp import SnowNLP

def summarize_text(text, limit=2):
    """
    自动生成摘要
    :param text: 原文
    :param limit: 提取几条摘要(默认2条)
    :return: 摘要句子列表
    """
    s = SnowNLP(text)
    return s.summary(limit)  # 自动提取关键句

# 测试
if __name__ == "__main__":
    text = """
    火山方舟是火山引擎推出的大模型平台,提供模型训练、推理、评测、精调等全方位功能与服务。
    平台支持多种主流大模型接入,具有稳定可靠、安全互信的特点。
    企业可以通过火山方舟快速构建自己的AI应用,降低开发成本与技术门槛。
    """

    summary = summarize_text(text, limit=2)
    print("自动摘要:")
    for s in summary:
        print("-", s)

运行上面的Python代码,输出日志结果如下:

复制代码
自动摘要:
- 火山方舟是火山引擎推出的大模型平台
- 企业可以通过火山方舟快速构建自己的AI应用

可见snownlp库把原始的三个长句摘要为两个短句,同时保留了原文的主要意思。

三、通用摘要库 sumy

sumy库的功能更强,它支持 TF-IDF、LSA、LexRank、Luhn 等多种摘要算法。在编写Python代码前,要先在命令行执行下面的pip安装命令:

复制代码
pip install sumy

然后编写下面的Python摘要测试代码:

复制代码
from sumy.parsers.plaintext import PlaintextParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.lex_rank import LexRankSummarizer

def sumy_summary(text, sentences=2):
    parser = PlaintextParser.from_string(text, Tokenizer("chinese"))
    summarizer = LexRankSummarizer()
    summary = summarizer(parser.document, sentences)
    return [str(s) for s in summary]

# 测试
if __name__ == "__main__":
    text = """
    火山方舟是火山引擎推出的大模型平台,提供模型训练、推理、评测、精调等全方位功能与服务。
    平台支持多种主流大模型接入,具有稳定可靠、安全互信的特点。
    企业可以通过火山方舟快速构建自己的AI应用,降低开发成本与技术门槛。
    """

    summary = sumy_summary(text, sentences=2)
    print("自动摘要:")
    for s in summary:
        print("-", s)

运行上面的Python代码,输出日志结果如下:

复制代码
自动摘要:
- 火山方舟是火山引擎推出的大模型平台,提供模型训练、推理、评测、精调等全方位功能与服务。
- 平台支持多种主流大模型接入,具有稳定可靠、安全互信的特点。

可见sumy库直接输出原始文字的两个长句,摘要效果不如snownlp库。

四、使用在线大模型输出摘要

如果开发者预算充足的话,也可调用国产大模型,在线输出对话内容的摘要文字。

比如登录火山引擎的控制台页面 https://console.volcengine.com/ark ,开通文本模型 Doubao-1-5-lite-32k 的推理服务,会赠送50万Token的免费额度,足够初学者的入门使用。

在编写火山引擎的Python调用代码前,要先在命令行执行下面的pip安装命令:

复制代码
pip install --upgrade "volcengine-python-sdk[ark]"

然后编写下面的Python摘要在线生成代码:

复制代码
from volcenginesdkarkruntime import Ark

client = Ark(
    # 此为默认路径,您可根据业务所在地域进行配置
    base_url="https://ark.cn-beijing.volces.com/api/v3",
    # 此处请输入您在火山引擎上申请的 API KEY
    api_key="**********",
)

text = """
火山方舟是火山引擎推出的大模型平台,提供模型训练、推理、评测、精调等全方位功能与服务。
平台支持多种主流大模型接入,具有稳定可靠、安全互信的特点。
企业可以通过火山方舟快速构建自己的AI应用,降低开发成本与技术门槛。
"""

completion = client.chat.completions.create(
   # 此处请输入您创建的方舟推理接入点 ID
    model="doubao-1-5-lite-32k-******",
    messages=[
        {"role": "system", "content": "请对用户输入的内容做精简摘要,摘要文字压缩在50字以内"},
        {"role": "user", "content": text},
    ],
)
print("自动摘要:")
print("-", completion.choices[0].message.content)

运行上面的Python代码,输出日志结果如下:

复制代码
自动摘要:
- 火山方舟是火山引擎的大模型平台,支持多模型,功能全,能助企业快速构建AI应用,降成本与门槛。

可见在线大模型火山引擎输出了原始文本经过压缩后的摘要文字,并且支持通过提示词设置精简指标,比如摘要长度等等。

本系列的AI应用开发文章目录为《15天学会AI应用开发全目录(零基础小白,零Token消耗)》。

相关推荐
老猿AI洞察11 分钟前
阿里Qwen-Image-3.0发布:4.5K token长输入+10px小字渲染,AI生图终于能从“好看“走向“好用“了
人工智能·阿里云
淼澄研学21 分钟前
深入解析AI不确定推理:5种工程化落地方案与代码实战
人工智能
RSABLOCKCHAIN22 分钟前
AI Agents in LangGraph-1
人工智能·系统架构
四方云25 分钟前
以芒格多元思维破局营销内卷:用机制与工具实现收支稳态
人工智能·机器人·外呼系统·销售成长·拓客
SEONIB_Explorer30 分钟前
2026独立站AI收录底层逻辑:为什么内容可被Google收录,却无法被AI检索引用?
大数据·人工智能·跨境电商·视频制作·seonib·veonib
breeze jiang37 分钟前
Vibe Coding 越写越乱?用 Harness Engineering 给 AI 开发加上流程
人工智能
AINative软件工程37 分钟前
MCP Server 权限边界工程实践:OAuth、最小权限与工具沙箱,别让 Agent 拿到整台机器
架构·llm·ai编程
霍格沃兹测试开发学社测试人社区41 分钟前
2026被称“最难秋招季”?软件测试人,你的机会藏在这3个变化里
人工智能
天天爱吃肉821842 分钟前
AI Agent时代你的经验值多少钱?
人工智能·python·功能测试·学习·汽车
深念Y1 小时前
AI编程Agent工具定义对比分析
agent·ai编程·开源项目·工具·tool·hermes·ccsiwtch