在你的模型出错之前,你的评估框架(Harness)会先骗你
你的评估计分板显示两个引擎都失败了。
Llama3.2 在 6 个案例中失败了 5 个。 Anthropic Sonnet 在 6 个案例中全部失败。
标签显示为“格式错误(malformed)”。但原因各不相同。
其中一个失败是因为额度耗尽导致的 API 错误。 一个失败是因为 CLI 命令产生的终端控制字节损坏了文本。 一个失败是因为有效的 JSON 被包裹在 markdown 代码块中,导致解析器无法读取。
如果我发布了最初的摘要,那我就是在撒谎。我会把代码本身的错误归咎于模型。
我通过查看原始记录而非仅仅信任摘要发现了这些 bug。
第一个 bug 是因为我使用了 CLI 子进程来调用 Ollama。该命令产生了诸如加载动画(spinners)和光标移动等终端动画。这些 ANSI 控制字节进入了我的数据中。解析器检测到了不可见字符并崩溃了。
修复方法:从 CLI 子进程切换为直接使用 HTTP API。
第二个 bug 是因为 LLM 经常将 JSON 包裹在 markdown 代码块中。我的解析器对原始字符串使用了 json.loads()。它识别到了反引号(backticks)并导致失败。
修复方法:在解析前添加一个用于去除代码块标识符的函数。
一旦我修复了数据管道,真实的结果就显现出来了。
模型并没有“失效”。它们只是被评估框架弄乱了。修复之后,两个模型之间的质量差距变得清晰可见且可衡量。
对你的 AI 评估流水线的启示:
- 保留原始输出。如果摘要显示格式错误,原始输出是你唯一的真相来源。
- 记录失败的原因。不要只说“格式错误”,要说“API 错误”或“解析错误”。
- 固定你的测试标准。不要为了让结果看起来更好而更改规则。
- 将评估框架视为被测系统的一部分。
被审判的不只是模型,你的代码也是。
Source: https://dev.to/kenielzep97/your-harness-will-lie-to-you-before-your-model-does-662
Optional learning community: https://t.me/GyaanSetuAi
