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消耗)》。

相关推荐
Rocktech_ruixun3 分钟前
机器人数据采集能力取决于什么?瑞迅科技RK3588/3576核心板方案深度解析
人工智能·嵌入式硬件·机器人
thesky12345617 分钟前
27届大模型面试准备(三十二):RAG 进阶——从朴素 RAG 到 Agentic RAG 与多模态检索增强
大模型·rag·agentic rag·graph rag·进阶rag·self-rag·corrective rag
大飞记Python19 分钟前
AI大模型Token计费全解析:输入/输出、缓存命中、阶梯计价一文看懂
人工智能·缓存
Dave12054621 分钟前
Day17:Agent Memory高级设计——短期记忆、长期记忆与向量语义记忆
人工智能·学习
40岁资深老架构师尼恩22 分钟前
工业级 AI问数 AST语法 + 知识图谱语义+ 质量规则 三层安全校验 架构设计与实现
人工智能·安全·知识图谱
言乐625 分钟前
Python游戏水平测试辅助系统2
开发语言·windows·python·游戏·django
武子康28 分钟前
旧对话为什么没有恢复代码:Pi Session Tree 与上下文投影
人工智能
武子康29 分钟前
DeepSeek 把 Agent Core 也插件化了:Harness 的真正赌注
人工智能·llm·agent
wu_jing_sheng038 分钟前
哨兵卫星数据下载工具:基于CDSE的PySide6桌面应用开发实践
人工智能
小唔w39 分钟前
2026年AI培训行业观察:主流学习渠道一览
人工智能·学习