当前位置: 首页 > news >正文

.NET+AI | MEAI | 上下文压缩(7)

Chat Reducer:让 AI 对话突破上下文限制

一句话简介

Microsoft.Extensions.AI 的 Chat Reducer 通过智能压缩策略,在保持对话质量的前提下,有效控制上下文长度、降低成本并提升性能。


🎯 核心价值

  • 突破限制:解决 LLM 上下文窗口限制(如 GPT-4 的 8K/32K tokens)
  • 成本优化:减少输入 token,显著降低 API 调用成本
  • 性能提升:缩短上下文长度,加快模型推理速度
  • 智能压缩:保留关键信息,自动过滤冗余历史消息

📝 为什么需要 Chat Reducer?

在多轮对话场景中,我们面临三大挑战:

挑战 问题 Chat Reducer 方案
上下文限制 超出模型限制导致请求失败 智能压缩到安全范围
成本失控 输入 token 越多费用越高 过滤冗余,只保留必要信息
性能下降 过长上下文增加推理时间 减少处理负担,提升响应速度

典型场景:

  • 💬 长时间客服对话(用户反复咨询)
  • 🏥 医疗咨询(需要完整病史)
  • ⚖️ 法律咨询(案情细节不能丢失)
  • 🎓 教育辅导(需要追踪学习进度)

🏗️ 两种压缩策略

1. MessageCountingChatReducer(计数压缩器)

通过限制消息数量来控制对话长度。

核心特性:

  • 🔧 始终保留第一条系统消息
  • 🔧 保留最近 N 条用户/助手消息
  • 🔧 自动排除函数调用相关消息
  • 🔧 零延迟,无额外 API 成本

适用场景:

  • 客服机器人(只关注最近几轮)
  • 快速问答系统
  • 技术支持(问题独立,不需长期上下文)

2. SummarizingChatReducer(摘要压缩器)

利用 AI 自动生成摘要压缩历史对话。

核心特性:

  • 🔧 超过阈值时自动调用 AI 生成摘要
  • 🔧 摘要存储在 AdditionalProperties
  • 🔧 渐进式压缩(新摘要包含旧摘要)
  • 🔧 保留完整语义上下文

适用场景:

  • 医疗咨询(完整病史重要)
  • 法律咨询(案情细节关键)
  • 教育辅导(长期进度追踪)

💻 快速开始

1. 使用计数压缩器

using Microsoft.Extensions.AI;// 创建压缩器,保留最近 3 条消息
var countingReducer = new MessageCountingChatReducer(targetCount: 3);// 集成到 Chat Client
var client = baseChatClient.AsBuilder().UseChatReducer(reducer: countingReducer).Build();// 正常使用,自动压缩
var response = await client.GetResponseAsync(messages);

工作原理:

原始消息(13条)              压缩后(4条)
[System] 你是助手           [System] 你是助手
[User] 问题1                
[Assistant] 回答1           
[User] 问题2               
[Assistant] 回答2           
...                        [User] 问题5
[User] 问题5                [Assistant] 回答5
[Assistant] 回答5           [User] 问题6
[User] 问题6

2. 使用摘要压缩器

// 创建摘要压缩器
// targetCount: 保留最近 2 条消息
// threshold: 超过 targetCount + threshold 时触发摘要
var summarizingReducer = new SummarizingChatReducer(chatClient: baseChatClient,targetCount: 2,threshold: 1  // 超过 3 条时触发
);// 集成到 Chat Client
var client = baseChatClient.AsBuilder().UseChatReducer(reducer: summarizingReducer).Build();

工作原理:

原始消息(7条)                    压缩后(4条)
[System] 你是医疗助手            [System] 你是医疗助手
[User] 我头痛                    [Summary] 患者主诉头痛,
[Assistant] 可能是压力...                  睡眠不足,已建议休息
[User] 我睡眠不足                [User] 我眼睛干涩
[Assistant] 建议保证睡眠          [Assistant] 使用人工泪液...
[User] 我眼睛干涩
[Assistant] 使用人工泪液...

🔧 高级配置

1. 自定义摘要提示词

