Appearance
成本优化策略
在知识图谱中的位置:模块四 · 04_工程实践 · 第 2 节 难度:⭐⭐⭐ | 前置知识:Agent 基础
1. 概述
Agent 的成本来自多轮 API 调用(每步 Thought/Action 都是一次 LLM 调用)。成本优化是生产级 Agent 的必做项。
2. 五大优化策略
2.1 模型路由(按任务分级)
简单任务 → Claude Haiku / GPT-4o-mini ($0.15/1M)
中等任务 → Claude Sonnet / GPT-4o ($3-15/1M)
复杂推理 → Claude Opus / GPT-4.5 ($15-60/1M)python
from litellm import router
models = [
{"model": "gpt-4o-mini", "cost": 0.15, "max_tokens": 4096},
{"model": "claude-3-sonnet", "cost": 3.0, "max_tokens": 4096},
{"model": "claude-3-opus", "cost": 15.0, "max_tokens": 4096},
]
# 自动根据任务复杂度选模型
model = router.route(prompt=prompt, completion="auto")2.2 上下文压缩
| 策略 | 说明 | 节省 |
|---|---|---|
| 摘要历史 | 定期将对话摘要化 | 50-80% |
| Token 预算 | 限制上下文总长度 | 直接控制 |
| 选择性记忆 | 只注入相关记忆 | 30-60% |
| 分段处理 | 分块处理长任务 | 按需 |
2.3 减少 Agent 迭代
| 策略 | 说明 | 效果 |
|---|---|---|
| Agent-X 按需规划 | 只在必要时规划 | 省 30-50% |
| 直接回答 | 简单问题直接答 | 省 70-90% |
| 缓存结果 | 相同问题直接返回 | 省 100% |
2.4 缓存策略
python
import hashlib
def get_cached_or_compute(query, ttl=3600):
cache_key = hashlib.md5(query.encode()).hexdigest()
cached = cache.get(cache_key)
if cached and (time.time() - cached['time']) < ttl:
return cached['result'] # 直接返回缓存
result = agent.run(query)
cache.set(cache_key, {'result': result, 'time': time.time()})
return result2.5 批量处理
python
# 错误做法:每个用户请求独立 Agent
for query in queries:
result = await agent.run(query) # 每轮都调 LLM
# 正确做法:批量合并
batch = [query1, query2, query3]
results = await agent.run_batch(batch) # 一次推理完成3. 成本估算
3.1 典型 Agent 每轮成本
| Agent 复杂度 | 每轮 tokens | 每次调用成本 (USD) |
|---|---|---|
| 简单(无工具) | 1K | $0.0003 |
| 中等(1-2 工具) | 3K | $0.001 |
| 复杂(多工具+规划) | 10K | $0.005 |
| 重度(多Agent) | 50K | $0.025 |
3.2 月度成本优化目标
| 规模 | 月调用量 | 优化前 | 优化后 | 节省 | |------|------|--|-|--|-| | 个人 | 10K/轮 | $5 | $2 | 60% | | 小团队 | 100K/轮 | $50 | $20 | 60% | | 企业 | 1M/轮 | $500 | $200 | 60% |