news 2026/10/23 23:42:35

大厂 Agent 面试|工具接了几百个,Agent 怎么选?讲透 Tool Retrieval

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大厂 Agent 面试|工具接了几百个,Agent 怎么选?讲透 Tool Retrieval

给 Agent 接入几个工具时,把工具说明全部交给模型,通常容易理解和实现。但工具增长到几十、几百个以后,系统可能出现新的问题:说明占据大量上下文、相似接口难以区分、模型选中了“名字很像但用途不对”的工具。

本文用智能 OnCall 助手的例子,讲清工具检索 Tool Retrieval 的工作方式、工具目录如何设计、候选工具怎样筛选,以及如何验证它是否真的改善了任务表现。

一、工具越来越多,为什么 Agent 反而可能不好用了?

想象你让一名维修师傅拧紧一颗螺丝。

桌上只有三把工具时,他很容易找到螺丝刀。如果把整个仓库的几百件工具连同说明书一起搬过来,他先得判断哪些东西和这次维修有关。

Agent 也会遇到类似的问题。

假设你的 OnCall 助手已经接入日志、监控、发布、工单、知识库等系统,现在用户问:

帮我查一下,payment-api 今天下午为什么突然变慢了,只分析,不做变更。

候选工具里可能同时存在:

工具实际用途
monitor.query_metrics查询服务运行指标
logs.search_application查询应用日志
audit.search_events查询账号与权限审计事件
deploy.list_releases查询发布记录
deploy.rollback_release回滚已经发布的版本
tickets.search_history查询历史工单

这些工具有的都叫“查询”,有的都与服务故障有关,但它们并不能互相替代。

当目录变大,模型需要在更多相似选项之间做选择。与此同时,工具定义还会占用上下文和处理预算。

具体影响有多大,取决于模型、工具说明与任务,并不是工具数量一增加,准确率就必然下降。

因此,工程上值得考虑一个问题:

能不能先把这次可能用到的工具找出来,再让 Agent 阅读详细说明并调用?

这就是工具检索的基本思路。

二、Tool Retrieval 到底检索的是什么?

Tool Retrieval 可以理解为:根据当前任务,从工具目录中查找相关工具,形成一个较小的候选集合。

它检索的主要是工具名称、用途、适用条件、参数说明等元信息,不是已经执行出来的业务结果。

能力找的是什么?产出是什么?
文档检索能回答问题的资料文档片段、证据
工具检索能完成某种操作的工具工具标识及相关定义
工具调用按参数执行具体操作日志、订单、查询结果等

例如,工具检索发现logs.search_application适合查应用日志。

这一步并没有查询 payment-api 的任何日志。

后面还需要加载工具定义,填写服务、时间范围等参数,再真正调用。

可以把它记成:

先找到会干这件事的工具,再告诉它具体干什么。

Anthropic 官方介绍过按需发现、加载工具的机制,用于减少大量工具定义同时进入模型上下文的问题。这是工具检索的一种产品实现,并不意味着所有系统都要使用相同接口。

三、完整流程:从几百个工具里找到这次需要的几个

下面给出一套示例设计。假设用户已经明确了服务、生产环境和故障时间段。

第一步:确定当前阶段需要什么能力

“服务变慢”是用户的问题,检索器需要的则是更具体的能力描述。

可以先整理为:

  • 查询目标服务的延迟、错误率和资源指标。

  • 查询对应时间窗口的应用错误日志。

  • 查询故障前后的发布记录。

  • 当前任务仅允许分析,不执行生产变更。

这里无需一次性规划出所有后续步骤。

先找能推进当前阶段的工具就够了,得到新证据后还可以继续检索。

第二步:先过滤,再匹配相关性

相关性高,不代表工具对当前用户可用。

在这个示例系统里,可以先按身份权限、所属租户、运行环境、启用状态和任务允许的操作范围,过滤工具目录,再进行相关性匹配。

由于用户明确要求“只分析”,当前候选集合可以排除回滚、重启和修改配置等变更工具。

执行端仍需要独立校验权限。

候选过滤能够减少选错机会,但不能代替最终授权检查。

第三步:检索并比较候选

检索不一定必须使用向量数据库。

方式适合的情况可能遇到的问题
分类目录或规则路由业务领域清晰、工具较少边界任务可能分错类
关键词检索用户用语与工具术语比较接近可能漏掉同义表达
语义检索“卡顿”与“延迟指标”等表达不一致容易召回语义接近但能力不同的工具
混合检索与重排既有精确名称,又有自然语言描述需要额外维护与评测