var reducer = new SummarizingChatReducer(baseChatClient, targetCount: 2);// 设置领域专用摘要提示词
reducer.SummarizationPrompt = """
请为以下医疗咨询对话生成简洁的临床摘要(不超过3句话):要求:
- 提取患者主诉症状和时长
- 记录已提供的初步建议
- 保留关键医学信息
- 使用专业医学术语格式: 【患者主诉】症状 | 【已知信息】背景 | 【初步建议】建议
""";

2. 参数调优建议

MessageCountingChatReducer:

策略 参数配置 适用场景
保守策略 targetCount: 10 上下文敏感场景
均衡策略 targetCount: 5 一般对话
激进策略 targetCount: 2 成本优先

SummarizingChatReducer:

策略 参数配置 效果
频繁摘要 threshold: 0 每次超过立即摘要
延迟摘要 threshold: 3 减少 API 调用

3. 与其他中间件组合

var client = baseChatClient.AsBuilder().UseChatReducer(reducer: summarizingReducer)  // 先压缩.UseFunctionInvocation()                       // 再处理函数.Build();

⚠️ 注意: Reducer 应放在管道前端,确保在调用 API 前完成压缩。


🏢 选择策略指南

场景对比表

场景 推荐 Reducer 原因
客服机器人 MessageCounting 只需最近几轮,历史价值低
技术支持 MessageCounting 问题独立,不需长期上下文
医疗咨询 Summarizing 需完整病史,摘要保证连续性
法律咨询 Summarizing 案情细节重要,不能丢失
教育辅导 Summarizing 学习进度需长期追踪
快速问答 MessageCounting 对话简短,不需复杂摘要

性能与成本对比

对比项 MessageCounting Summarizing
额外 API 调用 ✅ 无 ❌ 每次摘要 1 次
延迟 ✅ 0ms ⚠️ 1-3 秒
语义完整性 ⚠️ 可能丢失 ✅ 保留
成本 ✅ 低 ⚠️ 中等
适用场景 短期对话 长期对话

💡 优化技巧: 使用较小模型(如 GPT-3.5)专门用于摘要生成,降低成本。


💡 最佳实践

1. 函数调用消息自动保护

两种 Reducer 都会自动排除函数调用相关消息,避免破坏上下文:

// 这些消息会被自动跳过,不计入 targetCount
- FunctionCallContent
- FunctionResultContent

2. 多用户场景

为每个用户会话创建独立消息列表,共享 Reducer 实例:

// 全局共享的 Reducer(无状态)
var sharedReducer = new MessageCountingChatReducer(5);// 每个用户独立的消息历史
var user1Messages = new List<ChatMessage>();
var user2Messages = new List<ChatMessage>();

3. 自定义 Reducer

实现 IChatReducer 接口创建自定义压缩逻辑:

public class CustomReducer : IChatReducer
{public Task<IEnumerable<ChatMessage>> ReduceAsync(IEnumerable<ChatMessage> messages, CancellationToken cancellationToken){// 自定义压缩逻辑var reduced = messages.Where(m => /* 自定义条件 */).TakeLast(5);return Task.FromResult(reduced);}
}

⚠️ 注意事项

1. 原始消息不会被修改

ReduceAsync() 返回新列表,原始列表保持不变。如需审计,可在本地保留完整历史:

var allMessages = new List<ChatMessage>();      // 完整历史
var reducedMessages = await reducer.ReduceAsync(allMessages);
// allMessages 仍包含所有消息

2. 摘要压缩的信息损失

摘要依赖 LLM 理解能力,可能会:

  • ✅ 保留主要事实和语义
  • ⚠️ 丢失细微情感、口语化表达
  • ⚠️ 潜在的理解偏差

建议: 关键信息(订单号、金额)结合数据库存储,不完全依赖摘要。


3. 流式响应支持

Reducer 完全支持流式场景,在开始传输前自动完成压缩:

await foreach (var update in client.GetStreamingResponseAsync(messages))
{Console.Write(update.Text);
}

🎯 总结

  • 两种策略: MessageCounting(快速简单) vs Summarizing(语义完整)
  • 一行集成: 通过 UseChatReducer() 轻松启用
  • 灵活配置: 支持自定义提示词、参数调优、自定义实现
  • 生产就绪: 自动处理函数调用、支持流式、多用户安全

选择建议:

