如何降低 Agent 的 Token 成本?
降低 AI Agent(智能体)的 Token 成本是目前大模型应用落地中最关键的优化环节之一。Agent 通常需要多次循环调用 LLM、携带大量上下文(Memory)以及处理复杂的工具定义,因此消耗远高于普通对话。
以下是从模型选择、Prompt 优化、架构设计、缓存机制等多个维度总结的降低成本策略:
1. 模型策略:混合调度 (Model Routing)
这是最直接且效果最显著的方法。不要让昂贵的模型(如 GPT-4o, Claude 3.5 Sonnet)做所有事情。
- 大小模型分工:
- 大脑(Controller): 使用强模型(GPT-4o)进行任务规划、复杂推理和工具选择。
- 手脚(Worker): 使用小模型(GPT-4o-mini, Claude 3 Haiku, Llama 3-8B)执行具体的、简单的子任务(如文本摘要、格式转换、简单分类)。
- 模型路由(Router): 在 Agent 入口处增加一个极其轻量的分类器(甚至可以是基于规则或极小模型),判断用户意图。如果是简单闲聊,直接分发给廉价模型。
2. 上下文与 Prompt 优化 (Context Optimization)
Agent 的 System Prompt 和工具定义通常非常长,每次对话都会重复计费。
- 利用 Prompt Caching (上下文缓存):
- 原理: Anthropic (Claude) 和 OpenAI 现在都支持缓存。如果你的 System Prompt、工具定义和长文档(RAG背景)是不变的,API 会缓存这些 Input Token。
- 效果: 后续调用中,缓存部分的 Token 价格通常会有 50% - 90% 的折扣,且响应速度更快。
- 精简工具定义 (Tool Schema):
- 很多开发者直接把 API 的完整 Swagger 文档扔给 LLM。
- 优化: 删除不必要的参数描述,简化字段名。只保留 LLM 理解该工具所需的最小信息量。
- Prompt 压缩技术:
- 使用类似
LLMLingua这样的库,在发送给 LLM 之前,通过小模型识别并删除 Prompt 中对语义影响不大的停用词或冗余句子。
- 使用类似
3. 记忆管理 (Memory Management)
Agent 的记忆(History)随着对话轮数增加会呈线性甚至指数级增长。
- 滑动窗口 (Sliding Window): 仅保留最近 轮对话,丢弃更早的内容。
- 摘要记忆 (Summarization): 当对话超过一定长度时,触发一个后台任务(用廉价模型),将前 10 轮对话总结成一段 200 字的摘要,替换掉原始对话记录。
- 关键信息提取 (Entity Extraction): 不要保存整段对话,而是提取关键状态(如:用户叫什么、喜欢什么、当前任务进度)存入 JSON 或数据库,Prompt 中只带这些状态数据。
4. RAG (检索增强) 优化
如果 Agent 需要查阅文档,不要把整篇文章塞进去。
- 提高检索精度 (Re-ranking): 先检索出 Top 20 个片段,然后用一个廉价的 Re-rank 模型(如 BGE-Reranker)精排,只把最相关的 Top 3 发给 LLM。
- 切片优化: 减小 Chunk Size。与其给 LLM 一大段包含无关信息的文本,不如给几段精准的小切片。
5. 架构与流程控制 (Flow Control)
防止 Agent 陷入死循环或过度思考。
- 限制最大迭代次数 (Max Iterations): 强制规定 Agent 最多思考/调用工具 5-10 次。如果未解决,强制返回当前最佳答案或请求人工干预,防止死循环烧钱。
- 让代码代替 LLM 计算:
- 不要让 LLM 逐字生成复杂的数学计算或逻辑推演(Token 消耗大且易错)。
- 做法: 让 LLM 编写 Python 代码,在本地沙箱运行代码得到结果。代码通常比自然语言短得多。
- 结构化输出 (JSON Mode): 强制模型输出 JSON。这不仅便于程序解析,通常也能减少模型输出“好的,这是您的结果...”这类无用的废话 Token。
6. 语义缓存 (Semantic Caching)
针对用户侧的优化。
- 原理: 在调用 LLM 之前,先在一个向量数据库(如 Redis, Qdrant)中查询是否有语义相似的历史问题。
- 效果: 如果用户问了“如何重置密码”,且库里已有类似问答,直接返回缓存结果。Token 消耗为 0,延迟极低。
7. 微调 (Fine-tuning)
当业务稳定后,这是终极省钱大招。
- 蒸馏 (Distillation): 使用 GPT-4 生成高质量的数据(推理过程+结果),用来微调一个开源小模型(如 Llama 3 8B 或 Mistral)。
- 效果: 微调后的小模型在特定任务上可以达到接近大模型的效果,但推理成本可能只有大模型的 1/10 甚至 1/50。
总结:优化路线图
- 第一阶段(立竿见影): 开启 Prompt Caching,设置最大迭代次数,使用滑动窗口限制记忆长度。
- 第二阶段(架构调整): 引入 Router,将简单任务分流给 GPT-4o-mini/Haiku;精简 Tool Definition。
- 第三阶段(深度优化): 实施 语义缓存,对高频场景进行小模型微调。