可以先得到若干候选,再检查它们到底能返回什么、需要什么输入、是否适合当前任务。

例如,“权限审计日志”和“应用运行日志”都包含“日志”,但排查接口超时通常更需要后者。

不能只按名字里有没有关键词来判断。

第四步:加载完整定义,再生成调用参数

工具摘要适合帮系统找工具,完整定义才用于正确调用。

完整定义中可能包含:

  • 参数名称、类型和必填条件。

  • 时间单位、时区、分页等约定。

  • 服务标识的格式。

  • 输出结构和错误语义。

如果只有一句“查询日志”,模型可能猜出app_name这个参数,但真实接口要求的是service_id。

检索摘要负责找到工具,完整定义负责告诉 Agent 怎么使用它。

第五步:根据结果决定是否再找工具

假设日志表明超时主要发生在数据库请求阶段,下一步可能需要查询数据库连接池指标。

此时重新检索相关工具即可,不必在任务开始时就把所有数据库工具装进上下文。

这种设计让候选工具随任务进展变化:

当前需要什么能力,就补充什么能力。

四、工具目录怎么写,才能让工具更容易被选对?

给工具写说明,不能只写一句“这是一个查询接口”。

它更像给仓库货架贴标签:除了名称,还要说明适合拿它来做什么、不能拿它来做什么。

下面是一张示例工具卡片:

字段示例内容
工具名称logs.search_application
用途查询指定服务和时间范围内的应用运行日志
适用场景排查报错、超时、异常堆栈
能力边界不查询账号操作审计,不修改线上配置
必要输入服务 ID、开始时间、结束时间
输出日志时间、级别、内容和分页信息
操作属性只读,但返回内容可能包含敏感字段
环境与权限支持的环境及所需权限
定义版本与注册中心中的实际接口版本对应

Anthropic 在工具设计文章中讨论了工具命名、描述、命名空间与评测的重要性。

但这里也有个容易忽略的细节:

工具卡片中的“只读”或“安全”字样,不应成为唯一的执行依据。

这些描述帮助选择,实际能力和权限仍应由可信注册信息及执行服务约束。

否则,一个描述写得非常动听、实际能力却不匹配的工具,就像包装精美但标签贴错的零件,反而更容易被拿错。

五、是不是每次检索 Top-5 就够了?

没有一个对所有任务都合适的固定数字。

只查一个订单,候选可能很少;排查跨系统故障,可能需要多个能力协作。

Top-K 里的 K 可以理解成“先拿出多少个候选”,不等于“必须调用多少个工具”。

候选集合好处代价
较小工具说明少,干扰较少可能漏掉必要工具
较大更容易覆盖所需能力选择负担和上下文开销增加
按阶段调整与当前任务进展更贴近需要管理追加检索与预算

在这个 OnCall 示例里,可以先提供日志和指标工具;出现发布相关线索后,再引入发布记录查询。

如果没有找到合适工具,也不必勉强从低相关候选里挑一个。

系统可以改写检索词、扩大授权范围内的搜索类别、澄清需求,或明确说明暂时没有对应能力。

“没有合适工具”应是一个可以正常表达的结果。

六、怎么知道问题出在“没找到”,还是“选错了”?

把任务最终失败都归为“模型不够聪明”,会让优化失去方向。

可以把失败拆开看:

失败位置例子应优先检查什么
检索阶段应用日志工具根本没进入候选工具描述、检索词、过滤条件
选择阶段候选中有正确工具,却选了审计日志能力差异是否清楚、候选是否混杂
参数阶段工具选对,但时间窗口填错参数定义与任务信息
执行阶段请求正确,但服务不可用工具服务及运行环境
解释阶段工具结果正确,结论却不受证据支持结果理解与回答生成

工具检索主要改善前面的发现与选择环节,不能保证后面的参数、执行和解释自动正确。

一个能手算的评测例子

假设测试集中有 100 个单工具任务,每道题标注一个目标工具;正确工具进入前五个候选的有 92 道。

那么,这个简单设定下的 Recall@5 为 92%。

这只能说明“正确工具有没有出现在候选中”,并不表示 92% 的任务最终做成了。

对于需要日志、指标和发布记录共同完成的任务,还可以检查“必要能力是否全部覆盖”。

