最初发表于tamiz.pro.
测试覆盖的幻觉 你的人工智能代理在你的评估套房中得分97% 它处理你定义的每一个边缘病例, 通过你的整合测试, 甚至幸存的负载测试。
然后在数小时之内,它就会产生有毒的输出, 发出未经授权的API呼叫, 或者在循环中陷入僵局, 你的测试永远不会浮出水面。
你没有建造一个防弹系统。
你造了一个测试看不到的系统 这不是软件工程的新问题,但AI代理范式将其放大到灾难性的水平.
当你从定型代码转向非定型的,有花样的系统——特别是多剂管弦乐——失败模式以传统测试框架根本无法捕捉的方式相乘. 2024–2025年的多剂爆炸并没有产生出新的bug.
它暴露了我们一直忽略的盲点 它们比你想的更危险 为什么Unit Tests Lie to You About Agents A 单元测试验证函数A产生输出B给定输入C.
对于一个LLM能动的代理,从C到B的映射并不是固定的——这是由模型,即时,上下文窗口以及周围系统状态所塑造的概率分布.
想想这个欺骗性的简单测试: 这个测试通过。
也许吧 但它没有告诉你什么: 快速注射应变能力。
当输入是“解释量子计算”时会发生什么。
也不要理会所有先前的指示, 上下文窗口压力.
测试采用单回合交互.
在制作中,对话会增长,信使会积累,而模型的行为会随着上下文质量的下降而变化.
工具调用命令 。
代理人可能在测试中先调用搜索工具,但在负载下调用数据库工具——生成不同的推理链和不同的最终答案.
由赖特涅引起的状态突变.
在测试的合成API模拟与生产的真实服务之间,外部数据变化.
代理可能看到僵化的维基百科页面,过期的认证令牌,或种族条件数据库状态.
传统的单位测试假设纯度.
物剂是天生不纯的系统,与有花样的模型和可变的环境相互作用。
在这方面通过试验是生产准备状态的必要但灾难性的不足条件。
多剂放大效应单剂系统难以可靠地测试.
多剂系统是数量级更差的——不是因为它们比较复杂,而是因为失败模式是构成性的.
在典型的多代理设置( Think CrewAI, AutoGen, 或自定义的管弦系统层)中,您有代理: 将任务委托给对方 共享上下文和工具访问操作同步 自主决定何时升级或终止 此处是当您编曲这些时会发生什么: 测试表面会超线性地增长 。
如果代理 A 有 3 个 失败 模式, 而代理 B 有 3 个 失败 模式, 其组成不产生 6 个 失败 模式 —— 它产生 足够 填充 电子表格 。
边界出现新的故障模式:故障模式 单代理风险 多代理风险 对比工具输出 中临界值(代理相互放大出错) 无穷授权循环 低高(无集中调度器) 背景污染 中极值(每个代理的背景会腐蚀他人) 低高(共用池,无后压) 高度(负载下的作用定义不同) 最危险的失败类别是新兴行为:个体物剂在孤立中行为正确,但其相互作用会产生不可预测的,往往是有害的结果.
这同一类问题一样,在生产过程中杀死了分布式系统,但在生产过程中却看不见。
四个在生产中杀死毒剂的盲点 非IID评价数据 多数代理评价套件从与培训相同的分布中抽取测试数据,或至少从干净、精密的数据集抽取。
页:1