Agent 多工具如何评分选路?
结合打分排序与成本收益评估,多工具场景下的决策模块实现
原题:当多个工具均可完成同一子任务时,AI Agent应如何设计高效的工具选择机制?请结合打分、排序、成本-收益评估或决策模块,阐述其设计思路、技术实现方式及适用场景。
评估与监控 · 高德真题
回答与解析
核心设计思路
工具选择本质是多目标优化问题,需在准确性、延迟、成本、成功率间权衡。我按三层架构来设计:
一、工具表征层:建立统一描述
每个工具注册时标注元信息:
- 能力边界:输入输出Schema、支持的任务类型
- 性能画像:历史成功率、平均延迟、调用成本
- 质量评分:人工标注或离线评测的准确率
# 工具描述示例
tool_profile = {
"name": "weather_api_v2",
"capabilities": ["current_weather", "forecast_3day"],
"latency_p99": 120, # ms
"cost_per_call": 0.002,
"success_rate": 0.995,
"accuracy_score": 0.92 # 离线评测
}
二、决策引擎层:三种实现策略
| 策略 | 适用场景 | 实现方式 |
|---|---|---|
| 规则引擎 | 工具少、规则明确 | 优先级表 + 硬约束过滤(如延迟<200ms) |
| 打分模型 | 中等复杂度 | 线性加权或小型神经网络,输入任务特征+工具画像,输出综合得分 |
| LLM-based | 复杂决策、需推理 | Prompt内嵌工具描述,让LLM直接选择并解释理由 |
打分模型公式示例:
score = w1·accuracy - w2·cost - w3·latency + w4·success_rate
权重根据业务场景动态调整(实时场景调高w3,成本敏感场景调高w2)。
三、执行与反馈层:动态适应
- A/B测试框架:新工具灰度接入,对比实际效果
- 在线学习:记录选择→结果,定期更新打分模型
- 降级策略:首选失败时,按预排序快速切换备选
典型场景适配
| 场景 | 策略选择 | 关键考量 |
|---|---|---|
| 导航/打车(高德场景) | 规则+打分混合 | 延迟极敏感,先过滤再排序 |
| 复杂数据分析 | LLM-based | 需理解工具能力差异,允许稍高延迟 |
| 批量任务处理 | 成本优先排序 | 牺牲单条速度换整体成本最优 |
学习建议
建议先掌握Agent基本架构,再学习工具调度策略,结合RAG与决策模型案例理解打分与排序机制的实际应用。
口语版讲法(约4分钟)
- 工具选择本质是多目标优化
- 工具表征层:统一元信息
- 决策引擎层:三种策略及其边界
- 执行与反馈层:动态适应
- 业务场景与风险
这道题其实是在问,当多个工具都能完成同一个子任务时,怎么在准确率、延迟、成本和成功率之间做权衡。说白了就是一个 多目标优化 问题。我的设计思路是分三层来拆解:工具表征层、决策引擎层和执行反馈层。
先说工具表征层。每个工具注册的时候,我会要求它带上详细的元信息,包括能力边界、性能画像和质量评分。能力边界就是输入输出的 Schema 和支持的任务类型;性能画像记录历史成功率、平均延迟和调用成本;质量评分是离线评测的准确率。举个例子,一个天气预报 API,我会标注它的延迟 P99 是 120 毫秒,每次调用成本 0.002 美元,成功率 99.5%,离线准确率 92%。这层是后面决策的基础,信息越准,决策越靠谱。
接下来是决策引擎层,也是核心。我通常会根据场景复杂度选三种策略之一。第一种是规则引擎,适用于工具少、规则明确的场景,比如延迟必须小于 200 毫秒,我就先硬过滤掉超时的工具,再按优先级表排序。第二种是打分模型,适合中等复杂度的场景,我会用线性加权或者一个小型神经网络,输入任务特征和工具画像,输出一个综合得分。公式可以简单写成 score = w1 accuracy - w2 cost - w3 latency + w4 success rate,权重根据业务动态调整,比如实时场景就把延迟的权重调高,成本敏感场景就把成本权重调高。第三种是 LLM-based,适合复杂决策,需要推理的场景,比如让 LLM 直接看工具描述来选,还能解释理由。这里有个关键边界:规则引擎快但死板,打分模型灵活但需要训练,LLM 最聪明但慢且贵。实际落地中,我常常把规则和打分混着用,比如先过滤掉明显不合适的,再用打分模型排序。
再来说执行与反馈层。工具选择不是一次性的,需要动态适应。我会搭一个 A/B 测试框架,新工具灰度接入,对比实际效果再全量。同时做在线学习,记录每次选择的结果,定期更新打分模型的权重或参数。降级策略也很重要,首选失败时,按预排序快速切换到备选,不能卡死。
举个例子,在电商客服退款场景里,用户问“我买的手机降价了能退差价吗”,这个任务可能涉及查询订单、查价格历史、读政策、计算差价等多个子任务。每个子任务可能有多个工具,比如查价格历史可以用内部 API 或者第三方比价服务。在这种场景下,我会先用规则引擎过滤掉延迟超过 500 毫秒的工具,再用打分模型排序,准确率和成本的权重各 40%,延迟 20%。这样既保证响应快,又控制成本。
这里有个坑:前提是工具表征层的元信息必须准确。如果工具的成功率或延迟数据不准,决策就会偏。常见失败场景是,一个工具离线评测准确率很高,上线后因为数据分布变了,实际效果很差,但打分模型还一直选它。所以上线后我会特别关注 数据漂移 监控,定期重新评估工具画像。
另外,我还会考虑用 ReAct 循环让 Agent 在执行中动态调整选择,而不是一次定死。比如第一次调用失败后,Agent 能根据错误信息重新选一个工具,这比简单的降级策略更智能。
所以我会把工具选择机制看成是一个持续优化的系统,而不是一个固定的模块。我更倾向用规则加打分的混合策略,因为它在成本和效果之间平衡得最好,LLM 只用在需要推理的少数场景。这样既避免了规则引擎的僵硬,又控制了 LLM 的高延迟和高成本。
关键一句:用ReAct循环让Agent在执行中动态调整工具选择,而不是一次定死。
面试官还可能这样问
- 问法 1 · 场景切入
假设你在做智能客服,用户问“帮我查一下订单”,有好几个工具都能查订单:订单API、搜索接口、甚至LLM直接回答。你打算怎么决定用哪个?既要准又要快还得省钱。
- 问法 2 · 层层追问
Agent调用工具时,如果多个工具都能干同一件事,你会怎么选?……比如按什么标准排序?……那如果既要考虑准确率又要考虑成本和延迟,怎么平衡?你能说说具体的设计思路吗?
- 问法 3 · 直球架构
设计一个多工具场景下的工具选择机制,要求把打分、排序、成本收益评估都考虑进去。你怎么设计这个决策模块?技术实现上怎么搞?适合哪些场景?