如果同一能力存在多个等价工具,也应认可有效替代方案,而不是把唯一工具 ID 当成唯一答案。

本文的数字用于说明指标含义,不是实际实验结果。

七、它一定能省钱、提速吗?

不一定。

按需加载可能减少工具定义带来的上下文开销,但工具检索本身也可能增加搜索、重排或模型交互的时间。

可以把总账拆成:

工具发现开销 + 模型决策开销 + 业务工具执行开销。

如果原本只有四个短小、清晰的工具,额外引入复杂检索流程,可能得不偿失。

此外,“工具定义没有全部进入模型上下文”,也不一定意味着“API 请求不再提交完整工具目录”。

例如,Claude 官方工具搜索文档区分了定义在请求中的提供方式与延迟进入上下文的行为。

因此,比较方案时应同时记录候选覆盖、选工具正确率、端到端任务成功率、总延迟和实际费用。

不能仅凭候选数量变少,就宣称整体性能提高。

八、面试精简总结:一分钟怎么回答?

当 Agent 接入大量工具时,我会考虑工具检索:先根据当前任务所需能力,从工具目录里筛出相关候选,再加载完整定义并生成调用参数。工具较少时可以直接提供,目录较大时再按任务阶段按需发现。

工具目录要写清用途、适用条件、能力边界与参数要求。检索可以使用规则、关键词、语义匹配或组合方案,并结合身份、环境和任务范围过滤。检索到工具并不等于获得调用权限,执行端还要独立校验。

评测时我会区分候选召回、工具选择、参数正确与最终任务成功,避免把所有问题归因于模型。同时比较检索新增开销和上下文节省,验证它是否真正改善了整体效果。

一句话记忆:工具检索像查仓库目录,先找到合适的工具,再按完整说明使用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/19 12:47:44

《算力江湖·英伟达传奇》第五集:为什么AMD总差最后一口气?

强哥聊算力 《算力江湖英伟达传奇》第五集:为什么AMD总差最后一口气?本集导读:上一集我们讲到CUDA,讲到英伟达真正厉害的地方,不只是GPU硬件,而是它花了十几年时间把开发者、科研团队、AI公司和大量软件框…

作者头像 李华
网站建设 2026/10/19 4:17:57

化学智能体闭环:从自然语言到机器人实验的完整链路

化学智能体的讨论这两年一直很热,但大多数时候,大家聊的是“大模型能读文献”“能推荐合成路线”“能预测反应收率”这类偏计算侧的能力。真正让我觉得拐点来了的,是最近看到一批实验室把自然语言指令直接接到机器人执行端,让智能…

作者头像 李华
网站建设 2026/10/22 9:34:39

Ubuntu 系统 CUDA 安装全指南:驱动、Toolkit 与运行库的版本协同实践

前两天有个同事拿着一段编译报错来找我,说他觉得自己已经把 CUDA 环境装好了,但代码一跑就提示找不到设备。我让他先执行nvidia-smi,再执行nvcc -V,两个输出一对,问题十秒钟就清楚了——他把驱动界面右上角显示的最高 …

作者头像 李华
网站建设 2026/10/22 9:47:53

ARKStatsExtractor:方舟生物属性反推与种龙筛选计算全解析

简介:《ARKStatsExtractor》是一款面向《方舟:生存进化》玩家与游戏辅助开发者的C#工具,用于提取生物升级后的属性数值,建立可检索的动物图书馆。它支持对个体属性进行排序和比较,查看完整血统书,并借助育种…

作者头像 李华
网站建设 2026/10/21 16:59:25

信用卡风控为何非用GDBT不可:可解释性与业务逻辑的深度耦合

1. 为什么风控场景里GDBT不是“选它”,而是“非它不可”我第一次在某银行合作项目中看到原始风控建模方案时,心里咯噔一下:团队用的是逻辑回归人工分箱,特征工程写了37页Excel文档,上线后AUC卡在0.72附近三个月没动。当…

作者头像 李华
网站建设 2026/10/23 11:03:54

图像平移缩放旋转计算:齐次坐标与像素映射原理详解

简介:本资源是一套面向图像处理初学者与计算机视觉入门者的平移、缩放与旋转操作实践代码包,聚焦仿射变换的核心原理与OpenCV实现。资源包含17个文件(13个MATLAB脚本、2张JPG测试图、1份PDF学术论文、1张BMP基准图像),…

作者头像 李华