内容纲要
一、核心定义
资源感知优化:智能体根据计算资源、时间、成本预算动态选择执行策略,在满足目标的前提下优化资源利用效率。
与规划的区别:
规划(Planning) → 关注动作序列
资源感知优化 → 关注如何执行(用什么资源)
核心类比:
旅行规划场景:
高级规划(理解需求、分解行程) → 使用Gemini Pro(昂贵但智能)
具体任务(查机票、酒店、餐厅) → 使用Gemini Flash(便宜且够用)
二、为什么需要资源感知优化?
| 痛点 | 影响 | 解决方案 |
|---|---|---|
| 成本过高 | 所有查询都用最贵模型 | 简单查询用便宜模型 |
| 延迟过长 | 实时场景响应慢 | 快速模型优先 |
| 资源浪费 | 简单任务用复杂模型 | 智能路由 |
| 服务不可用 | 主模型限流/宕机 | 自动降级到备用模型 |
| 能耗过大 | 边缘设备电量耗尽 | 轻量模型+优化 |
核心优势:
- ✅ 降低运营成本
- ✅ 提升响应速度
- ✅ 提高系统可靠性
- ✅ 优化用户体验
- ✅ 提升资源利用率
三、核心模式
1. 动态模型切换
原理:根据任务复杂度选择合适的模型
| 任务类型 | 模型选择 | 成本 | 速度 | 质量 |
|---|---|---|---|---|
| 简单查询 | Gemini Flash / GPT-4o-mini | 低 | 快 | 够用 |
| 复杂推理 | Gemini Pro / GPT-4o | 高 | 慢 | 高 |
| 需要联网 | 标准模型 + 搜索工具 | 中 | 中 | 高 |
示例:
# 定义两个智能体
gemini_pro_agent = Agent(
model="gemini-2.5-pro", # 昂贵但强大
description="处理复杂查询"
)
gemini_flash_agent = Agent(
model="gemini-2.5-flash", # 便宜且快速
description="处理简单查询"
)
2. 路由智能体(Router Agent)
功能:分析查询并路由到最合适的模型
路由策略:
| 策略 | 实现 | 适用场景 |
|---|---|---|
| 基于规则 | 查询长度、关键词 | 简单场景 |
| 基于LLM | 用小模型分析复杂度 | 中等场景 |
| 基于ML | 训练分类模型 | 高级场景 |
示例实现:
class QueryRouterAgent(BaseAgent):
async def _run_async_impl(self, context):
user_query = context.current_message.text
query_length = len(user_query.split())
if query_length < 20: # 简单查询
return await gemini_flash_agent.run_async(context.current_message)
else: # 复杂查询
return await gemini_pro_agent.run_async(context.current_message)
三种查询分类:
# OpenAI示例
def classify_prompt(prompt):
"""
分类结果:
- simple: 直接回答的事实性问题
- reasoning: 需要推理的逻辑/数学问题
- internet_search: 需要最新信息的问题
"""
# 使用GPT-4o分类
# simple → GPT-4o-mini
# reasoning → o1-mini(推理模型)
# internet_search → GPT-4o + Google Search
3. 评论智能体(Critique Agent)
功能:评估响应质量,优化路由决策
职责:
| 职责 | 作用 | 价值 |
|---|---|---|
| 自我修正 | 识别错误,促使改进 | 提高答案质量 |
| 性能监控 | 跟踪准确性、相关性 | 持续优化 |
| 路由优化 | 识别次优路由 | 降低成本 |
| 信号收集 | 为微调提供数据 | 长期改进 |
系统提示示例:
CRITIC_SYSTEM_PROMPT = """
你是评论智能体,负责质量保证。职责:
1. 评估研究结果的准确性和完整性
2. 识别缺失数据和推理不一致
3. 提出批判性问题
4. 提供建设性改进建议
5. 验证最终输出质量
所有批评必须具有建设性。
"""
四、后备机制(Fallback)
定义:主模型不可用时自动切换到备用模型,确保服务连续性。
实现方式:
1. OpenRouter顺序回退
{
"models": [
"anthropic/claude-3.5-sonnet", // 首选
"openai/gpt-4o", // 备选1
"gryphe/mythomax-l2-13b" // 备选2
]
}
工作流程:
尝试Claude 3.5 Sonnet
↓ (失败:限流/宕机)
尝试GPT-4o
↓ (失败)
尝试Mythomax
↓
返回成功响应
2. ADK多模型配置
from google.adk.models.lite_llm import LiteLlm
# 通过LiteLLM集成多模型
agent = Agent(
model=LiteLlm(model_name="gpt-4o", fallback="gpt-4o-mini")
)
五、实战案例
案例1:OpenAI三级路由系统

