跳到主要内容

578 篇博文 含有标签「insider」

查看所有标签

为什么你的 AI 路线图不应该有 12 个月的计划

· 阅读需 10 分钟
Tian Pan
Software Engineer

我上个季度合作的一个团队花了六周时间构建了一个“智能文档分类器”——微调模型、评估框架、自定义 UI,以及整个生产流水线。它在周二上线。接下来的周一,一个全新的通用模型发布了,在同样的评估中,它以零样本 (zero-shot) 的方式击败了他们的微调模型,且无需任何基础设施投入。他们整个第二季度的 OKR 变成了一个仅包含一行 API 调用的包装器。路线图在 12 个月前承诺要“掌控分类技术栈”。而这项承诺在墨迹未干之前就已经错了。

这并非孤例。行业追踪器记录显示,仅在 2026 年第一季度,各大实验室就发布了 255 个模型,到 3 月份为止,平均每周约有三次意义重大的前沿模型发布。成本已经崩溃:API 定价自 GPT-3 以来下降了 97%,顶级供应商之间的差距在大多数基准测试中已缩小到统计噪声范围内。当底层技术变化如此之快时,一份为期 12 个月的特性路线图就不再是计划——而是一份你无法重新审视的赌注清单,这些赌注是根据在你交付第二个项目之前就会过时的信息做出的。

物理隔离 LLM 蓝图:无出站流量部署的真正需求

· 阅读需 12 分钟
Tian Pan
Software Engineer

云端 AI 的策略通常建立在一个没有人明确写下来的前提之上:出站 HTTPS (outbound HTTPS)。厂商 API、托管评测器、遥测流水线、模型注册表、向量存储、仪表板 SaaS、密钥管理器——其中的每一个都静默地解析到公网上的一个域名。一旦拔掉这根电缆,整个技术栈并不会优雅降级,而是会直接崩溃。

大多数团队直到那一刻才会发现,他们的架构中存在从未考虑过的出站依赖。一个“微小”的提示词更新可能需要调用托管分类器;评估套件需要通过网络访问 LLM 评测器;可观测性代理会向后端发送数据;模型注册表从 CDN 拉取权重。这些都不是恶意的,也并不罕见。当你忽视了那根电缆时,云原生技术栈本就是这个样子的。

你的 Embedding 模型选择决定了 RAG 的上限,而 LLM 无法突破它

· 阅读需 13 分钟
Tian Pan
Software Engineer

我建议的一个团队花了两个月时间在其 RAG 流水中不断更换 LLM。从 Claude 到 GPT,再到 Gemini,最后又换了回来。每一次更换都能让幻觉率降低几个百分点,但从未在关键指标上有所进展:他们的支持代理找到正确知识库文章的概率仍然不到 60%。他们调优的层级错了。检索器返回的是无关的文本块,而无论 LLM 多聪明,都无法根据检索器从未呈现过的文档来回答问题。

嵌入模型是 RAG 系统中决定 LLM 甚至“被允许”看到什么的部分。它描绘了语料库的几何结构——即在向量空间中,哪些文档会落在哪些查询附近。一旦这种几何结构出错,LLM 就只是一个对错误上下文侃侃而谈的自信叙述者。换一个更聪明的 LLM 通常只会让回答更显“文采”,而不会让回答更准确。

将 Eval 作为 Pull Request 评论而非任务:在代码审查中嵌入 LLM 质量门禁

· 阅读需 12 分钟
Tian Pan
Software Engineer

许多自称“有评估(evals)”的团队,其实际情况是:有一个仪表板,某人每周运行一次测试套件,然后将数据粘贴到没人看的 Slack 频道。评审人员批准提示词(prompt)更改时,甚至根本没看过它是否影响了测试套件,而回归问题(regression)两周后才在客户反馈单中显现。评估确实存在,但评估并未进入开发循环。

解决办法在于结构,而非意愿。只有当评估存在于变更发生的地方——即 Pull Request(PR)评论中,紧挨着代码差异(diff),并带有单个 PR 的增量变化和评审员无法忽视的回归提醒时,评估才能真正起到质量把关的作用。在其他任何地方,它们都只是表演性的产物:投入了大量精力构建,却什么也拦截不到。

评估集腐化:为什么评估分数在上升,而用户满意度在下降

· 阅读需 11 分钟
Tian Pan
Software Engineer

评估分数连续两个季度呈上升趋势。仪表盘是一片绿色,回归测试套件自三月以来从未标记过真实的失败,团队交付 prompt 更改的速度也变快了,因为评估(eval)给出了清晰的通过/失败答案。与此同时,用户反馈的质量正在下滑。NPS 下降了 4 分,支持队列里堆满了没人标记过的失败模式,产品负责人开始质疑:如果客户这么生气,为什么评估结果看起来却这么好?

