工具返回值如何压缩并尽量保留信息?

未标记

询问 AI

考查重点:任务相关信息保留与按需回读。先裁掉无关字段与重复,保任务所需数值单位、条件、错误和来源;大结果外置并返回摘要与引用,需要时分页回读,以任务检查信息未丢

本题目录

参考答案

核心回答

我会先判断任务需要什么信息,再做结构化精简、原文外置和按需回读,最后才考虑用模型摘要。压缩后的内容应足够支持下一步决策,完整数据则保存在可访问、可追溯的位置。

具体做法是:

  1. 先减少不必要的返回:工具支持字段选择、筛选、分页、去重和聚合,避免把无关数据送进模型。
  2. 保留关键内容和结果说明:任务所需字段、数字与单位、条件和例外,以及工具状态、数据范围、总量和是否截断。
  3. 大结果外置:给模型摘要或预览,同时提供原始结果的标识、版本和读取方式,需要细节时再查询。
  4. 用任务验证压缩质量:检查结论、数值和引用是否一致,重要细节能否找回。自然语言摘要不能保证任意信息都不丢失。

例如工具返回五六千只股票,而用户要求全量数据,我会生成完整的表格文件或提供分页结果,再让模型说明范围和使用方法。只给一段摘要或前几十条,不能算满足了全量要求。

展开说明

1. 压缩目标是支持任务,不只是减少字符数

先看工具结果接下来用于什么:做统计、比较几个对象、定位异常,还是向用户交付全部记录。不同任务需要保留的信息不同。用于精确计算的数据应交给程序计算,不能先让模型总结,再从总结里重新算总额。

预算也要看整次模型请求,包括指令、历史、工具定义和其他上下文,并为输出预留空间。单条结果过大可以在工具返回后处理;很多结果累积过长,则还需要模型调用前的上下文管理。触发条件应按实际模型窗口、任务和结果分布设置,没有通用的固定字符数。

2. 优先做可检查的结构化精简

如果问题只涉及订单号、金额和状态,就让工具只返回这些字段。若任务是按地区汇总,可由查询或程序返回汇总结果,并保留统计口径、时间范围和原始记录入口。去重时也要明确判断依据,不能把内容相似但时间、对象或版本不同的记录随意合并。

返回结果可以包含:调用标识、状态、筛选条件、数据时间、总记录数、当前页或覆盖范围、任务所需数据,以及 truncated 和原文引用。并非每个工具都必须用同一套字段,但模型应能分清“完整结果”“部分结果”“合法空数据”和“调用失败”。错误码和失败原因不能被一句“暂无相关信息”替代。

当前 Deep Agents 文档展示了把大工具结果保存到后端、向模型返回位置和预览的做法。DeepSeek Harness 也有确定性裁剪工具结果、保留原始事件与调用关联的设计。首尾截断可以控制上下文大小,但中间内容仍可能是关键证据,因此必须清楚标注省略范围并支持回查。

3. 原文外置以后,要真的能取回来

原始数据可以保存在文件、对象存储或查询结果集中,摘要关联稳定的结果标识、数据版本和记录范围。读取工具支持按记录 ID、字段、页码或行区间获取,模型不必每次重新加载全量。

引用应指向此次调用的数据快照或明确的版本。若只能重新查询实时系统,应说明数据可能发生变化;否则第一次统计和第二次回读可能不再对应同一批数据。原始结果的保留时间要覆盖任务需要,读取时沿用用户和任务的访问范围,不能因换成文件链接就绕过权限。

“保存在上下文外”解决的是容量问题;模型需要细节时仍要主动读取。只有一个路径,却没有相应读取能力或文件已经被清理,就不能算可恢复。

4. 需要语义摘要时,保留条件和证据位置

对长网页、日志或检索材料,可以按当前子任务提取相关事实,再给出简短摘要。应保留来源、时间、数字单位、否定词、适用条件、重要例外,以及信息冲突或尚未确定的部分。关键结论关联到原文段落、记录或行区间,便于引用和核对。

摘要可以写成“发现了什么、依据在哪里、还有什么缺口”,不必复述全部过程。原文中的猜测不能被压成确定事实,工具返回的指令性文字也不应升级成系统指令。压缩本身不承担授权和提示注入防护的全部职责。