图1:OpenRouter统一接口 - 访问数百个AI模型
完整流程:
def handle_prompt(prompt):
# 步骤1: 分类
classification = classify_prompt(prompt)
# 返回: "simple" / "reasoning" / "internet_search"
# 步骤2: 按需搜索
if classification == "internet_search":
search_results = google_search(prompt)
# 步骤3: 生成响应
if classification == "simple":
model = "gpt-4o-mini"
answer = generate_response(prompt, model)
elif classification == "reasoning":
model = "o1-mini" # 推理专用模型
answer = generate_response(prompt, model)
elif classification == "internet_search":
model = "gpt-4o"
answer = generate_with_search(prompt, search_results, model)
return {"classification": classification, "model": model, "answer": answer}
成本对比:
| 查询类型 | 模型 | 成本 | 示例 |
|---|---|---|---|
| 简单 | GPT-4o-mini | $0.15/1M tokens | "澳大利亚首都?" |
| 推理 | o1-mini | $3/1M tokens | "量子计算对密码学的影响?" |
| 联网 | GPT-4o + Search | $5/1M tokens + API | "2026澳网何时开始?" |
案例2:ADK层次化智能体
# 规划器智能体(高级任务)
planner_agent = Agent(
model="gemini-2.5-pro",
instruction="理解复杂需求,制定旅行计划"
)
# 工具执行智能体(简单任务)
tool_agent = Agent(
model="gemini-2.5-flash",
instruction="执行具体搜索:机票/酒店/餐厅",
tools=[flight_search, hotel_search, restaurant_search]
)
# 层次化编排
workflow = HierarchicalAgent(
planner=planner_agent,
workers=[tool_agent]
)
六、OpenRouter统一接口
核心价值:
- 一个API访问数百个模型
- 自动故障转移
- 成本优化
- 无缝集成
基础用法:
import requests
response = requests.post(
url="https://openrouter.ai/api/v1/chat/completions",
headers={
"Authorization": "Bearer <API_KEY>",
},
json={
"model": "openai/gpt-4o", # 或"openrouter/auto"自动选择
"messages": [{"role": "user", "content": "你的问题"}]
}
)
自动模型选择:
{
"model": "openrouter/auto" // 自动选择最优模型
}
特性:
- ✅ 统一接口
- ✅ 自动路由
- ✅ 排行榜(https://openrouter.ai/rankings)
- ✅ 支持ChatGPT, Gemini, Claude等
七、扩展优化技术
1. 提示优化
| 技术 | 说明 | 价值 |
|---|---|---|
| 提示压缩 | 删除冗余词语 | 减少Token消耗 |
| Few-shot优化 | 精选示例 | 提高准确性 |
| 模板化 | 预定义结构 | 标准化输出 |
2. 缓存策略
# 伪代码
def cached_llm_call(prompt, model):
cache_key = hash(prompt + model)
if cache_key in cache:
return cache[cache_key] # 命中缓存,省钱省时
result = llm.call(prompt, model)
cache[cache_key] = result
return result
3. 批处理
# 合并多个查询
batch_queries = [
"查询1",
"查询2",
"查询3"
]
# 一次调用处理多个,减少API开销
result = llm.batch_call(batch_queries)
4. 流式输出
# 立即返回部分结果,降低感知延迟
for chunk in llm.stream(prompt):
print(chunk, end="") # 实时显示
5. 超时与重试
try:
result = llm.call(prompt, timeout=5) # 5秒超时
except TimeoutError:
result = llm.call(prompt, model="faster_model") # 降级
八、典型应用场景
1. 成本优化的LLM使用
场景:企业客服系统
实现:
- FAQ简单问题 → GPT-4o-mini
- 复杂投诉处理 → GPT-4o
- 技术问题需搜索 → GPT-4o + Search
价值:降低70%运营成本
2. 延迟敏感操作
场景:实时聊天机器人
实现:
- 首选快速模型(Flash)
- 复杂查询异步处理(Pro)
- 流式输出降低感知延迟
价值:响应时间<1秒
3. 边缘设备能效优化
场景:移动App智能助手
实现:
- 简单任务本地小模型
- 复杂任务云端大模型
- 批处理减少网络调用
价值:延长50%电池寿命
4. 服务可靠性
场景:金融分析系统
实现:
Claude 3.5 → GPT-4o → Gemini Pro(多级回退)
价值:99.9%可用性
九、优势与挑战
✅ 核心优势
| 优势 | 说明 |
|---|---|
| 降低成本 | 简单查询用便宜模型 |
| 提升速度 | 快速模型优先 |
| 增强可靠性 | 自动故障转移 |
| 优化体验 | 动态平衡质量与速度 |
| 能效提升 | 边缘设备省电 |
⚠️ 挑战
| 挑战 | 影响 | 缓解方案 |
|---|---|---|
| 路由准确性 | 错误分类导致质量下降 | 持续优化分类器 |
| 复杂性增加 | 系统更难维护 | 模块化设计+监控 |
| 延迟增加 | 分类步骤增加时间 | 缓存+并行处理 |
| 评估困难 | 难以量化优化效果 | A/B测试+指标追踪 |
十、常见问题
Q1:如何确定路由阈值?
1) 收集历史查询数据;2) 人工标注复杂度;3) 训练分类模型;4) A/B测试验证;5) 持续调优。
Q2:路由智能体用什么模型?
轻量快速模型(如GPT-4o-mini),路由本身不应成为瓶颈。
Q3:如何平衡成本和质量?
设定质量基线,在满足基线前提下优化成本。对关键场景保证质量,非关键场景降低成本。
Q4:评论智能体会增加成本吗?
短期会,但长期通过优化路由降低总成本。可对部分查询采样评论。
Q5:OpenRouter vs 自建路由?
- OpenRouter: 快速上线、自动维护、支持多模型
- 自建: 完全可控、定制化、可能更省钱(规模大时)
Q6:如何监控资源使用?
- 追踪每个模型的调用次数和成本
- 监控平均延迟
- 分析路由准确率
- 用户满意度反馈
十一、参考资源
开源代码
- OpenAI路由示例 - MIT许可
工具平台
- OpenRouter - 统一模型接口
- OpenRouter排行榜 - 模型性能对比
图片资源

OpenRouter网站
原文章节
- <code>22-Chapter-16-Resource-Aware-Optimization.md</code>
相关章节
- 第 2 章:路由 - 路由智能体的基础
- 第 4 章:反思 - 评论智能体的原理
- 第 6 章:规划 - 与资源优化的区别
- 第 7 章:多智能体协作 - 层次化架构应用