评估集没有撒谎。它正在回答六个月前它被构建时要回答的问题,针对的是发布周存在的流量分布。产品已经发生了偏移。用户群体已经发生了偏移。发布时团队未预见到的长尾用例现在占了流量的三分之一。评估集仍在衡量第一周的世界,而团队正在用昨天的产品对今天的模型求平均值。

这就是评估集腐化(eval set rot)。它是现代 AI 工程中最隐蔽的失败模式之一,而且随着评估集的变大而变得更糟,因为维护它的人将“更多用例”误认为是“更好的覆盖”。

多步 Agent 的延迟预算:为什么 P50 会说谎,而 P99 才是用户的真实感受

· 阅读需 12 分钟
Tian Pan
Software Engineer

仪表盘显示智能体很快。P50 停留在 1.2 秒,团队开会庆祝,然后放弃率却在持续攀升。没有人关注用户真正体验到的那个图表。

!["https://opengraph-image.blockeden.xyz/api/og-tianpan-co?title=%E5%A4%9A%E6%AD%A5%E6%99%BA%E8%83%BD%E4%BD%93%E7%9A%84%E5%BB%B6%E8%BF%9F%E9%A2%84%E7%AE%97%EF%BC%9A%E4%B8%BA%E4%BB%80%E4%B9%88%20P50%20%E4%BC%9A%E8%AF%B4%E8%B0%8E%EF%BC%8C%E8%80%8C%20P99%20%E6%89%8D%E6%98%AF%E7%94%A8%E6%88%B7%E7%9A%84%E7%9C%9F%E5%AE%9E%E6%84%9F%E5%8F%97"]

这是生产环境中多步智能体可靠的失效模式:中位数是你能够达到的指标,而尾部延迟才是你用户感受到的指标。随着你在流水线上不断增加子调用,这两者之间的差距会呈非线性增长。一个包含四个步骤的智能体,即使每一步在“中位数表现”上都很快,其 P99 通常也会比任何单步操作糟糕 6 到 8 倍。用户体验到的不是中位数,而是他们那次特定请求中最慢的一步。

如果你的团队优化了错误的分位线,你交付的系统将拥有出色的基准测试表现和精美的演示效果,但在你从未监测的长尾场景中,用户正不断流失。

你的 LLM 账单只占 Agent COGS 的一半 —— 另一半是无人监控的部分

· 阅读需 11 分钟
Tian Pan
Software Engineer

当财务团队第一次要求 AI 产品团队预测单位经济效益(unit economics)时,对话往往如出一辙。团队打开推理仪表盘,指着每月的 token 支出说:“这就是我们的销售成本(COGS)。”CFO 乘以预估业务量,在图表上画出一条线,并询问毛利率曲线何时能跨过 70%。六周后,当实际损益表(P&L)出炉时,仪表盘上的推理数字是正确的,但毛利率却比预测低了 20 个百分点。没人撒谎。推理费用其实只占 Agent 实际成本的一半。

另一半成本分散在 AI 团队中无人负责的各个分项中。向量数据库的账单在悄无声息地增长,因为检索量随使用量增加,而重新索引的成本计入了计算费用,而非存储费用。可观测性平台的发票则从平台团队的预算中支出。嵌入重构(Embedding regeneration)表现为 CI 成本。遥测数据存储被归入数据仓库。人工审核则计入客户成功(customer-success)的人员成本。这些项目单独看都不起眼 —— 这正是为什么整合后的数字会让所有人大吃一惊。

无人测试的隐私边界:为什么“无状态”工具是 AI 时代的 IDOR

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个被标记为“无状态”的工具是运行时无法兑现的承诺。在函数签名的背后,坐落着 Redis 缓存、向量索引、嵌入存储、限流表、记忆层、热路径上的 LRU——其中任何一个都是共享的基底层,一个用户的数据可能会落在另一个用户的响应中。函数是无状态的。系统则不然。在 2026 年,这是我在 Agent 系统中看到的最常见的隐私漏洞,因为几乎没有人对此进行测试。

对于任何开发过经典 Web 应用的人来说,这种漏洞的形式都熟悉得令人沮丧。不安全的直接对象引用(IDOR)曾是 Bug 赏金猎人们十年来的家常便饭:一个请求处理程序接收记录 ID 并返回记录,却不检查调用者是否有权查看。AI 时代的版本是同样的漏洞,但影响范围更广:一个工具调用接收查询并返回数据,却不检查调用者的租户是否拥有该数据。查询是用自然语言表达的。缓存键是一个哈希值。检索是近似的。这些都不能免除你的授权责任,但其中的每一项都让漏洞在代码审查中更难被发现。

为什么你的提示词库应该是 Monorepo,而不是 Cookbook

