
在 C# 中实现对话摘要以减少 Token 消耗在 C# 中调用大模型如千问、DS、智谱等时对话摘要是一种有效的Token 消耗优化策略。通过将长对话压缩为摘要可以显著减少 Token 使用量同时保留关键信息。 一、实现方式使用ConversationSummaryMemoryConversationSummaryMemory是 LangChain 提供的一种记忆机制它会自动对对话历史进行摘要从而减少 Token 消耗。1. 安装依赖dotnet add package LangChain --version 0.1.172. 初始化模型与记忆using LangChain.ChatModels; using LangChain.Memory; // 初始化千问模型 var llm new ChatTongyi( model: qwen-turbo, temperature: 0.7, maxTokens: 1024 ); // 初始化摘要记忆 var summaryMemory new ConversationSummaryMemory( llm: llm, maxTokenLimit: 2000 // 设置最大 Token 限制 );3. 保存上下文// 保存用户输入和模型输出 summaryMemory.SaveContext( new Dictionarystring, object { { input, 你好 } }, new Dictionarystring, object { { output, 您好有什么需要帮助的 } } );4. 加载记忆// 加载记忆并获取摘要 var history summaryMemory.LoadMemoryVariables(new Dictionarystring, object()); Console.WriteLine(history[summary]); 二、优化策略减少 Token 消耗1. 设置maxTokenLimit通过设置maxTokenLimit可以控制每次调用 LLM 时的 Token 数量避免超出模型限制。var summaryMemory new ConversationSummaryMemory( llm: llm, maxTokenLimit: 2000 // 控制 Token 数量 );2. 使用轻量级模型生成摘要对于摘要生成可以使用轻量级模型如qwen-turbo来降低 Token 消耗。var summaryModel new ChatTongyi( model: qwen-turbo, temperature: 0.7, maxTokens: 512 );3. 避免全量上下文传递在调用 LLM 时只传递摘要内容而不是完整的对话历史。var response await llm.InvokeAsync( prompt: 根据以下摘要回答问题 history[summary], temperature: 0.7 ); 三、完整示例代码using System.Collections.Generic; using LangChain.ChatModels; using LangChain.Memory; class Program { static async Task Main(string[] args) { // 初始化千问模型 var llm new ChatTongyi( model: qwen-turbo, temperature: 0.7, maxTokens: 1024 ); // 初始化摘要记忆 var summaryMemory new ConversationSummaryMemory( llm: llm, maxTokenLimit: 2000 ); // 保存上下文 summaryMemory.SaveContext( new Dictionarystring, object { { input, 你好 } }, new Dictionarystring, object { { output, 您好有什么需要帮助的 } } ); // 加载记忆 var history summaryMemory.LoadMemoryVariables(new Dictionarystring, object()); Console.WriteLine(摘要内容: history[summary]); // 使用摘要内容调用 LLM var response await llm.InvokeAsync( prompt: 根据以下摘要回答问题 history[summary], temperature: 0.7 ); Console.WriteLine(LLM 响应: response); } } 四、总结在 C# 中实现对话摘要以减少 Token 消耗可以通过以下方式使用ConversationSummaryMemory实现对话摘要。设置maxTokenLimit控制 Token 数量。使用轻量级模型生成摘要降低 Token 消耗。避免全量上下文传递只传递摘要内容。这些方法不仅能够显著降低 Token 消耗还能提升系统的效率和稳定性。互动话题你在 C# 中调用 AI 时遇到过哪些 Token 消耗过高的问题欢迎在评论区分享你的经验参考来源C#实现AI记忆与Token优化C# WebAPI中的Token认证与数字签名实现每次提问都会烧Token给AI装上这个“外挂”Token消耗直降近99%【AI时代】为了解决Clawdbot消耗大量token的问题可以采取以下优化策略RAG系统Token消耗优化实战从5000降至62%