跳到主要内容

780 篇博文 含有标签「ai-engineering」

查看所有标签

智能体记忆污染:一次错误工具响应如何毒害整个会话

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的智能体正确完成了一项多步研究任务的 80%,然后自信地给出了一个完全错误的结论。你翻查日志,在第三步找到了罪魁祸首:一次工具调用返回了过时数据,智能体将其作为事实整合,之后的每个推理步骤都建立在这个被毒化的前提之上。到会话结束时,智能体对一切都是正确的——除了最关键的那件事。

这就是智能体记忆污染——它是生产智能体系统中最隐蔽的可靠性故障之一。与崩溃或超时不同,它产生的是自信的错误答案。可观测工具记录的是一次成功运行,用户带着错误信息离开。

智能体系统就是分布式系统:在遭遇惨痛教训前应用微服务经验

· 阅读需 16 分钟
Tian Pan
Software Engineer

多智能体 AI 系统在生产环境中的失败率令人汗颜。一项分析了七个流行框架、超过 1,600 条执行追踪的地标性研究发现,失败率在 41% 到 87% 之间。卡内基梅隆大学的研究人员指出,在多步基准测试中,领先的智能体系统的任务完成率仅为 30–35%。Gartner 预测,到 2027 年底,40% 的智能体 AI 项目将被取消。

这就是令人不安的事实:这些并不是 AI 问题。它们是工程师在 2010 年至 2018 年间已经解决的分布式系统问题,这些解决方案详尽地记录在博客文章、会议演讲以及 Martin Kleppmann 的《数据密集型应用系统设计》(Designing Data-Intensive Applications)中。今天能够交付可靠智能体系统的团队并没有施展什么魔法——他们应用的是熔断器(circuit breakers)、舱壁隔离(bulkheads)、事件溯源(event sourcing)和幂等键(idempotency keys)。那些失败的团队则将智能体视为一种全新的范式,而实际上,它们只是旧模式的新部署目标。

为什么 AI 工程培训项目永远落后于模型

· 阅读需 10 分钟
Tian Pan
Software Engineer

2023 年初,大量企业 AI 培训项目带着同一个卖点涌现:我们将教你的工程师提示工程。然而大多数项目完成第一批学员培训时,所教的具体技术已被模型自身自动化淘汰。到 2025 年,曾短暂标价 20 万美元年薪的"提示工程师"职位实际上已走向消亡。而那些培训项目依然在运转。

这就是 AI 课程陷阱。它不是努力或预算的问题。各组织在结构化 AI 培训、认证项目和以工具熟练度为核心的招聘标准上投入了大量资源。但工具的迭代速度快于任何课程所能追赶的速度,结果是一种永久性的结构性滞后:培训项目始终在教 18 个月前的 AI 工程。

AI 辅助开发中无人谈及的合规认证缺口

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的工程师每天都在交付 AI 生成的代码。你的审计人员正在审查变更管理控制——而这些控制是为一个"每行代码都由审批人亲自编写"的世界设计的。两件事同时成立,如果你所在的是受监管行业,这一缺口就是一种你可能尚未充分估量的法律风险。

AI 生成代码的合规认证问题,并非供应商问题——你的 AI 编码工具的 SOC 2 报告并不覆盖你的变更管理控制。这是一个流程认证问题:SOC 2 CC8.1、HIPAA 安全规则变更控制以及 PCI-DSS 第 6 节背后的根本假设是,审批代码变更的人理解代码内容。这一假设已不再成立。

AI 模型 API 是你看不见、固定不了、也追踪不到的软件依赖

· 阅读需 10 分钟
Tian Pan
Software Engineer

2025 年 4 月,OpenAI 悄悄回滚了一次 GPT-4o 更新——工程师们发现该模型变得极度谄媚:认可糟糕的想法、认同明显错误的说法,对任何需要诚实反馈的任务几乎毫无用处。大多数受影响的团队是通过 Reddit 和 Hacker News 才得知此事的。他们的 package.json 没有任何变化,锁文件完全相同,部署流水线也没有标记出任何依赖更新。从标准软件供应链的角度来看,什么都没有发生。

这就是那个你看不见的依赖:你应用背后的基础模型。

AI 原生 API 设计:构建智能体真正能调用的后端

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的 REST API 运行良好。文档齐全,错误码一致,每一个经过测试的人工编写客户端都能正常使用。然后你的团队接入了一个 AI 智能体,不到一小时,它就通过不断重试一个不存在的端点的各种变体生成了 2,000 次失败请求——bulk_search_userssearch_all_usersbulk_user_search——每次尝试都触发了真实的下游处理。

这不是提示词工程的失败,而是 API 设计的失败。

REST API 是为能够解析文档、遵守契约、严格调用规范的客户端而构建的。AI 智能体则不同:它们根据名称和描述推断端点可能做什么,在不追踪状态的情况下重试,并将错误信息视为指令而非诊断代码。为智能体调用方设计 API,需要重新审视大多数后端工程师从未质疑过的基本假设。

AI 入职差距:为什么工程师无法学习他们无法测试的东西

