优化 Agent 工作流以降低成本(Token 消耗),本质上是在进行 “Token 经济学” 的治理。核心原则只有一条:“好钢用在刀刃上”——只在必须使用推理能力的地方调用昂贵模型。
我们可以从架构设计、模型分层、上下文管理、提示工程四个维度进行深度压缩:
一、 架构设计:能不用 LLM 就别用 (Bypass & Offload)
最省钱的调用是“不调用”。很多时候我们滥用了 LLM 去做传统代码就能做的事。
- 纯代码/正则过滤器 (Heuristic/Regex First)
- 场景: 检查用户输入是否包含邮箱、是否为空、格式是否正确。
- 优化: 在进入 LLM 之前,先跑一层 Python 校验函数。
- 效果: 拦截掉 30% 无效或格式错误的请求,成本为 0。
- 语义缓存 (Semantic Caching)
- 原理: 用户的提问往往是重复的(例如“怎么请假?”)。传统的 Key-Value 缓存要求完全一致,而语义缓存利用向量相似度。
- 做法:
- 计算用户 Query 的向量。
- 在向量库(Redis/Pinecone)查找是否有相似度 > 0.95 的历史问答。
- 如果有,直接返回缓存的答案。
- 工具推荐:
GPTCache。 - 收益: 在高频重复场景下,可减少 40%-60% 的 API 调用。
- 确定性路由 (Deterministic Routing)
- 原理: 对于意图非常明确的指令(如“搜索客户张三”),直接映射到 SQL 查询工具,跳过 LLM 的规划层。
- 实现: 建立关键词映射表或分类树。
二、 模型分层:模型级联 (Model Cascading/Waterfall)
不要让 GPT-4o 做所有事。建立一个由小模型到大模型的升级机制。
- Router/Classifier 使用小模型
- 策略: 使用
Llama-3-8B(本地) 或GPT-4o-mini(廉价 API) 专门负责意图分类、工具选择。只有当任务被判定为“复杂推理”时,才交给大模型。 - 成本对比: GPT-4o-mini 的价格通常是 GPT-4o 的 1/30。
- 策略: 使用
- 分级重试机制 (Fallback Pattern)
- 流程:
- 优先调用廉价模型尝试解决。
- 编写一个快速的校验函数(Checker)检查结果(如是否符合 JSON 格式)。
- 只有当廉价模型失败或校验不通过时,才降级(Upgrade)调用昂贵模型进行“救火”。
- 流程:
三、 上下文管理:只传该传的 (Context Pruning)
Prompt 中的 Context(历史记录、参考文档)通常是 Token 消耗的大头。
- 上下文压缩 (Summarization over Memory)
- 策略: 不要把过去 10 轮对话原封不动地发给 LLM。
- 优化: 使用 LangChain 的
SummaryMemory,每隔 3 轮对话,让一个小模型把之前的对话总结成一段 100 字的摘要,替换掉原始记录。
- RAG 检索优化 (Reranking)
- 场景: 知识库检索出了 20 个文档片段,如果全部塞入 Prompt,Token 爆炸且干扰推理。
- 优化: 引入 Rerank 模型 (如 BGE-Reranker,非生成式,极快)。先检索 50 个,用 Rerank 精选出相关性最高的 Top-3 喂给 LLM。
四、 提示工程:批处理与结构化 (Prompt Engineering)
- 批处理 (Batching)
- 场景: 需要对列表中的 5 条数据做同样的分析。
- Bad: 写一个
for循环,调用 5 次 LLM。 - Good: 将 5 条数据合并到一个 Prompt 中:“请依次分析以下 5 条数据,并以 JSON 列表格式返回结果。” -> 1 次调用。
- 强制简短输出 (Output Constraints)
- LLM 的计费通常 Input 便宜,Output 贵。
- 技巧:
- System Prompt 加入:“Do not imply. Do not explain. Output JSON only.”(不要废话,不要解释,只给 JSON)。
- 使用 OpenAI 的
json_object模式,避免模型生成各种“好的,这是您的结果…”之类的客套话(这些都是钱)。
成本压缩对照表
| 优化手段 | 实施难度 | 预期降本幅度 | 适用场景 |
| Prompt 精简 & JSON模式 | 低 | 10% – 20% | 所有场景 |
| 小模型路由 (GPT-4o-mini) | 中 | 40% – 60% | 意图识别、简单抽取 |
| 语义缓存 (GPTCache) | 中 | 30% – 80% | 客服、FAQ、知识问答 |
| 批处理 (Batching) | 高 | 50% (减少请求次数) | 数据清洗、报表生成 |
| 微调小模型 (Fine-tuning) | 极高 | 90% | 极其垂直、高频的固定任务 |
总结建议
如果你现在就要动手优化,建议按以下顺序操作:
- 第一步(立竿见影): 全面审查 Prompt,去掉冗余的 Context,强制要求简洁的 JSON 输出。
- 第二步(架构调整): 将所有非推理任务(如格式化、关键词提取)换成
GPT-4o-mini或DeepSeek-V3等高性价比模型。 - 第三步(高级): 引入语义缓存,拦截重复请求。