Skip to main content

什么是消息剪裁?

消息剪裁(Message Pruning)是一种自动管理对话历史长度的机制,在保持对话连贯性的同时,减少不必要的 Token 消耗。

为什么需要剪裁?

降低成本

减少 Token 使用,降低 API 调用成本

提升性能

减少输入长度,加快模型响应速度

避免超限

防止超过模型的上下文长度限制

保持质量

移除冗余信息,保留关键上下文

启用剪裁

设置 prune: true 启用消息剪裁:

剪裁选项

通过 pruneOptions 自定义剪裁行为:
自定义剪裁配置
重要:如果不设置 pruneOptions,系统使用默认值(targetTokens: 80000),适用于大多数场景。只有在需要更激进的剪裁时才需要自定义配置。

参数说明

参数理解
  • targetTokens:小于此值不会触发剪裁,大于此值才开始优化
  • maxOutputTokens:剪裁的最终目标上限,但不是硬性限制
  • preserveRecentMessages:无论如何都会保留的消息数,设置过小可能影响对话连贯性

剪裁策略

系统会根据消息历史的特征自动选择最合适的优化策略
适用场景:消息总数适中,仅需轻度优化策略
  • 保留最近的 N 条消息(由 preserveRecentMessages 控制)
  • 从较早的消息开始逐步移除
  • 确保 user/assistant 消息对的完整性
  • 系统提示词始终保留
适用场景:消息中包含大量图片或文件附件策略
  • 优先移除历史消息中的图片和文件 part
  • 保留文本内容以维持对话连贯性
  • 显著降低 Token 消耗(图片占用大量 tokens)
适用场景:消息历史既长又包含附件策略
  • 结合移除旧消息和移除附件
  • 平衡对话历史和 Token 消耗
  • 根据消息重要性动态调整
适用场景:消息总数远超阈值,需要大幅减少策略
  • 仅保留最近的核心消息
  • 移除大部分历史对话
  • 优先保证响应速度和成本
适用场景:消息总数略超阈值策略
  • 最小化的调整
  • 仅移除少量最早的消息
  • 最大程度保留上下文
自动策略选择:您无需手动选择策略,系统会根据消息历史的长度、内容类型(是否包含图片)、Token 总数等因素自动选择最优策略。

检查剪裁结果

响应头 X-Message-Pruned 指示是否进行了剪裁:

完整示例

大多数情况下,使用默认配置即可:
默认配置targetTokens: 80000, preserveRecentMessages: 3。这适用于绝大多数场景,无需手动调整。

最佳实践

不同场景使用不同的剪裁配置:
推荐策略
  • 默认配置适用于大多数场景(80000 tokens 阈值)
  • 只有在明确需要更激进的成本控制时才降低 targetTokens
  • preserveRecentMessages 建议保持在 3-8 之间
记录剪裁前后的消息数量和 Token 变化:
监控剪裁效果
使用返回的 usage 信息监控和优化成本:
Token 成本监控
成本优化建议
  • 定期监控每次请求的 Token 使用量
  • 如果输入 tokens 持续偏高,考虑降低 targetTokens
  • 平衡成本与对话质量,避免过度剪裁
根据实际使用情况动态调整剪裁参数:
动态调整策略
动态策略优势
  • 短对话无需剪裁,保持完整上下文
  • 长对话自动优化,降低成本
  • 根据业务场景灵活调整

注意事项

剪裁的权衡考虑剪裁会移除部分对话历史,可能影响:
  • 对早期内容的引用(AI 无法访问已删除的消息)
  • 需要完整上下文的任务(如长篇文档分析)
  • 多轮复杂推理(依赖历史推理步骤)
建议
  • 在成本敏感的场景中优先使用剪裁
  • 关键对话或需要完整上下文的任务中谨慎使用
  • 通过 preserveRecentMessages 保留足够的最新消息(建议 ≥ 3)

性能对比

以下是使用自定义激进配置targetTokens: 40000)的性能对比:
说明
  • 上表基于 targetTokens: 40000 的自定义配置,非默认值
  • 使用默认配置targetTokens: 80000)时,100 条消息对话(~25k tokens)不会触发剪裁
  • 图片和文件附件占用大量 tokens,使用 aggressive_image_removal 策略可显著降低成本
  • 实际节省比例取决于消息长度、内容类型和配置参数

成本节省示例

以 Claude 3.7 Sonnet 为例(输入 $3/1M tokens,输出 $15/1M tokens):
对于高频调用的应用,启用消息剪裁可以显著降低 API 成本,特别是在长对话和包含附件的场景中。

下一步

消息格式

了解消息的结构和格式

性能优化

学习更多性能优化技巧