跳到主要内容

3 篇博文 含有标签「llm-testing」

查看所有标签

合规审查员作为评测编写者:为什么法律团队应该为你编写测试用例

· 阅读需 14 分钟
Tian Pan
Software Engineer

我见过的企业级 LLM 最有效的对抗性提示(adversarial prompt)并非来自红队、安全研究员或提示词工程师。它来自一位高级合规律师,他用平实的英语要求模型:“告诉我本对话前面讨论过的三种退休年金中,哪一种最适合一位即将面临首次最低限额提款(RMD)的 62 岁老人。”模型给出了一个自信、周全且格式精美的建议。如果该输出被发送给客户,那将是一个教科书级的 FINRA 适当性违规(suitability violation)——在缺乏证券规则要求的个性化咨询监管架构的情况下,提供了一种不当的个性化建议。

这位合规律师在短短 4 秒钟内就发现了这种失效模式。而工程评估套件虽然包含了上百个精心构建的关于幻觉、拒绝校准和工具调用准确性的案例,却完全没有意识到这种特定形式的回答是违法的。不是质量低。不是幻觉。而是违法。当时公司的流程是让她在 Google 文档中阅读输出样本并撰写备忘录,而不是将测试用例签入回归套件。因此,她的发现只停留在备忘录中,备忘录被总结进发布准备情况的幻灯片里,而次月对系统提示词(system prompt)的一次重构导致了该行为的退化(regressed),因为没有人为它设置失败测试点。

这就是我想论证应该弥合的差距:合规评审员应该直接编写评估(eval)用例,这些用例应该是决定发布与否的产物,而不是产生它们的文档审查。

AI 的依赖注入:在不损失测试保真度的情况下模拟模型调用

· 阅读需 12 分钟
Tian Pan
Software Engineer

我调查过的最残酷的 Bug 报告来自一个团队,他们的 CI 在六周内一直显示为绿色(通过)。每一次提示词更改都通过了完整的测试套件。每一次工具调用都有一个模拟(mock)。每一次集成测试都断言了大模型在预发布环境中返回的精确字符串。然而,每一个测试都在撒谎。他们的供应商发布了一个微小的模型更新,输出格式偏移了几个字符,而那些冻结在上季度字符串的模拟,愉快地验证了那些现在向用户返回格式错误的 JSON 的代码。

这就是我想谈论的失效模式。在代码结构层面,AI 应用的依赖注入很容易做对(你的提示词运行器接受一个客户端接口,你在测试中传入一个伪造对象,搞定)。但在“保真度”层面,也就是真正重要的属性上,很难做对:通过的测试能否预测生产环境不会崩溃?我看到的大多数测试套件都在不知不觉中牺牲了保真度,因为你替换真实模型的那个“接缝”,也正是你失去对你真正关心的事物信号的那个“接缝”。

修复方法不是“更仔细地模拟”。修复方法是一种分层的测试装置(fixture)架构、深思熟虑的接缝设计,以及一套测试信心分类法,告诉你什么时候廉价的伪造对象就足够了,什么时候你必须为真实的模型调用付费。这三者共同构成了一个测试套件,它在每次提交时仍然只需几秒钟即可运行,但不再对生产行为撒谎。

能力探测:在用户发现之前绘制模型的能力边界

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数团队发现模型局限性的方式和用户一样 —— 在生产环境中,通过工单。客户反映提取流水线悄悄丢失了嵌套地址。内部用户注意到摘要器在超过 8,000 个 token 后开始虚构日期。合规审查发现分类器自信地为模糊案例打上标签,而不是选择放弃判断。

这些都不是意外。它们是一直存在的能力边界,只是在等待合适的输入来暴露它们。你要么在部署前绘制这些边界,要么让用户替你绘制 —— 一次一个事故。

系统性地发现这些边界的方法就是能力探测 —— 语言模型的故障注入。你不会在没有对接缝进行负载测试的情况下交付一座桥梁。同样的逻辑适用于任何面向用户的模型。