不用先学复杂平台:6个步骤把Agent的工具调用、轨迹和结果测清楚

简介: 本文揭示Agent测试核心痛点:答案“看似正确”不等于行为可靠。AWS Agent-EvalKit提出Plan/ Data/ Trace/ Run/ Eval/ Report六阶段评测法,强调基于完整执行轨迹(而非仅最终输出)验证工具调用、参数准确性与事实忠实性,助力测试团队从“测结果”转向“测过程”。

导语

一个旅行研究Agent给出了非常具体的汇率、天气和景点数据。答案读起来专业,格式也完全正确;但回放执行轨迹后,测试团队发现搜索工具根本没有返回数据,Agent只是“补写”了一个听起来合理的结果。

这类问题很难靠传统接口断言发现,因为接口可能返回200,最终文本也可能包含所有关键词。真正需要验证的是:Agent有没有调用正确的工具、参数是否正确、引用的数据是否真的存在、推理过程有没有跳步,以及在多轮对话中是否仍然可靠。

AWS最近介绍的Agent-EvalKit,把一次Agent评测拆成Plan、Data、Trace、Run、Eval、Report六个阶段,并用完整执行轨迹而非最终答案做判断。citeturn3view1 这套思路非常适合测试团队拿来改造现有的AI接口测试。

image.png

一、为什么“最终答案正确”不是充分条件

普通API测试通常是:发送请求,检查状态码和响应字段。对Agent来说,这个闭环太短了。它可能发生三种情况:

第一,工具调用失败,但模型用训练知识补了一个答案;

第二,工具调用成功,但参数错了,例如把美元换算成了欧元,或把查询日期提前了一天;

第三,工具和参数都对,最终总结却遗漏了关键限制条件。

所以Agent测试至少需要同时观察三层:

工具层:调用了谁?参数是什么?返回了什么?
轨迹层:是否基于真实返回继续推理?有没有绕过失败?
结果层:最终回答是否满足任务、引用是否可验证?

AWS给出的评测维度包括Faithfulness(是否忠于真实数据)、Tool Parameter Accuracy(工具参数是否正确)和Response Quality(最终回答质量)。这三个指标不能互相替代:答案质量高,不代表工具参数正确;工具参数正确,也不代表模型没有编造。citeturn3view1

二、把六个阶段翻译成测试团队的工作流

1. Plan:先定义任务和不可妥协的事实

不要只写“判断Agent是否好用”。把任务拆成可判定的目标,例如:必须查询指定城市、必须使用汇率工具、必须引用返回时间、当工具为空时必须明确说无法确认。

2. Data:准备正常、边界和故障数据

数据集中至少要包含三类样本:正常返回、空返回、工具报错。还要加入“看起来合理但实际不一致”的数据,例如工具返回100,Agent却在答案中写成1000。

3. Trace:保存完整执行轨迹

轨迹不仅包括最终文本,还包括每次工具调用、参数、响应、重试、上下文和中间状态。没有Trace,就无法证明Agent到底看到了什么。

4. Run:重复运行,而不是只跑一次

Agent具有非确定性。同一个Prompt可能一次成功、一次调用错工具。对关键场景至少执行多次,并保存每次结果。

5. Eval:使用代码断言和独立评审

可确定的事实用代码检查,例如工具名、参数、字段和引用URL;开放式表达再使用LLM Judge,并要求评审指出对应的Trace位置。

6. Report:报告必须能定位到代码和轨迹

一份“得分72分”的报告对开发者帮助不大。报告应该告诉他:哪一条Case失败、哪一次工具调用有问题、哪个参数错了、最终答案引用了哪个不存在的数据。

三、一个最小的Trace评测器

下面是可以放进现有Python测试项目的简化示例。它不依赖特定Agent框架,重点是把断言对象从response.text扩展为trace

def evaluate_trace(case, trace):
    tool_calls = trace.get("tool_calls", [])
    final_text = trace.get("final_text", "")
    tool_results = trace.get("tool_results", [])

    expected_call = case["expected_tool"]
    actual = next((c for c in tool_calls if c["name"] == expected_call), None)

    tool_ok = actual is not None
    params_ok = tool_ok and actual["arguments"] == case["expected_arguments"]
    has_ground_truth = any(r.get("records") for r in tool_results)
    mentions_uncertainty = any(word in final_text for word in ["无法确认", "数据为空", "请核实"])

    # 工具返回为空时,必须明确表达不确定,而不是编造精确数字
    faithfulness_ok = has_ground_truth or mentions_uncertainty

    return {
   
        "tool_parameter_accuracy": params_ok,
        "groundedness": faithfulness_ok,
        "response_non_empty": bool(final_text.strip()),
    }

在真实项目中,expected_arguments可以只约束关键字段,避免因为参数顺序不同造成误报;faithfulness_ok也应该进一步比较最终数字与工具返回记录,而不是只检查“不确定”几个字。

image.png

四、一次AWS案例为什么值得测试团队警惕

AWS文章中的旅行研究Agent案例运行了100个多轮会话。结果显示,Response Quality为83.9%,Tool Parameter Accuracy为64.5%,而Faithfulness只有32.3%。换句话说,答案在表面质量上并不差,但有相当多内容没有被真实工具数据支撑。citeturn3view1

这三个数字不是所有Agent的通用基准,而是该案例的诊断结果。它最有价值的地方,是证明了只测“回答像不像”会把最危险的失败隐藏起来。