历史摘要还要保留工具调用与结果之间的必要关联,避免留下一个孤立结果,让后续模型误认它回答了另一个问题。对仍在使用的关键片段,可以直接保留原文;没有必要对所有内容连续多轮摘要,积累细节偏差。

5. 全量数据和较小窗口怎样处理?

如果用户要求全量股票列表,应先确认范围、日期和所需字段,再由工具或程序生成完整 CSV、表格或分页输出。模型负责解释结果和给出入口,可以展示少量样例,但应明确样例不是全部。若结果需直接在界面展开,则由分页或文件预览承担大量记录展示。

换成较小上下文窗口的模型时,重新计算输入预算,减少一次读取量、缩小当前子任务范围,必要时分批处理并通过稳定 ID 合并。跨批统计、去重和完整导出仍由程序处理,不能靠多段摘要拼接来承诺逐条不丢。

验证可用一组代表性工具结果:包含长表格、关键细节在中间、否定条件、空数据、部分失败和版本变化。分别比较压缩前后的任务答案、关键字段与统计值,检查引用回读是否成功,并观察压缩带来的额外延迟。压缩率只是辅助指标,不能代替任务正确性。

常见追问

能保证压缩后完全不丢信息吗?

任意自然语言摘要不能作这种保证。若要求逐条无损,就保留完整原始数据,通过结构化查询、分页或文件交付使用它;摘要仅作为索引和阅读入口。对于特定任务,可以通过字段约束和校验保证所需信息完整,但要明确保证的范围。

为什么不直接截取前几千个字符?

可以把截断作为有标记的预览,但不能默认它足以支持回答。结论、异常和限定条件可能在中间或末尾。应保留总量、截断说明和原文入口,再根据任务读取有关位置。

工具结果已保存到日志,为什么模型还会遗漏?

模型只依据当前提供的上下文作答。日志里有原文,并不等于模型已经读取;摘要还需要给出能定位的引用,工具也要支持按需回查。对于必须核对的结论,可以在生成最终答案前显式读取证据。

对应教程

  • 研搜:中间件机制与 Skills 配置:阅读工具返回后的结果改写、上下文进入模型前的处理,以及历史摘要的触发和保留范围,理解这些动作可放在执行链路的什么位置。大结果外置和精确回读还需结合所用后端与工具实现。

参考资料

  • 国内:JavaGuide:上下文工程:依据工具观察与摘要中对参数、错误、来源和回查信息的保留,说明正文中压缩结果仍需留下的判断依据。
  • 国内:ranxi2001:记忆与上下文:借鉴中间结果外置、按需恢复与关键约束保留,说明正文中短摘要如何配合上下文外的原始材料。
  • 国内:DeepSeek Harness:压缩与裁剪:依据固定版本的工具结果裁剪与事件保存机制,说明正文中精简表示如何关联底层记录,以及截断仍会省略内容。
  • 国外:Anthropic:Effective context engineering:依据轻量引用按需读取和过度摘要的细节损失,说明正文中如何按任务评估摘要质量及回读成本。
  • 国外:LangChain:Deep Agents context engineering:借鉴大结果外置、位置预览与历史摘要的分工,说明正文中如何分别控制单条大结果和长期历史增长。

相关面经

4 篇

腾讯

后端开发工程师
一面
查看原面经 →
追问
遇到很长的 Tool Result,怎么压缩?

微店

AI 全栈开发工程师
校招秋招二面
查看原面经 →
Agent 工具返回大量数据时,如何避免上下文快速膨胀?

东方财富

AI 应用开发工程师
校招秋招一面
查看原面经 →
追问
金融场景工具返回五六千只 A 股,用户要求全量输出,压缩的信息损失怎么办?

名创优品

Agent 开发工程师
实习秋招一面
查看原面经 →
在Agent中工具的返回值应该怎么做压缩,怎么保证不丢失信息

收录题集

2 份

记忆与上下文:长对话不丢信息的实战方案

Onefly · zero2Agent · 1 条原题

查看题集 →

工具管理:参数校验、工具路由与百级工具库

Onefly · zero2Agent · 1 条原题

查看题集 →

相关题目

4 题