实验:回测、离线实验平台与题目级 Rubric丨AgentLoop 数据飞轮实践(四)

作者:马云雷

AgentLoop 数据飞轮实践系列 · 第 4 篇 / 共 5 篇。

上一篇:评估:从黄金指标到 Rubric/ 下一篇: 经验库 ------ 自动挖掘经验资产

评估发现了 badcase,调优也有了方向,接下来的问题是:怎么证明一次优化真的有效?

改 Prompt、换模型、调参数,任何改动都可能"感觉变好了",但感觉不算数------回归测试里别的题目可能悄悄变差。答案是实验:用数据集里的题目反复回测,用分数说话。实验能力回答三个问题:这次改动对这几道题效果如何(实验计划)?怎么安全地测到部署在内网的 Agent(离线实验平台)?怎么让分数稳定可信、并且知道分数为什么变(实验大盘 + 题目级 Rubric)。

实验计划:数据集+评估器+变量映射

当对评估结果不满意时,就可以通过实验对数据集里的题目重新回测。演示用的数据集有两道题:『AgentLoop 如何做评估』和『AgentLoop 有哪些功能』------正是前面评估中得分不理想的 badcase。

创建实验计划时指定数据集,然后勾选评估器、配置变量映射

图 1:实验计划:指定数据集与评估器

图 2:变量映射:内置变量与数据集字段对应

变量映射解决的是"评估器用哪个变量"的问题------和评估任务里的字段映射是同一个思路,只是这次的数据来源是实验:

  • 一边是实验的内置变量:实验的 input、实验的 output、实验的轨迹;
  • 另一边是 dataset 里的原始内容:比如 expected output 就存在 dataset 里,可以再加一个变量映射把它喂给评估器,让评估器拿标准答案做对照。

除了内置变量,还可以加自定义变量来标记实验上下文,比如本次测试的版本号、实验记录 ID,或者任意自定义的 KV 对。版本号尤其重要------后面大盘上要对比"不同版本的分数差异",没有版本标记就无从对比。

配置好实验之后,可以获取一份本地执行代码------这是离线实验平台的入口。

离线实验平台:部署在你的内网

实验要访问的是客户自己的 Agent,而 Agent 往往部署在公司内网、只有内网才能访问。云端平台够不着它,把数据搬出去测又不现实。为此智能体观测与优化平台 AgentLoop 提供离线实验平台,直接部署在客户公司内网,就近访问本地 Agent:

图 3:离线实验平台:部署在客户内网

图 4:离线实验平台架构:云端控制台 ↔ 内网实验平台 ↔ 本地 Agent

这个架构的分工很清晰:云端负责存储实验记录、展示大盘(记录提交到云端,平台侧随时可看);内网平台负责执行------它既能出网访问 AgentLoop 云端,又能在内网直接调用本地 Agent。数据不出内网,能力不打折扣。

平台配置:连上 AgentLoop 云端

第一件事是让内网平台连上 AgentLoop 云端:

  • 绑定 AgentSpace: 配置要测哪个、管理哪个 AgentSpace 的实验,以及对应的 region;
  • endpoint 与 VPC: 默认值即可;如果要访问其他 region,改成对应 region 的 endpoint;
  • AK / SK: 这个 AK 要能访问云端 AgentLoop 的全部功能,即具备 AgentLoop FullAccess(读写)权限。建议申请一个专门的 AK 保存在本地,专门用于离线实验------权限专用、用途单一,出了状况好排查:

图 5:配置 AK/SK 与 AgentSpace 绑定

填完后测试链接,确保能连通 AgentLoop 云端平台,再进行下一步。

连接本地 Agent

第二件事是连接本地的 Agent。新建一个连接(演示中命名为 Test1)------本地平台可以同时连接多个 Agent,每个 Agent 都能单独做一遍测试:

图 6:新建连接:注册本地 Agent

连接时需要一段自定义调用代码 。平台提供的默认代码假设 Agent 的 API 是无状态的------发一个请求、拿一个响应。但大部分 Agent 是有状态的:比如演示的客服 Agent 基于 Claude Agent SDK 开发,需要先创建一个 Session,拿到 Session ID,再向这个 Session ID 发送消息,最后生成响应。默认代码不满足,就把调用代码改成"建 Session → 发消息 → 取响应"的逻辑;如果本地有特殊的连接方式,同样在这段代码里适配。

保存后发起一个单题测试验证连通性,比如问『我的位置在哪里』:

图 7:单题测试:验证本地 Agent 连通

Agent 正常响应(『我无法获取您的实际位置信息』),说明链路打通。本地访问延时较高是正常的,等一等没关系,连通即可发起实验。

定时调度与 Launch History

单次实验验证改动效果,定时调度则把回测变成日常:演示中把实验配成每 5 分钟调度一次------选择对应的实验计划、起一个调度名字(比如"每五分钟回归一次")、设置周期和间隔、选择目标 Agent,即可创建定时任务(生产环境通常配每天回归):

图 8:Launch History:定时调度触发记录

Launch History 里可以看到每一次触发记录(例如 51 分、56 分各触发一次),并且本地平台与 AgentLoop 控制台(平台侧)的数据是同步的------两边看到的实验记录一致。