在团队自己的项目中,可以把指标拆成一张趋势表:

指标 典型失败 优先修复方向
Tool Parameter Accuracy 日期、ID、过滤条件传错 工具Schema、参数校验、边界样本
Faithfulness 工具为空仍输出精确事实 空结果处理、引用绑定、拒答规则
Response Quality 信息正确但遗漏限制条件 任务分解、输出契约、独立评审

image.png

五、把非确定性变成可管理的回归门禁

很多团队会说:“这个Agent偶尔失败,没法像普通单测一样判定。”其实可以把目标从“每次都成功”改成“在重复运行中达到可接受的可靠性”。

例如,一个关键Case运行5次,要求至少4次工具参数正确,并且5次都不能出现无依据的精确数字。统计时要区分:

  • pass@k:k次里至少成功一次,适合探索型任务;
  • pass^k:连续k次都成功,更接近面向客户的稳定性要求。

如果单次成功率是75%,连续三次都成功的概率只有约42%。因此“我手工跑一次成功了”并不能证明它已经适合上线。AWS在另一篇生产评测实践中也强调了这种非确定性和多轮测试的重要性。citeturn3view2

建议把回归门禁写成可读的规则:

关键Case:5次运行中至少4次通过
安全Case:0次越权工具调用
事实Case:0次无来源精确事实
多轮Case:上下文切换后仍保持工具和参数正确

六、从线上事故反哺测试集

Agent上线后的每一次事故都应该变成一条新的回归Case。例如:

  • 工具返回空数组,Agent编造了排名;
  • 用户改了城市,Agent仍沿用上一轮的地点;
  • 工具参数少了时区,结果却被当成本地时间;
  • 业务规则更新后,Agent继续引用旧政策。

把事故原始Trace脱敏后放进Data阶段,再在Eval阶段增加对应断言。下一次版本发布时,这些曾经的线上问题就会自动重放,而不是靠测试工程师凭记忆手工检查。

结语:Agent测试的核心,是证明它没有跳过事实

Agent测试不应该停留在“这句话写得像不像人”。真正可交付的质量证据,需要同时回答:它调用了什么工具、拿到了什么数据、基于哪一步做了判断、最终答案是否忠于这些事实。

AWS Agent-EvalKit提供的六阶段结构,恰好把这些问题串成了一条可以落地的流水线。对初级测试工程师来说,不必先搭建复杂平台,先把一个关键Agent的Trace保存下来,再为工具参数、空结果和引用事实各写一条断言,就已经迈出了从“测输出”到“测执行”的第一步。

参考来源

AWS Machine Learning Blog:Evaluate AI agents systematically with Agent-EvalKit

https://aws.amazon.com/blogs/machine-learning/evaluate-ai-agents-systematically-with-agent-evalkit/

AWS Machine Learning Blog:Evaluating AI Agents: A production blueprint with Strands and AgentCore

https://aws.amazon.com/blogs/machine-learning/evaluating-ai-agents-a-production-blueprint-with-strands-and-agentcore/

相关文章
|
3天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
5426 6
|
1天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
857 1
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
15天前
|
人工智能
千问办公官网入口:阿里AI办公QwenWork产品页和免费网页端链接
千问办公官网含两大入口:一是网页端(qwenwork.cn),即开即用,支持浏览器直接访问;二是阿里云产品页 https://t.aliyun.com/U/JNKJuO 提供免费/付费版详情、功能介绍及使用指南。
|
15天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
3108 9
|
14天前
|
IDE 开发工具
Qoder 上线 Sonus 模型,Computer Use 能力全面增强
Qoder国际版上线全新内置大模型Sonus(/ˈsoʊnəs/),全球领先,专精超长任务执行与电脑操作(Computer Use)。配合Qoder桌面端0.2.3版本,可自主完成编程、金融建模、科研及表格制作等复杂工作。现全面支持Qoder全系产品,效率提升3.2倍。
1754 8
Qoder 上线 Sonus 模型,Computer Use 能力全面增强
|
16天前
|
缓存 人工智能 自然语言处理
阿里云qwen3.8-flash大模型介绍:模型能力、模型价格、免费额度与最新活动
本文是阿里云百炼平台Qwen3.8-Flash大模型的选型接入指南,作为兼顾性能与响应速度的高性价比多模态模型,它支持百万级上下文窗口、全场景多模态输入与完整智能体能力矩阵,适配编程辅助、智能体协作等核心场景。文中同步梳理了最新下调的阶梯定价、夜间4折等优惠活动,搭配OpenAI兼容流式调用示例,帮助开发者低成本快速落地高并发AI应用。
阿里云qwen3.8-flash大模型介绍:模型能力、模型价格、免费额度与最新活动
|
9天前
|
缓存 IDE Java
【保姆级】Android Studio下载、安装和汉化教程(2026最新)
Android Studio 是 Google 官方推出的免费 Android 应用开发集成环境,基于 IntelliJ IDEA,内置模拟器、调试器、性能分析及 Compose 界面工具,功能全面,文档丰富,是安卓开发首选工具。(239字)
1079 1
|
16天前
|
人工智能 API 内存技术
刚刚 DeepSeek V4.1 Flash 开启内测,1 分钟教你用上!
刚刚 DeepSeek 内测群发布了 DeepSeek V4.1 Flash 中间版本内测的消息,这次的模型采用了新的结构,原生支持多模态、能力更强、速度更快、且成本更低。
2013 15