跳到主要内容

97-Agent面试题精讲:评测篇

前言​

如何评估一个 Agent 的任务完成率?​

我一般会先确定这个 Agent 什么情况下算“完成任务”,然后准备一批测试问题,让 Agent 批量跑一遍,看有多少任务真正完成了。

最核心的就是看任务完成率,比如测试 100 个任务,成功完成了 90 个,那完成率就是 90%。

但我不会只看最后的答案,还会看它工具有没有调用对、参数对不对、执行过程有没有走歪、最终答案对不对。同时也会关注它用了多少次模型、调用了多少次工具、花了多长时间以及用了多少 Token。

对于一些结果比较明确的任务,可以直接写程序自动判断;如果是一些比较开放的问题,比如总结、问答,就可以让另一个 LLM 当“裁判”来打分,再抽一些结果人工检查。

最后把这些测试任务保存下来,每次修改 Prompt、模型或者 Agent 流程之后,重新跑一遍,看看完成率有没有提升,有没有把原来能做对的任务改坏。

常用的 Agent 基准测试集有哪些?什么场景下实用哪个​

Benchmark主要测什么适合什么场景
GAIA综合任务、工具使用、多步推理通用 Agent
τ-bench多轮对话 + 工具调用 + 业务规则客服、订单、业务 Agent
AgentBench多种 Agent 环境下的综合能力通用 Agent 能力对比
SWE-bench根据真实 GitHub Issue 修改代码Coding Agent
WebArena在真实网站环境完成任务Web Agent、浏览器 Agent
BrowserGym浏览器环境中的任务执行Browser / Web Agent
OSWorld操作电脑、GUI、办公软件Computer Use Agent
ToolBench工具调用、API 使用能力Tool Calling Agent
BFCLFunction Calling 能力工具调用 / Function Calling

常见的 Agent Benchmark 有 GAIA、τ-bench、AgentBench、SWE-bench、WebArena、OSWorld、ToolBench 和 BFCL 等。

我觉得主要还是要根据 Agent 的场景来选择。比如通用 Agent 可以用 GAIA,业务流程和客服类 Agent 比较适合 τ-bench,Coding Agent 用 SWE-bench,Web Agent 用 WebArena,Computer Use Agent 用 OSWorld。如果主要评估 Function Calling 和工具调用能力,可以看 BFCL 或 ToolBench。

实际项目中,我不会完全依赖这些公开 Benchmark,还会根据自己的业务场景构建一套 Evaluation Dataset,因为公开 Benchmark 和真实业务场景不一定完全匹配。

人工评估 vs 自动评估:各自的优缺点?​

人工评估优点是准确、能够理解复杂任务,但成本高、速度慢,而且有主观性;自动评估效率高、成本低,适合大规模和持续回归测试,但准确性和泛化能力有限。所以实际项目一般是自动评估为主,人工抽样校验,用两者结合来保证评估结果的可靠性。

如何设计端到端的 Agent 测试用例?​

端到端 Agent 测试,我会先根据业务定义任务成功标准,然后围绕真实用户场景设计测试集,不只覆盖正常流程,也会覆盖参数缺失、Tool 异常、权限、边界情况和多轮对话。测试时从用户输入开始,完整跑一遍 Agent,检查最终任务是否完成,同时检查 Tool 调用、参数、执行轨迹、异常处理以及耗时和 Token 成本。最后把这些用例沉淀成 Evaluation Dataset,每次修改 Prompt、模型或者 Workflow 后重新执行,做回归测试,确保 Agent 效果没有下降。

工具调用准确率如何量化?​

工具调用准确率我一般不会只看一个指标,而是拆成工具选择准确率、参数准确率和工具执行成功率。比如先判断 Agent 有没有选对 Tool,再判断参数是否正确,最后看 Tool 是否成功执行。对于 Agent 整体效果,还会进一步看它能不能通过正确的 Tool 调用最终完成任务。

所以可以分别统计 Selection Accuracy、Argument Accuracy、Tool Success Rate,以及最终的 Task Success Rate。对于明确的工具调用任务,这些指标都可以通过程序自动校验。

如何模拟真实用户与 Agent 的交互?​

模拟真实用户,我会先定义真实业务场景和用户目标,然后覆盖多轮对话、模糊表达、需求变更、输入错误以及 Tool 异常等情况。除了人工设计测试用例,也可以用另一个 LLM 模拟用户,根据 Agent 的回复动态生成下一轮输入,让 Agent 真正跑完整个任务流程。最后再从任务完成率、Tool 调用、上下文理解、异常恢复以及成本和延迟等方面进行评估。

多轮对话中的上下文一致性如何评估?​

多轮对话的上下文一致性,我主要看 Agent 能不能正确记住前面的关键信息、前后回答有没有冲突,以及用户修改信息后能不能以最新信息为准。

实际评估时,我会设计多轮对话测试集,提前定义每一轮应该维护的状态,然后检查 Agent 在后续对话中是否正确使用这些信息。除了正常场景,还会重点测试长对话、信息修改、用户纠正、指代和信息冲突等情况,最后统计上下文一致率。