跳到主要内容

182 篇博文 含有标签「reliability」

查看所有标签

LLM 伪造问题:当模型为错误答案构建出令人信服的论据

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的模型写出了一份详细、结构清晰的分析报告。每个句子在语法上无懈可击,内部逻辑自洽。它引用的具体事实也都是准确的。然而结论却是错误的——不是因为模型缺乏得出正确结论所需的信息,而是因为它在开始推理之前就已经决定好了答案。

这不是幻觉。幻觉是模型凭空捏造事实。伪造问题更为隐蔽,在生产系统中也更难被发现:模型先得出结论,再构建一条听起来合理的证据链来支撑它。事实是真实的。综合分析却是谎言。

温备问题:为何你的 AI 覆盖按钮不是安全网

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数构建 AI 代理的团队都在为成功而设计。他们衡量成功率,为代理自主处理 90% 工单而欢呼雀跃,然后在 UI 角落放一个"点击此处覆盖"按钮来应对剩余的 10%,之后便一走了之。

这个按钮不是安全网。它是一种包装成功能的责任。

失败模式不是代理崩溃,而是名义上负责的人类在崩溃发生时无法接管。AI 逐渐吸收了任务——每次一个工作流,每次一个边缘案例——直到过去处理这些任务的操作员已经六个月没碰过它,失去了上下文,却被迫应对一个他们已经无力管理的实时状况。这就是温备问题,它会悄无声息地积累,直到某次事故将其暴露出来。

将你的 LLM 提供商视为不可靠上游:AI 的分布式系统实战手册

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的监控仪表板一片绿色。响应时间看起来正常。错误率接近于零。然而你的用户却在提工单投诉垃圾回答,你的 agent 正在做出自信满满的错误决策,你的客服队列里塞满了与任何基础设施告警都不相关的投诉。

欢迎来到在生产环境中依赖 LLM API 的独特地狱。这是一个能在返回完美健康的 200 OK 的同时让你翻车的上游服务。

AI 融入 SRE 循环:哪些有效、哪些失效,以及边界在哪里

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数线上故障的失败,并非因为缺乏工具,而是因为值班工程师在最需要的时刻无法快速获得足够的上下文。凌晨三点,工程师被一墙的触发告警惊醒,先花 20 分钟拼凑出到底哪里出了问题,再花 20 分钟判断该用哪份运维手册,等到真正开始执行修复时,故障已经持续了将近一个小时。而实际的修复动作可能只需要 5 分钟。

AI 能够将这个上下文收集窗口从 40 分钟压缩到 2 分钟以内。这才是真正摆在桌面上的价值。但"LLM 帮助值班工程师"并不是一个单一的产品决策,而是一系列决策的叠加,每一层都有其独特的失效模式,而某些失效模式的后果,远比客服聊天机器人幻觉严重得多。

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

· 阅读需 11 分钟
Tian Pan
Software Engineer

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

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

非确定性系统的 SLO:当每次响应都不同时如何定义可靠性

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的 AI 功能返回 HTTP 200,在 180ms 内完成,生成了有效的 JSON。按照所有传统 SLI 指标,这个请求是成功的。但答案是错的——一个编造的产品规格、一条捏造的法律引用、一个微妙错误的计算。你的监控一片绿色,用户却怒火中烧。

这就是 SRE 在 AI 系统上失效的根本性断裂。传统可靠性工程假设成功的执行会产生正确的结果。非确定性系统在每一个请求上都违反了这个假设。同样的提示、同样的上下文、同样的模型版本,每次都可能产生不同的——且错误方式各异的——答案。

校准差距:你的 LLM 说有 90% 的把握,但实际上只有 60% 的准确率

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的语言模型告诉你,它有 93% 的把握认为 Geoffrey Hinton 在 2010 年获得了 IEEE Frank Rosenblatt 奖。然而实际的获奖者是 Michio Sugeno。这不是传统意义上的幻觉——模型生成了一个听起来合情合理的答案,并给它附上了一个高置信度分数。问题在于,这个置信度数字本身就是谎言。

这种声称的置信度与实际准确率之间的断层,就是所谓的校准差距。它是生产 AI 系统中被严重低估的故障模式之一。那些在原始模型置信度分数之上构建路由逻辑、升级触发器或用户可见置信度指示的团队,是在沙滩上建楼。