· 阅读需 12 分钟
Tian Pan
Software Engineer

一名新工程师加入了一个重度依赖 AI 的团队。入职第三天,他们发现系统指令中有一个措辞别扭的双重否定。看起来像是个 bug。于是他们把它清理了——这是任何合理的人都会做的小小优化。两小时后,一条关键流水线的客户端分类准确率从 91% 跌至 74%。没有人知道原因。

这种情景以某种形式发生在几乎每一个基于 LLM 构建系统的团队中。新工程师并不粗心。那个提示词看起来确实有问题。但那个双重否定在某种意义上是"承重墙"——只有写下它的人才真正理解,而那是在经过数周实验之后才领悟到的。他们从未把这种理解写下来。

这就是 AI 入职差距:AI 代码库表面上的行为与实际行为之间的鸿沟,以及为什么这个鸿沟在有人掉进去之前是不可见的。

AI 流水线异常处理:幻觉、拒绝和格式违规是一等公民错误

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的 AI 流水线昨晚报告了零错误。但输出结果完全是错的。

这不是假设。一份近期的行业报告发现,大约每 20 个生产环境 LLM 请求中,就有 1 个以永远不会触发异常的方式失败——HTTP 200、格式正确的 JSON、流畅的散文,但内容却是错的。可观测性系统保持绿灯,而流水线却在悄悄地欺骗用户。

根本原因是一个从传统服务工程中借来的架构假设:HTTP 状态码和解析错误覆盖了所有故障空间。但事实并非如此。LLM 流水线至少有四种底层基础设施看不到的故障类型——幻觉、拒绝、格式违规和上下文溢出——把它们当作边缘情况而非一等公民错误类型来处理,正是生产 AI 系统如何大规模传播隐性 Bug 的根源。

AI产品的暗能量:没人预算过的后台计算

· 阅读需 11 分钟
Tian Pan
Software Engineer

当你的AI功能上线时,你会制定延迟预算:模型调用需要多长时间、检索需要多长时间、完整请求的p99是多少。但你几乎可以肯定没有为那些在没有用户观察时发生的推理制定预算。

每个拥有持久化状态的AI产品都在后台运行不可见的工作。文档在上传时被预处理。长对话在会话边界处被重新摘要,以防下一个会话撑爆上下文窗口。主动建议按照没人刻意设定的计划表被生成。当有人更新模式时,嵌入向量被重新生成。这些都不会出现在你的延迟仪表盘上,通常也不在你的成本模型中,几乎从未被监控到。

这就是你AI产品的暗能量——那些解释了你的推理账单"应该是多少"与"实际是多少"之间差距的计算。

为什么你的应用日志无法还原 AI 决策

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个 AI 系统将某份求职申请标记为低优先级。候选人提出申诉。法务部门向工程团队询问:"请展示模型当时看到的确切内容、检索的文档、触发的策略规则以及生成的置信度分数。"工程师打开日志,发现的是:时间戳、HTTP 200、响应体,以及延迟指标。其余的信息已经消失。

这不是日志记录的失败。按照所有传统标准,日志是完整的。问题在于,应用日志从来就不是为记录推理过程而设计的——而 AI 系统不只是在执行代码,它们做出的是依赖上下文的概率性决策,只有给定决策时刻存在的完整输入上下文,才能被理解。

平庸 AI 宣言:为什么单个提示词的表现优于你的自主智能体

· 阅读需 11 分钟
Tian Pan
Software Engineer

一个令人不安的事实:80% 的 AI 项目未能提供业务价值,但团队却一直在追求最复杂的解决方案。一个具备工具调用、记忆检索和自主规划的多 Agent 编排系统可以做一个引人入胜的演示。而一个将客户支持工单路由到正确队列的简单 Prompt,在第一年就能为你公司赚到 200 万美元。这两种结果的可能性并不相等,普遍程度也不同,而行业一直在做出错误的选择。

这种模式是可预测的。一个工程团队构建了一些令人印象深刻的东西,向领导层演示,获得发布批准——然后眼睁睁地看着它在生产环境中悄无声息地退化。与此同时,竞争对手悄悄部署了一个封装了分类器的两百行 Python 脚本,从未进行过演示,却在每一项重要的业务指标上都超越了他们。

面向 Agent 与 RAG 的分块:为什么一套方案会同时拖累两者

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数团队选择一个分块大小,针对检索质量进行调优,然后就此止步。接着,他们在同一个索引上构建一个 Agent,并纳闷为什么 Agent 会以奇怪的方式失败——它只执行了一半的工作流,忽略了条件逻辑,或者根据不完整的指令自信地采取行动。使你的 NDCG 分数最高的分块大小,恰恰是让你的 Agent 变得不可靠的原因。

RAG 检索和 Agent 执行并不是同一个问题。它们有不同的目标、不同的失败模式,以及对什么是“好的分块”有着根本不同的定义。当你针对其中之一优化分块时,你就在系统性地削弱另一个。大多数团队直到已经在错误的架构基础上构建完产品后才意识到这一点。