· 阅读需 13 分钟
Tian Pan
Software Engineer

我最近合作的一个团队有三个不同的“总结这份合同”提示词。一个存在于 Notion 页面中,法律科技小队将其复制粘贴到他们的服务里。一个存在于客户成功后端的 prompts/ 文件夹中,为了适应他们的语气偏好做了轻微修改。还有一个内联在数据团队 notebook 里的 Python 文件中,被硬编码在两个 f-string 插值之间。当 OpenAI 弃用了它们运行的所有模型时,迁移计划变成了一场 “Slack 考古” —— 必须追踪到每个所有者,重新评估每个变体,其中两个变体在生产环境中默默地出了一周的故障才被察觉。

这就是规模化后的提示词 Cookbook 的样子。对于十个提示词和一个团队来说,Cookbook 是合理的。但当提示词达到一百个、团队达到四个左右时,它们就会变得难以管理。当你运行一个 AI 组织时,你的 prompts/ 文件夹(装满 .md 文件)的表现就像 2008 年那种靠复制粘贴引入的第三方代码:每个消费者都有自己的快照,偏差(drift)是不可见的,而破坏性变更会以不可预测的方式向外扩散。

工具调用顺序是偏序,而非集合

· 阅读需 12 分钟
Tian Pan
Software Engineer

“先创建后通知”的序列在开发阶段运行良好。而“先通知后创建”的序列则会为一个尚不存在的实体触发 webhook,导致消费者返回 404,接着你的团队会花上一周时间来调试这个看起来像是不稳定的集成测试。这种不稳定并非随机。它是确定性的,源于你的工具集拥有而你的规划器(planner)却不知晓的隐藏排序不变性。

这就是生产环境中 Agent 工具调用排序 bug 的常见形态:工具集在底层以偏序(partial order)方式组合——某些操作必须先于其他操作执行,而另一些则可以按任意顺序运行——但在规划器看来,它们只是一个无序的能力集合。模型选择了一个昨天行之有效的顺序。而明天,一次提示词修改、模型升级,甚至只是不同的 temperature 采样,都会选出另一个顺序。对于阅读追踪记录(trace)的人来说,这两种顺序看起来都很合理。但其中只有一个是正确的。

如果不声明顺序,团队交付的就是一个最终会被模型的提示词敏感性(prompt sensitivity)触发的 bug 隐患。

Semver 的谎言:为什么 LLM 的次要更新比重大重构更容易搞垮生产环境

· 阅读需 12 分钟
Tian Pan
Software Engineer

在 AI 工程领域流传着一个隐秘的神话:模型的一次“小幅”升级——比如 claude-x.6claude-x.7,或者 gpt-y.0gpt-y.1,甚至是按日期推进的补丁级快照更新——都应该是无缝替换的。厂商发布的更新日志里谈论着推理能力的提升、更低的延迟以及更好的工具调用。版本号轻轻跳动,没有任何迹象表明这些改动会破坏现有系统。

然后更新上线了。值班频道随即被各种警报点亮:摘要生成器莫名其妙多出了一段以前没有的话;JSON 提取器开始对以前不处理的 Unicode 字符进行转义;Agent 循环在以前只需三次调用就能完成的任务上,现在却触碰到了最大步数限制。从整体上看,评估得分似乎没什么问题,但用户可见的功能却在细微之处出了错。

智能体灾难恢复:当工作记忆随区域一同失效时

· 阅读需 14 分钟
Tian Pan
Software Engineer

你团队每季度演练的灾备 (DR) 操作手册是为了一套你已经不再完全运行的技术栈编写的。手册上写着:提升从库、重新指向 DNS、清空队列。它假设状态存储在数据库、队列和对象存储中 —— 这些是 SRE 团队已经管理、命名并测试了十年的地方。接着在上个季度,你上线了一个智能体 (agent)。现在,工作内存存在于推理提供商的会话缓存中、工作节点本地磁盘上的草稿文件里、尚未回写的在途工具调用结果中,以及仅存在于单次模型调用提示词历史中的部分“计划-执行”轨迹 (trace) 里。这些都不在资产登记簿上,也不在操作手册里。

当区域宕机时,智能体并不会干净利落地失败,而是处于一种“半完成”的状态。用户看到工作流已经开始,但故障转移后的区域无法恢复进度;客户收到了两次账单,或者根本没收到,因为幂等键存在于已经失效的工作节点上;值班工程师读着 Slack 频道里的讨论,开头是“编排器已启动,但是...”,六小时后以处理信用卡拒付队列告终。

这就是没人点破的鸿沟:智能体特性拥有现有灾备计划未曾描述的状态模型。如果团队还没有记录下这些状态表面,那么只需一次区域性停机,他们就能深刻体会到操作手册的缺失所带来的代价。