News

Claude 3 Haiku旧模型停用致API报错:开发者速查更新!

Claude 3 Haiku旧模型停用致API报错:开发者速查更新!

许多开发者可能已经发现,最近调用 claude-3-haiku-20240307 模型的代码突然开始报错。其原因在于:Anthropic 已于2024年4月20日正式停用该版本的 Claude Haiku 3 模型。这不是简单的弃用,而是彻底的“退休”——对旧模型ID的请求将不再被处理,而是直接返回错误。

这一停用政策实际上在60天前就已经宣布,但似乎并未引起广泛关注。许多开发者可能错过了相关的邮件通知,直到生产环境出现告警,甚至用户报告产品故障时才意识到问题。

Anthropic 的停用政策非常明确:已退休的模型会直接返回错误,而不会自动回退到诸如 Haiku 4.5 等新版本。这意味着模型ID将直接无法解析。

实际上,这意味着 API 会返回 4XX 响应。如果路由层判定模型标识符已不存在,会是 not_found_error;如果被视为格式错误的请求,则可能是 invalid_request_error。无论哪种情况,错误响应体大致如下:

{
  "type": "error",
  "error": {
    "type": "not_found_error",
    "message": "The requested resource could not be found."
  },
  "request_id": "req_..."
}

更令人头疼的是,你的代码本身没有任何变化。请求体、SDK版本、API Key 都和上周正常工作时一模一样。唯一改变的是 Anthropic 的路由层不再识别 claude-3-haiku-20240307

那么,这个过时的模型ID可能藏在哪里呢?多数团队的代码库中对模型名称会有多处引用。建议检查以下地方:

  • 环境变量和配置文件:ANTHROPIC_MODEL, CLAUDE_MODEL, DEFAULT_MODEL。不仅要检查代码仓库,还要特别关注生产和测试环境的实际配置。
  • 框架封装层: 像 LangChain, LlamaIndex, Vercel AI SDK, LiteLLM 等框架的旧版本中,claude-3-haiku-20240307 可能被设为默认值或出现在示例代码中。请检查你所使用的框架版本及其依赖项。
  • 硬编码测试固件: VCR cassettes、快照测试和模拟响应中常常会捕获模型字符串。
  • 细粒度路由逻辑: 任何根据任务类型选择模型的逻辑(例如“分类任务使用成本较低的模型”)都需要检查,确保“成本较低”的分支不再解析到旧模型。
  • 日志和监控仪表板: 这虽不是代码问题,但如果你通过模型ID过滤日志或监控数据,这些过滤器也会失效。

快速排查命令:

git grep -n "claude-3-haiku-20240307"
git grep -n "claude-3-haiku"

如果这些命令有任何命中,你就需要着手修改了。

应该替换成什么?Anthropic 推荐的替代模型是 claude-haiku-4-5-20251001。理论上,这是一个直接的替换。但实际上,Haiku 4.5 属于 Claude 4 系列模型,而 Claude 4 系列引入了一些 API 端的重大变更,这可能会导致为 Haiku 3 编写的代码出现问题。

例如,Haiku 4.5 不再允许同时设置 temperaturetop_p 参数,而 Haiku 3 之前是允许的。

↗ 阅读原文