  • 💬 短期对话、成本敏感 → MessageCountingChatReducer
  • 🏥 长期咨询、语义重要 → SummarizingChatReducer
http://www.jsqmd.com/news/55258/

相关文章:

  • 广州比较好的包车公司推荐排行榜单?包车品牌 包车公司 包车服务商 包车平台 包车渠道
  • 靠谱的城际网约车公司推荐排行榜单? 城际网约车品牌 城际网约车公司 城际网约车服务商 城际网约车渠道
  • 2025 年佛山人像摄影培训推荐榜:路人贾摄影讲堂(佛山分公司)排名第一、摄影十杰创办
  • 【Linux】GCC编译FQS
  • 办公室设计公司有哪些?国内专业机构盘点
  • 深圳成长训练供应商推荐排行榜单?成长训练供应商 成长训练代理商 成长训练代理 成长训练渠道商 成长训练渠道 成长训练品牌代理商 成长训练系统代理商
  • 2025年低压电缆厂权威推荐榜单:中压电缆/防火电缆/电线电缆源头厂家精选
  • 2025年着色剂订做厂家权威推荐榜单:营养强化剂/肉制品改良剂/化妆品原料源头厂家精选
  • 深入解析:Spring Boot常见问题
  • 可靠的淘宝运营电商培训品牌推荐排行榜?淘宝运营电商培训品牌 淘宝运营电商培训公司 淘宝运营电商培训机构 淘宝运营电商培训中心 淘宝运营电商培训企业 淘宝运营电商培训单位
  • 2025学习机选购攻略:家长必看的品牌对比与推荐,让教育投入不花冤枉钱
  • 渲染管线
  • 评价高的灵活办公空间公司推荐排行榜单?灵活办公空间品牌 灵活办公空间公司 灵活办公空间推荐 灵活办公空间出租 灵活办公空间租赁
  • 2025年环保型融雪剂生产厂家权威推荐榜单:球形融雪剂‌/混合型融雪剂‌/氯化钙融雪剂‌源头厂家精选
  • 市面上靠谱的办公室公司推荐排行榜单?办公室品牌 办公室公司 办公室推荐 办公室出租 办公室租赁
  • 质量好的联合办公工位公司推荐排行榜单?联合办公工位品牌 联合办公工位公司 联合办公工位推荐 联合办公工位出租 联合办公工位租赁
  • Skywalking 链路追踪
  • Xbox Video Player Kodi All In One
  • 比较好的空间品牌设计服务商推荐排行榜单?空间品牌设计服务商 空间品牌设计品牌 空间品牌设计公司 空间品牌设计服务商 空间品牌设计平台 空间品牌设计渠道
  • 2025年度GEO优化行业报告总结:技术迭代与市场重构下的全域机遇
  • 2025年石方空气能爆破供应商权威推荐榜单:空气爆破能爆破硬石/空气能爆破材料/空气能爆破管源头企业精选
  • 2025年除雪剂厂家权威推荐榜单:融雪剂工业盐/有机融雪剂/环保型融雪剂源头厂家精选
  • 市面上符合越南标准防火卷帘门厂家排名有哪些
  • 2025年CSS新特性大盘点
  • 工业冷风机2025年度销量冠军榜单,汽车制造车间通风降温/家具厂车间通风降温/制造业车间通风降温/铁皮棚车间通风降温工业冷风机公司选哪家
  • 可靠的袋装骆驼奶粉工厂口碑推荐榜单?袋装骆驼奶粉工厂 袋装骆驼奶粉品牌 袋装骆驼奶粉牌子 袋装骆驼奶粉企业 袋装骆驼奶粉公司 袋装骆驼奶粉源头工厂
  • NVIDIA DriveOS 推动新一代智能汽车实现突破 - 实践
  • 2025年新疆高三艺术补习班学校权威推荐榜单:新建高三艺术集训班/新疆高三复读学校/新疆高三艺术学校精选
  • 口碑好的智能中高考加盟电话推荐排行榜单?智能中高考加盟电话哪家强 智能中高考加盟电话公司 智能中高考加盟电话机构智能中高考加盟电话中心 智能中高考加盟电话哪家靠谱 智能中高考加盟电话单位
  • 加快modelsim仿真速度的方法