图表文件已经生成,也能打开,为什么评价器还应该判失败?
前面研究课要求主张与证据匹配。图表同样是一种主张:柱高说某个数量是多少,坐标轴说数量的单位是什么,图例说每种颜色代表谁。Agent 调用代码生成了 PNG,只说明执行链到达一个文件;用户真正需要的是符合要求、能读懂的图。本课对应官方 Assignment 2 的四类错误,先不训练视觉评价模型。
用四行数据把“画错”拆开
下面是本课自编的小数据,金额单位均为元。任务要求:按地区求销售额之和,画从零开始的柱状图,纵轴写“销售额(元)”,图例与标签不能遮住数据。
| 地区 | 销售额 | 成本 |
|---|---|---|
| A | 10 | 4 |
| A | 20 | 8 |
| B | 30 | 12 |
| B | 40 | 16 |
所以应画 A=10+20=30、B=30+40=70。如果选成成本列,会得到 A=12、B=28;如果把元除以一千却仍标元,会画成 0.03、0.07。两张图都可以保存成功,甚至外观十分整齐,但都没有表达请求中的数据。
以下是同一小数据的四个静态核查视图,直接显示柱高及数值,不是模型真实生成记录。按顺序观察:选错列、单位转换未对应标注、正确数值被图例遮挡、正确且清楚。缩小页面时图形会随容器缩放。
官方作业把失败分成四个家族
execution_failure 表示没有有效最终图;wrong_data 表示选择、聚合、顺序、数值或数据维度不符;wrong_chart 表示未按要求选择图形、轴、布局或样式;hard_to_read 表示实际渲染难以阅读。这是 Assignment 2 的标签约定,不是所有可视化系统唯一的分类法。完整作业入口在官方资料页。
图①属于 wrong_data,因为成本不是销售额;图②也涉及 wrong_data,因为绘制数量与请求单位不一致。若数值仍是 30、70,只是轴标题写错,则更直接对应 wrong_chart。图③属于 hard_to_read,正确数值与存在的标签不保证它们可被读到。作业允许多个错误家族同时出现,不能强迫每张图只找一个问题。
评价器应该看哪些证据
输入数据告诉它请求中的真实数值;任务文本告诉它该选哪列、怎样聚合;轨迹或绘图代码显示实际做了什么;最终图片告诉它读者到底看到了什么。只看图片,可能不知道 30、70 是否来自正确输入;只看代码,又可能漏掉标签被裁切、字号过小的问题。
有图与合格图之间差哪些证据
保持产物不变,只改变评价器检查的内容。
教学构造场景 · 按下方规则逐步回放;不调用真实模型,不代表实际成功率。
任务要求销售额 A=30、B=70;图中实际画成本 A=12、B=28
- 1. 检查执行
进程退出成功,figure.png 存在。
- 2. 检查格式
图片能解码,尺寸非零。
- 3. 立即评分
验证器没有对照输入数值,判为通过。
进程退出成功,figure.png 存在。
先预测,再核对结果与原因
错误图被放过。文件有效只排除了部分执行失败。
先检查“文件存在”这条规则会放过哪个错误,再切到“数据与图片一起看”。两条回放使用同一张成本误画图,只改变验证器掌握的证据。
确定性规则与视觉检查各自漏什么
可以让程序重新计算分组和,与 plotted_values.json 比对,快速抓住 12、28 的错误。也可以检查文件存在、图像尺寸、所需列是否缺失。但 Agent 可能把正确数值写进 JSON,却在图里画另一列;所以结构化输出也不能自动当最终图的真相。
官方作业特别要求构造两种错误实现:一种被验证器拒绝,一种确实错误却被验证器放过。手册给出一个有意极小字号的图:数值与标签都存在,确定性检查仍可能得分 1,但人无法阅读。这个反例的用途不是教人骗分,而是测量验证器尚未覆盖的边界。
改变条件也会改变标签。某段文字被裁掉一半,作业归为可读性问题;必要标签整个在图片外面,则按缺失标签归为图形要求不符。明确约定这些边界,人工标注者与模型评价器才有机会一致。
验收要能指出错在哪里
不要只输出“这张图有问题”。合格解释应指出“任务要求销售额和为 30、70,图中却为成本和 12、28”,或“图例矩形覆盖了 A 柱和数值”。这让后续修复能回到数据处理还是版式布局,而不是随机换配色。
文件能打开证明产物存在;数据、设计与阅读检查才说明它能回答任务。 在真正评分前,先保存这四类错误的正反例,并要求验证器在未见任务上解释具体证据。下一课会检查这个验证器本身是否值得信任。
理解题 1:图很漂亮,但把成本画成销售额,属于什么问题?
wrong_data。它选择了错误数据列。外观质量无法弥补数据对象错误,必须回到输入与聚合过程核查。
理解题 2:结构化文件写了 30、70,就能跳过最终图片吗?
不能。图可能画了别的数,或标签与图例遮挡。结构化结果与最终渲染需要交叉验证。
理解题 3:评价器漏过极小字号,应该直接说 Agent 成功吗?
不能。那只说明当前验证器的规则没有捕获可读性失败。应保留这个反例,补充适当视觉检查并重新测量。