跳转到主要内容

当你最大的客户端是 Prompt 时,如何弃用 API

阅读需 2 分钟Tian PanTian Pan

你完美地执行了弃用指南。提前六个月发布公告邮件。包含四种语言代码示例的迁移指南。在每个 v1 响应中添加了 Sunset 响应头。开发者仪表板上的横幅。两封提醒邮件。然后你关闭了 v1 —— 但结果并非指南所承诺的安静切换,你的错误率直线飙升并维持在高位。流量没有迁移。它只是不断涌入、失败并重试,且容量比以前更高,因为每一次失败都触发了另一次尝试。

指南之所以失败,并不是因为你执行得不好。它的失败是因为它假设另一端是一个人类 —— 一个会阅读邮件、浏览变更日志并在截止日期前提交 Jira 任务进行迁移的人。你很大一部分流量背后已经没有这样的人了。它来自智能体 (Agent),它们对你 API 的认知被冻结在系统提示词、工具 schema 以及散布在成千上万个你看不见也永远无法触达的代码库中的模型训练数据里。你的停用通知是写给读者看的。而你的最大客户端是一个 Prompt。

弃用指南假设有人在听

标准 API 生命周期的每一步都依赖于在正确时刻出现的人眼。如果有人阅读收件箱,弃用邮件就起作用。如果开发者打开迁移指南,它就起作用。如果有人登录仪表板,横幅就起作用。甚至 Sunset 响应头 —— 工具箱中最具机器可读性的工具 —— 之所以奏效,也主要是因为监控库将其暴露给人类,然后由人类安排迁移。

这个假设已经悄然失效。到 2026 年中,Web 上的自动化请求首次超过了人类流量 —— Cloudflare 的雷达数据显示机器人流量占 HTML 流量的 57% 以上 —— 而智能体部分是增长最快的部分,仅在 2025 年,AI 智能体流量就增长了几千个百分点。API 本身就已经占据了 Web 流量的大部分;现在,这些 API 调用中越来越多的一部分不再是由开发者根据你当前的文档编写的代码组成的,而是由模型在推理时决定你的 API 可能长什么样。

这种区别比原始流量更重要。手写的 SDK 集成虽然陈旧但清晰:在某人编写它时它是正确的,并且有一个代码库可以让开发者去更新。而智能体的集成在三层维度上同时过时,且其中两层根本没有代码库。

智能体对你 API 的认知究竟存在于何处

当智能体调用你的 API 时,它对你端点的认知来自于三种来源的混合,且每种来源的衰减周期都不同:

  • 模型训练数据。 模型在训练时记住了存在于博客文章、Stack Overflow 答案和开源代码中的 API —— 这个快照在模型进入广泛生产使用时通常已经过时一年或更久。更糟糕的是,训练数据是权重偏向热度的:如果旧端点出现在一万个代码库中,而新端点只出现在两百个中,模型会自信地输出旧的那个。这与模型倾向于使用已弃用库的机制相同 —— 已弃用的模式在权重中具有更大的引力。
  • 系统提示词和工具 schema。 某人在某处将你的端点文档粘贴到了系统提示词中,或者编写了一个封装你 API 的 MCP 工具定义。这些文本现在存在于他们的代码库、智能体平台或向量数据库中。它永远不会收到你的弃用邮件。只有当它坏到一定程度以至于需要人类介入调查时,它才会更新 —— 而这恰恰是弃用流程本该防止的故障模式。
  • 检索库中缓存的文档。 那些确实将智能体建立在你文档基础上的团队,通常是通过爬虫构建的 RAG 索引来实现的。如果爬虫频率是每季度一次,你六个月的弃用窗口期仅相当于两次索引刷新 —— 前提是流水线仍在运行且有人重新嵌入了更改后的页面。

注意这三点中缺少了什么:你的变更日志。一份从未进入上下文窗口的弃用通知等同于不存在。模型不知道它没有检索到的信息,而所有的标准弃用渠道 —— 邮件、博客文章、仪表板 —— 都不会向任何地方的上下文窗口提供输入。

关闭 v1 不会引发迁移 —— 它会引发重试风暴

这是打破旧思维模式的行为差异。当手写代码集成命中一个已失效的端点时,它会抛出异常,触发报警,然后由人类修复。失败是响亮的、归因明确的且终结性的。当智能体命中一个已失效的端点时,它会做智能体天生擅长的事:应对。

它会重试。它会重新组织请求。它会幻觉出一个看起来合理的备用端点并尝试。它可能会认为错误是暂时的并退避,然后再次尝试原始请求。将这种循环放大到每一个持有你 API 过时认知的智能体实例上,关闭 v1 并不会减少 v1 流量 —— 而是放大了它,将每一次本该发生的请求转化成一连串的失败、格式错误的猜测和重试。你的基础设施为这场风暴买单,智能体的运营商为浪费的 token 买单,而最终用户得到的是一个被静默降级的结果,且没有人会将其记录为“供应商弃用了 API”。

MCP 生态系统已经给这种故障模式起了一个名字:静默损坏 (silent breakage)。重命名的参数或删除的工具不会像损坏的 SDK 构建那样产生清晰的验证错误 —— 它会产生一个误解指令并以错误方式绕过问题的智能体,且没有人会注意到。协议本身的版本控制很清晰,但单个工具仍然没有标准化的版本控制层,因此 schema 漂移会演变成行为漂移,而不是构建失败。开放 Web 上的弃用在更大规模上也面临同样的问题:消费者不会崩溃,它会虚构 (confabulates)。

会员专享

余下内容仅对会员开放。

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

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

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

参考资料

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

阅读需 10 分钟

GraphQL 终于找到了它的客户端,而且它不是人类

AI Agent 是第一批真正能够自主构建数据需求的客户端——这正是 GraphQL 最初设计的初衷。但 Agent 也放大了导致 GraphQL 在人类客户端竞争中落败的所有弱点。目前行之有效的模式是:Agent 在开发阶段构建查询,由人类进行审核并将其固定为持久化操作。

insider
ai-agents
阅读需 10 分钟

你的内部 API 在智能体调用的那一天起就变成了公共 API

只有当你能叫出每一个调用者的名字时,内部 API 才真正属于“内部”。一旦接入 LLM 智能体,那些从未白纸黑字写下的契约就会变成负担 —— 以下是你突然需要为之付出的公共 API 维护准则。

insider
ai-agents
阅读需 10 分钟

LLM 输出即 API 契约:为下游消费者版本化结构化响应

当多个服务依赖 LLM 结构化输出时,模型升级会悄无声息地破坏下游消费者。本文解析模式漂移与行为漂移的成因,以及在部署前捕获破坏性变更的版本化与契约测试模式。

insider
llm
阅读需 9 分钟

你的智能体读不懂的弃用通知

智能体不会阅读更新日志或 Sunset 响应头。本文将探讨为什么工具弃用对大语言模型智能体来说会静默失败,以及如何对工具契约进行版本化,从而让模型能够真正接收到通知。

insider
ai-agents
阅读需 9 分钟

Postel 法则在工具边界是一种负担

宽容的解析器通过强制转换“差一点就对”的工具调用,会误导 AI Agent 认为草率的调用也是可行的,从而在循环中累积错误。带有清晰示例且包含错误的严格验证是一种循环内训练信号 —— 本文将探讨何时应保持严格,以及 Postel 法则在何处依然适用。

insider
ai-agents