信任校准曲线:用户如何学习(误)信任 AI

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数 AI 产品都以同样的方式走向终结。演示(Demo)很成功。测试用户赞不绝口。你发布了产品。然后,在大约三个月后,会话时长(session length)下降,功能闲置,你最活跃的早期用户开始绕过 AI,直接使用底层工具。

这不是模型质量问题,而是信任校准(trust calibration)问题。

“过度信任 → 失败 → 过度修正”的生命周期是 AI 产品采用率最可靠的杀手,而且如果你理解发生了什么,这几乎是完全可以预防的。研究已经很明确,失败模式是可预测的,设计模式也已经存在。大多数团队在看到留存曲线并想弄清楚出了什么问题之前,都会忽视这一切。

准确率阈值难题:当你的 AI 功能好到无法忽视却又差到无法信任

· 阅读需 11 分钟
Tian Pan
Software Engineer

麦当劳将其 AI 语音点餐系统部署到了 100 多个网点。在测试中,它达到了似乎可行的准确率—— 80% 左右。客户开始发布系统在未经提示的情况下向订单添加九杯甜茶、在冰淇淋上放培根,以及信誓旦旦地听错简单要求的视频。两年内,合作伙伴关系解散,该技术从所有网点移除。实验室的准确率是真实的,但现实世界的数据分布并非实验室所测试的那样。

这就是准确率阈值问题。存在一个区域——大约 70% 到 85% 的准确率——在这个区域内,AI 功能的精确度足以让它看起来有效,但在没有持续人工干预的情况下,其可靠性不足以真正发挥作用。团队之所以发布这个区域的产品,是因为数字看起来足够接近。用户会感到困惑,因为该功能刚好足够好到诱使他们产生依赖,又刚好足够差到在关键时刻失效。

组合测试鸿沟:为什么你的智能体通过了每一项测试却在协作时失败

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的规划智能体(planner agent)在评估套件中的通过率为 94%。你的研究智能体(researcher agent)得分甚至更高。你的合成智能体(synthesizer agent)完美通过了你投喂的每一个基准测试。你将它们组合成一个流水线,部署到生产环境,然后眼睁睁地看着它产生自信的错误答案——而任何单个智能体都不可能独立生成这些错误。

这就是组合测试鸿沟(composition testing gap)——这是一个系统的盲点,即经过独立验证的智能体会以单智能体分析无法预测的方式失败。对多智能体 LLM 系统(multi-agent LLM systems)的研究表明,67% 的生产故障源于智能体之间的交互,而非单个智能体的缺陷。你测试的是原子,但交付的是分子,而分子的行为并非原子属性的简单叠加。

LLM 请求生命周期是一个状态机 —— 像对待状态机一样对待它

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数团队将 LLM 请求处理视为一个线性函数:调用 API,检查异常,可能重试一次,然后返回结果。但在实践中,情况完全不是这样。从用户触发 LLM 调用到响应出现在屏幕上的那一刻,一个请求可能会经历十几个隐式状态 —— 尝试主供应商、等待退避、切换到备用方案、验证输出、使用优化后的提示词进行重试 —— 而这些转换过程都没有被记录或可视化。

其结果是,调试变成了在分散于各个服务的日志中进行事后追溯,对于 “这个请求实际上做了什么?” 这一问题,没有一个权威的答案。将 LLM 请求生命周期视为一个显式的有限状态机,是一种架构上的演进,它让你无需进行考古式的工作就能回答这个问题。

你的 try/catch 漏掉的 LLM 请求生命周期

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 LLM 技术栈可能产生的最危险故障返回的是 HTTP 200。JSON 解析正常。你的 Schema 验证通过。没有抛出异常。而响应结果却是完全错误的 —— 事实错误、结构错误、话说到一半被截断,或者是凭空捏造。

围绕 LLM API 调用编写的一个简单 try/catch 只能处理那些明显的故障:速率限制、服务器错误、网络超时。这些是可见的故障。而那些不可见的故障 —— 比如模型达到了 Token 限制并在回答中途停止、一个智能体在找到正确的参数名称之前多循环了 21 次工具调用、一次验证重试让你的成本增加了 37% —— 这些都不会产生异常。它们会产生结果。

解决方法不是更好的错误处理,而是将 LLM 请求生命周期建模为一个显式的状态机。在这个状态机中,每一次状态转换都会发出一个可观测的 span,并且故障模式是一等状态(first-class states),而不是被埋没在异常处理程序中。