Documentation Index
Fetch the complete documentation index at: https://docs.wolian.cc/llms.txt
Use this file to discover all available pages before exploring further.
什么是消息剪裁?
消息剪裁(Message Pruning)是一种自动管理对话历史长度的机制,在保持对话连贯性的同时,减少不必要的 Token 消耗。为什么需要剪裁?
降低成本
减少 Token 使用,降低 API 调用成本
提升性能
减少输入长度,加快模型响应速度
避免超限
防止超过模型的上下文长度限制
保持质量
移除冗余信息,保留关键上下文
启用剪裁
设置prune: true 启用消息剪裁:
剪裁选项
通过pruneOptions 自定义剪裁行为:
自定义剪裁配置
重要:如果不设置
pruneOptions,系统使用默认值(targetTokens: 80000),适用于大多数场景。只有在需要更激进的剪裁时才需要自定义配置。参数说明
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
targetTokens | number | 80000 | 触发剪裁的阈值。当消息总 Token 数超过此值时,会执行剪裁优化 |
maxOutputTokens | number | 100000 | 剪裁后消息的绝对上限(超过会警告但不阻止) |
preserveRecentMessages | number | 3 | 始终保留的最新消息数量(确保对话连贯性,建议至少保留 3 条最新消息) |
剪裁策略
系统会根据消息历史的特征自动选择最合适的优化策略:gentle_optimization - 温和优化(常用)
gentle_optimization - 温和优化(常用)
适用场景:消息总数适中,仅需轻度优化策略:
- 保留最近的 N 条消息(由
preserveRecentMessages控制) - 从较早的消息开始逐步移除
- 确保 user/assistant 消息对的完整性
- 系统提示词始终保留
aggressive_image_removal - 激进的图片移除
aggressive_image_removal - 激进的图片移除
适用场景:消息中包含大量图片或文件附件策略:
- 优先移除历史消息中的图片和文件 part
- 保留文本内容以维持对话连贯性
- 显著降低 Token 消耗(图片占用大量 tokens)
hybrid_optimization - 混合优化
hybrid_optimization - 混合优化
适用场景:消息历史既长又包含附件策略:
- 结合移除旧消息和移除附件
- 平衡对话历史和 Token 消耗
- 根据消息重要性动态调整
aggressive_truncation - 激进截断
aggressive_truncation - 激进截断
适用场景:消息总数远超阈值,需要大幅减少策略:
- 仅保留最近的核心消息
- 移除大部分历史对话
- 优先保证响应速度和成本
minimal_cleanup - 最小清理
minimal_cleanup - 最小清理
适用场景:消息总数略超阈值策略:
- 最小化的调整
- 仅移除少量最早的消息
- 最大程度保留上下文
检查剪裁结果
响应头X-Message-Pruned 指示是否进行了剪裁:
完整示例
- 使用默认配置(推荐)
- 自定义配置(更激进的剪裁)
大多数情况下,使用默认配置即可:
默认配置:
targetTokens: 80000, preserveRecentMessages: 3。这适用于绝大多数场景,无需手动调整。最佳实践
1️⃣ 根据场景调整参数
1️⃣ 根据场景调整参数
不同场景使用不同的剪裁配置:
2️⃣ 监控剪裁效果
2️⃣ 监控剪裁效果
记录剪裁前后的消息数量和 Token 变化:
监控剪裁效果
3️⃣ 结合 Token 统计优化成本
3️⃣ 结合 Token 统计优化成本
使用返回的
usage 信息监控和优化成本:Token 成本监控
成本优化建议:
- 定期监控每次请求的 Token 使用量
- 如果输入 tokens 持续偏高,考虑降低
targetTokens - 平衡成本与对话质量,避免过度剪裁
4️⃣ 动态调整剪裁策略
4️⃣ 动态调整剪裁策略
根据实际使用情况动态调整剪裁参数:
动态调整策略
注意事项
性能对比
以下是使用自定义激进配置(targetTokens: 40000)的性能对比:
| 场景 | 不剪裁 | 启用剪裁(激进) | 节省 |
|---|---|---|---|
| 100 条消息对话 | ~25,000 tokens | ~10,000 tokens | 60% |
| 50 条消息对话 | ~12,000 tokens | ~8,000 tokens | 33% |
| 20 条消息对话 | ~5,000 tokens | 无需剪裁 | - |
| 包含图片的 50 条对话 | ~45,000 tokens | ~15,000 tokens | 67% |
说明:
- 上表基于
targetTokens: 40000的自定义配置,非默认值 - 使用默认配置(
targetTokens: 80000)时,100 条消息对话(~25k tokens)不会触发剪裁 - 图片和文件附件占用大量 tokens,使用
aggressive_image_removal策略可显著降低成本 - 实际节省比例取决于消息长度、内容类型和配置参数
成本节省示例
以 Claude 3.7 Sonnet 为例(输入 $3/1M tokens,输出 $15/1M tokens):| 场景 | 原始成本 | 剪裁后成本 | 节省金额 |
|---|---|---|---|
| 1000 次调用 | $75.00 | $30.00 | $45.00 (60%) |
| 10000 次调用 | $750.00 | $300.00 | $450.00 |
| 100万次调用 | $75,000.00 | $30,000.00 | $45,000.00 |
下一步
消息格式
了解消息的结构和格式
性能优化
学习更多性能优化技巧