回测结果直接在实验记录里看。演示中两道题的得分分别是 0.250.5(满分 1):第一题『AgentLoop 有哪些功能』的回答缺了 Rubric 要求的多项能力点,只拿了 0.25;第二题『AgentLoop 如何做评估』回答相对完善但仍有多个 Rubric 项未命中,拿了 0.5。评估结果里能看到多次评估的趋势------多次评估之间有浮动,看均值更客观;还能看到评估过程用了哪些 Rubric、逐项检查命中了什么、缺了什么。分数低不是坏消息,它精确指出了下一轮调优该补什么。

实验大盘与分数分析

每个实验计划都会自动创建一个实验大盘

图 9:实验大盘:整体分数与变化趋势

大盘提供:整体分数、分数变化趋势、明细,还可以按题目下钻查看单题的分数变化------直观感知对 Agent 的优化有没有效果。每天回测一次,分数变低立刻可见;调优完之后立刻测一遍,改进也立刻可见。

为了消除单次评估的浮动,可以按时间窗口计算均值(比如 1 小时或 5 分钟一个窗口):

图 10:按时间窗口计算均值

分数分析有一套方法论,值得记住:

  • 分数变低要及时关注: 这可能是 Agent 真的退化了;
  • 先排查 Rubric 定义: 如果同一个版本多次评估分数不稳、频繁波动,多半不是 Agent 变了,而是 Rubric 定义模糊------标准不清楚,分数自然飘。这时要优化评估器的 Rubric;
  • 再看版本差异: 确认评估器没问题之后,如果同一版本内分数稳定、不同版本之间有差异,那才是版本带来的真实差异。

这套排查顺序避免了最常见的误判:把"尺子不准"当成"东西变差"。

题目级 Rubric:一个关键实践

流程跑通之后,演示回过头做了一个重要的优化。背景是:

从线上现场抓 badcase 时,用户问题非常发散,没法定一个具体的 Rubric 来判定回答好坏------所以在线评估用的是通用标准。但实验不一样:badcase 抓出来之后,我们知道了具体的用户问题。两道题------『如何做评估』和『有哪些功能』------的评估标准其实并不相同。如果用同一套 Rubric 评两道题,优化时就会失去方向,因为每道题该达标的点根本不一样。

演示里最初为了简化快速接入,把两道题的 Rubric 写在了同一个评估器里------这种写法对实验并不友好。理论上的正确做法是把 Rubric 定义到题目级别,每道题绑定自己的评估标准:

图 11:题目级 Rubric:按题目绑定评估标准

具体做法分四步:

1. 整理每道题的 Rubric: 把题目 A 的 Rubric 复制出来,它包含每一项功能的细项、单项判定、概念边界、扣分项;题目 B 同理;

2. 数据集 schema 加列: 数据集的 schema 里原本没有 rubric 字段,在字段管理里加一列 rubric(text 类型),保存 schema,然后把每道题的 Rubric(评分规则、原子能力、计算公式)分别写进对应题目;

3. 评估器改造: 给评估器新增一个 rubric 变量,让评估器按传入的 Rubric 评估,并输出合法的 JSON------包含 rubric_id、score、reason、item_scores 等字段;

4. 实验侧绑定: 实验配置里的 Rubric 选项,改为从 dataset 的 Rubric 读取。

改造之后,每道题按自己的标准被评估,实验分数才真正有指导意义------哪道题低分,就补哪道题对应的能力点。

小结

下一篇预告: 手工调优闭环跑通了,最后一块拼图是"全自动化":经验库从历史轨迹中自动挖掘经验资产,Agent 装个 Skill 就能召回。效果如何?消融实验见分晓。

相关推荐
ClouGence12 分钟前
一句话直出可运行程序!GLM‑5.3 系列多任务实测
人工智能·agent·ai编程
DolphinScheduler社区1 小时前
把 Apache DolphinScheduler 变成 Agent 的“手和脚”:从调度平台到自然语言数据入口
人工智能·开源·apache·agent·技术分享·海豚调度·大数据工作流调度
Sincerelyplz1 小时前
【Pipecat】基于Pipecat的voice agent实践
前端·后端·agent
Canace3 小时前
基于 Codex Agent Harness 套壳实现自己的 AI 产品:Agent 运行时与任务编排实践
前端·人工智能·agent
zhuodedao3 小时前
Spring AI + MCP 文件工具未调用问题复盘:为什么初始化成功却没有写入文件?
java·debug·agent·springai·mcp
韦东东4 小时前
规则 or Agent 驱动:一个合同审查系统的产品设计与工程拆解
pipeline·agent·合同审查·模型与规则
机械改造鹅4 小时前
从零开始拆解Pi系列——(9)session 管理
agent
Ningcode_cloud4 小时前
什么是CICD? GitLab + Jenkins 持续集成实战部署手册
运维·ci/cd·云原生·容器·gitlab·jenkins
GreatVicent5 小时前
AI Agent互操作标准化加速:A2A协议正式加入Linux基金会
linux·运维·人工智能·agent·aws·a2a