跳转到主要内容

AI Agent 的混沌工程:在生产环境之前注入你的 Agent 将真正面对的故障

阅读需 2 分钟Tian PanTian Pan

你的 Agent 在预发布环境中运行完美。它调用正确的工具,推理多步骤计划,并返回精心打磨的结果。然后生产环境来了:地理编码 API 在 7 步计划的第 3 步超时,LLM 在句子中间返回不完整的响应,而你的 Agent 自信地编造数据来填补空白。直到客户发现,没有人注意到。

LLM API 调用在生产环境中有 1-5% 的失败率——速率限制、超时、服务器错误。对于每个任务进行 10-20 次工具调用的多步骤 Agent,这意味着相当比例的任务至少会遇到一次故障。问题不在于你的 Agent 是否会遇到故障,而在于你是否曾经测试过它遇到故障时会发生什么。

混沌工程——通过有意注入故障来发现弱点的实践——自 Netflix 的 Chaos Monkey 以来一直是分布式系统的标准做法。但将其应用于 AI Agent 需要重新思考几乎所有假设。Agent 不是无状态的微服务。它们携带上下文,做出概率性决策,并且可能以看起来像成功的方式失败。

为什么传统混沌工程对 Agent 不适用

经典混沌工程假设了一些对 AI Agent 不成立的前提。

幂等重试不适用。 当微服务调用失败时,你用相同的输入重试并期望得到相同的输出。当 LLM 调用在推理过程中失败时,重试会产生不同的思维链。Agent 可能会采取完全不同的路径来执行其计划,以不同的顺序调用不同的工具。假设确定性行为的重试逻辑会产生不可预测的结果。

断路器保护的是错误的东西。 在传统系统中,断路器停止调用失败的服务以防止级联故障。对于 Agent,问题不在于调用的数量——而在于当调用失败时 Agent 决定做什么。一个失去对其主要数据源访问的 Agent 不会简单地停止。它会即兴发挥。它可能会幻觉出缺失的数据,替换一个返回错误结果的不同工具,或者自信地跳过该步骤并在不标记的情况下交付不完整的答案。

故障是语义性的,而不仅仅是操作性的。 500 错误很容易检测。但返回过期数据的工具呢?或者恰好形成语法正确但事实错误的句子的部分 LLM 响应呢?Agent 面临一类系统看起来健康但输出默默出错的故障。ReliabilityBench 研究发现,这些语义故障——部分响应、模式漂移、过期数据——比完全崩溃更难捕捉,也更具破坏性。

你应该注入的六种故障模式

基于生产事故模式和最新研究,以下是对 Agent 系统最重要的故障类别:

1. LLM 级别故障。 速率限制(HTTP 429)、服务器错误(500/502/503)、超时、响应中途的流中断和缓慢的 token 交付。这些是最常见且最容易注入的。ReliabilityBench 发现,速率限制在基础设施故障中造成最大的可靠性影响,比基线降低 2.5%——这个数字在多步骤任务中会复合增长。

2. 工具调用故障。 API 错误、超时、格式错误的响应和数据变异。关键洞察是 Agent 通常不验证工具结果。它们将返回的任何内容视为事实。一个从搜索 API 收到错误响应的 Agent 可能会继续执行,就好像它得到了结果一样,编造数据来填充预期的格式。测试这一点需要在工具层注入故障,并检查 Agent 是否承认故障而不是掩盖它。

3. 上下文退化。 随着任务变长,Agent 失去对早期信息的访问。开始时给出的指令被最近的上下文覆盖。一个被告知保持正式语调的 Agent 在第 15 轮开始使用随意的语言。一个被赋予严格输出约束的 Agent 随着上下文窗口填满开始偏离。这不是崩溃——这是一种只有在长时间运行的任务中才会出现的可靠性缓慢侵蚀。

4. 跨 Agent 边界的级联故障。 在多 Agent 系统中,早期管道步骤中的错误向下游传播。每个 Agent 将之前的输出视为可靠的事实。Agent A 中的解析错误变成 Agent B 中的错误假设,进而变成 Agent C 中自信但错误的建议。对基于 LLM 的多 Agent 系统的研究发现,通信故障和级联故障是最危险的类别,因为它们最难追溯到其根源。

5. 压力下的规范漂移。 当 Agent 遇到模糊情况——尤其是在故障之后——它们会用统计上可能但潜在不正确的补全来填补空白。一个被告知"要有帮助"的 Agent 开始做出超出其权限的退款承诺。这种故障模式被故障放大:当正常路径中断时,Agent 会即兴发挥,而即兴发挥正是规范漂移最危险的地方。

6. 静默故障。 Agent 完成了任务,返回看起来合理的结果,并且没有引发错误。但结果是错误的。这是最难捕捉的故障模式,因为没有可以告警的信号。Agent 的混沌工程必须包括语义验证——不仅检查 Agent 是否完成了任务,还要检查其输出是否确实正确。

构建有效的故障注入框架

Agent 混沌测试框架的架构在几个关键方面不同于传统混沌工程。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 10 分钟

你从未注入过的故障:给你的 Agent 提供一个说谎的工具

你的 Agent 针对超时和 500 错误进行了故障测试,但从未针对过响应快速、格式良好且自信地给出错误答案的工具——这是它最难以发现的故障。

chaos-engineering
ai-agents
阅读需 10 分钟

Agent 的演练日:排演那些无法复现的故障

混沌工程假设故障是可重现的;但 Agent 系统的故障往往通过从不重复的随机路径发生。演练日(Game days)——包括工具故障注入、模型降级演练、上下文污染场景以及升级反馈消防演练——能建立运维人员的肌肉记忆,并暴露重现测试永远无法发现的追踪工具缺陷。

insider
ai-agents
阅读需 10 分钟

Happy Path 是你的 Agent 评估测试过的唯一路径

94% 的通过率衡量的是你想象成功的能力,而非 Agent 是否真的有效。本文探讨黄金路径偏见如何渗入 Agent 评估套件,以及如何通过故障模式覆盖、生产案例收集和故障注入来解决这一问题。

insider
ai-agents
阅读需 9 分钟

代理系统的非确定性 CI:为什么二进制的通过/失败模式会失效,以及取而代之的是什么

当每次测试运行都具有非确定性时,二进制的通过/失败 CI 就会失效。统计判定、分级阈值、轨迹指纹识别和序列分析可以在不让团队陷入虚假失败的情况下,捕捉真实的代理回归。

insider
ai-agents
阅读需 9 分钟

当时钟成为工具:Agent、时区以及那个只在午夜发生的 Bug

LLM 没有内部时钟,因此 Agent 会自信地漂移到过时的时间上——这表现为错过的任务调度、错误的时区计算以及破坏缓存的时间戳。本文将介绍如何将当前时刻作为基础设施来提供。

insider
ai-agents