当前位置:首页 > 文章列表 > 科技周边 > 人工智能 > 多轮对话压缩历史消息时保留任务状态的提示设计

多轮对话压缩历史消息时保留任务状态的提示设计

来源:17golang原创 2026-09-20 13:07:44 0浏览 收藏

多轮对话压缩历史消息时,真正要保留的不是“上一段对话的缩写”,而是下一轮任务能够继续执行的状态。实践中建议把摘要固定成六类字段:任务目标、已确认决策、硬约束、未完成动作、待确认问题、证据引用。这样即使删掉几十轮闲聊,模型仍知道做到了哪里、不能改什么、下一步要补哪项信息。

Hugging Face Transformers 的聊天输入使用带有 rolecontent 的消息列表,随后由 chat template 转换为模型需要的序列。摘要最好作为独立的状态消息注入,而不是把所有历史重新拼进一个超长字符串。

官方参考地址:https://huggingface.co/docs/transformers/main/chat_templating

要点速览
  • 压缩目标是保留可恢复状态,不是逐句复述历史。
  • 决策、约束和未完成动作必须分栏,不能混成一段自然语言。
  • 恢复时使用“状态摘要 + 最近原文”的组合,并检查待办是否闭环。

先把历史消息拆成可恢复的状态字段

摘要提示的第一条规则是“只写会影响后续动作的事实”。例如用户已经确认使用 PostgreSQL,就应落在“已确认决策”;“暂时不考虑迁移”应落在“硬约束”;“还没有提供生产数据样本”则属于“待确认问题”。三者混在一段话里,恢复时很容易被模型重新解释。

建议使用固定键名,并允许空数组,不要为了让摘要看起来完整而编造内容。下面的模板是提示设计示例,字段名稳定比修辞更重要:

# 这个函数只负责生成摘要提示;它不执行模型调用,也不替代业务校验
def build_summary_prompt(messages):
    return f"""
你是对话状态整理器。只根据给定消息提取已明确说出的事实,禁止猜测。
输出 JSON,必须包含:goal、decisions、constraints、open_actions、questions、evidence。
每个数组元素都写成可独立理解的一句话;没有内容就输出空数组。
保留否定约束、数值、文件名和未完成动作的负责人;不要复述寒暄和重复背景。

历史消息:
{messages}
"""

这里的关键不是让模型“总结得像人”,而是让输出能被程序和下一轮提示稳定读取。若某条结论没有明确来源,就放入 questionsevidence,不要悄悄升级为已确认决策。

多轮对话摘要的目标决策约束待办问题和证据六类状态字段结构说明图
图1:结构说明图,六类状态字段共同组成可恢复的对话任务状态,不是运行截图。

用固定提示模板区分事实、约束和未完成动作

压缩失败通常不是摘要太短,而是优先级没有写进提示。可以把规则分成三层:第一层保留用户明确决定;第二层保留会导致返工的限制;第三层记录下一步和阻塞点。对于冲突消息,保留最近一次明确决定,同时把冲突写进 questions,等待用户确认。

摘要恢复时,不要把它伪装成用户原话。可以使用单独的状态消息,再接最近几条原文:

# 恢复顺序让模型先看到状态,再看到最近语境;recent_messages 只保留必要窗口
def build_context(state_summary, recent_messages):
    state_text = "对话状态(仅使用其中已确认事实):\n" + state_summary
    recent_text = "最近消息(用于补充语境,不覆盖硬约束):\n" + recent_messages
    return [
        {"role": "system", "content": state_text},
        {"role": "user", "content": recent_text},
    ]

如果使用支持 chat template 的模型,仍应遵循目标模型要求的消息角色和模板,不要自行拼接特殊控制符。状态摘要解决的是内容记忆,chat template 解决的是消息格式,两者不能互相替代。

按触发阈值和质量检查决定压缩粒度

不要等到上下文已经超限才压缩。可以在预计输入 token 达到窗口的 60%~70% 时触发一次,先保留最近一小段原文,再生成状态摘要。这里的比例是工程起点,不是所有模型都适用;真正上线前要结合模型窗口、工具调用长度和输出预留空间调整。

压缩结果至少做四项轻量检查:goal 不为空、硬约束没有消失、每个 open action 都有动作描述、questions 没有被错误地写入 decisions。高风险任务还应保留对应的原文片段或消息 ID,方便追溯,而不是只保存模型改写后的句子。

对话状态摘要与最近原文在恢复上下文中的边界关系结构说明图
图2:边界结构说明图,摘要负责稳定状态,最近原文负责补充语境,质量检查负责拦截状态丢失。

用决策表选择摘要加原文的组合方式

场景推荐组合必须保留不适合
普通问答、低风险短摘要 + 最近 4~8 条消息目标、结论、未答问题保存全部闲聊
代码修改或配置迁移结构化摘要 + 关键代码片段文件名、约束、待改位置、验证命令只保留自然语言结论
多人协作或长流程结构化摘要 + 消息 ID/证据负责人、依赖、阻塞项、决策来源把推测写成已完成

常见误区是只压缩“用户消息”,丢掉助手已经承诺的动作;或者把工具返回值全文塞进摘要,导致摘要再次膨胀。更稳妥的做法是只保存工具结果中的结论、标识和可复查引用,并给每个待办保留状态:pendingblockeddone

常见问题

摘要越短,模型就越不容易跑偏吗?

不一定。删除硬约束和未完成动作会让摘要更短,却会增加返工。应先保证状态字段完整,再压缩重复背景。

能不能只保留最后一条 assistant 消息?

不建议。最后一条消息可能只包含局部回答,无法覆盖用户的否定条件、尚未确认的分支和待办责任人。

摘要里要不要保留原始对话全文?

低风险任务通常不需要;代码、合规或争议场景应保留消息 ID、关键片段或外部存档引用,让摘要可以被追溯。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go regexp贪婪匹配吞掉多个字段时的收敛写法Go regexp贪婪匹配吞掉多个字段时的收敛写法
上一篇
Go regexp贪婪匹配吞掉多个字段时的收敛写法
Go http.CookieJar隔离多用户会话状态的实现方式
下一篇
Go http.CookieJar隔离多用户会话状态的实现方式
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    135次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    200次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    146次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    126次使用
  • CMMLU中文大模型评估基准:功能、使用教程与应用场景解析
    CMMLU
    深入了解CMMLU中文评估基准,涵盖67个学科主题,提供数据集下载、Zero-shot/Five-shot评估方法及排行榜,助力优化中文语言模型性能。
    111次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码