大模型 API 报错速查:401、403、500、超时排查方法

一张表定位常见 API 报错:401 是 Key 问题、403 是权限问题、500 在服务端、超时多半是上下文过长。附最小验证脚本和排查顺序,五分钟定位问题出在哪一层。

接入大模型 API 时,报错信息往往只有一行英文加一个状态码。同一句 error,可能出在你的代码、Key、网络,也可能出在服务端——乱试一通不如按状态码定位。这篇把 429 以外的高频报错整理成一张速查表,配上排查顺序和最小验证脚本,出问题时照着走一遍,多数五分钟内能定位。

速查表:状态码 → 原因 → 处理

状态码典型报错信息真实原因处理方式
400invalid_request_error参数格式错、必填字段缺失按报错里指出的字段检查请求体
400context length exceeded输入+输出超过模型上下文上限裁剪历史或换长上下文模型
401invalid_api_keyKey 错误、被作废、或格式不对换 Key 重试,见下文
403permission denied无该模型权限、账号受限检查模型分组权限
404model not found模型名拼写错误或不可用核对可用模型列表
429rate limit exceeded触发限流见 429 专题文章
500internal server error服务端异常重试,持续出现再反馈
502/503bad gateway / service unavailable上游不可用或网关维护等待或切换模型
无响应超时网络不通或响应太慢见超时排查

429 已单独写过一篇:大模型 API 429 报错:原因、重试与并发调优,这里不重复。

401:先排除 Key 自身的三个坑

401 是最常见也最容易误判的。按顺序检查:

  1. Key 是否完整。复制粘贴时截断(少了开头 sk- 或结尾几个字符)、中间混入空格或换行符,都表现为 401。用 len(key) 和 key[:5] 打印确认。
  2. Key 是否还有效。确认没有过期或被作废;如果你轮换过 Key,旧 Key 全局搜索一遍,确认没有残留引用。
  3. 认证头格式。必须是 Authorization: Bearer sk-xxx,注意 Bearer 后有一个空格。SDK 里传 api_key 参数一般不会错,手写 curl 最容易错。

403 和 404:权限与模型名

403 和 401 的区别在于:401 是「我不认识你」,403 是「认识你,但你没权限」。多数聚合网关按分组或套餐区分可用模型,你的分组没有开通某个模型的权限时就报 403。检查自己在用的分组,或换一个该分组可用的模型。

404 报 model not found 时,先核对模型名拼写。一个常见坑是大小写和点号:gpt-4o-mini 和 gpt4o-mini、claude-sonnet-4-5 和 claude-4-sonnet 这类变体,不同平台命名规则不同,以平台的模型列表页为准。

500 与超时:区分「它坏了」和「你太慢」

5xx 是服务端问题,重试即可。但要注意持续性:偶发一次不用管;同一模型连续 500 超过几分钟,说明该模型或该通道当前不可用,切换备用模型比等待高效。

超时的排查重点是分清发生在哪一段:

  • 连接超时(TCP 连不上):网络问题,检查代理、防火墙、DNS
  • 首字节超时(连上了但迟迟不返回):模型排队或推理慢,长上下文请求尤其明显
  • 读取中途超时(流式输出断在半路):SSE 连接被中间层切断,处理方式见 流式输出 SSE 原理与调试

上下文过长的请求是最常见的超时来源:几万 token 的输入,推理时间本身就长,再叠加默认 60 秒的客户端超时就报错了。解法是显式调大超时参数、开启流式输出(首字节快,能避开读超时)或裁剪输入。

最小验证脚本

报错时先跑这段,把「网络、认证、模型」三层一次性验完:

curl -sS -w "\nHTTP_CODE:%{http_code}\n" https://api.zaimod.com/v1/chat/completions \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"hi"}],"max_tokens":10}'

结果判断:

  • 返回正常 JSON + 200:网络、Key、模型都没问题,问题在你的业务代码参数上
  • 401:Key 问题,按上文三步排查
  • 403/404:权限或模型名问题
  • 连接失败:网络问题
  • 200 但业务代码仍报错:检查 SDK 版本、参数透传、base_url 拼写

这段 curl 能通过而你的代码不行时,优先怀疑 base_url 或协议兼容性,参考 base_url 迁移后失效的 5 个功能实测。

常见问题

Q:报错信息里说 invalid_api_key,但 Key 明明是对的?

检查是不是向网关传了官方渠道的 Key(或反过来)。两者的 Key 不通用,确认你的 base_url 和 Key 配套。

Q:同一个模型有时 200 有时 500,正常吗?

偶发 5xx 属正常波动,重试即可。若同一模型 5xx 比例持续超过 2%,说明通道不稳,换模型或联系服务方。

Q:400 报 context length exceeded,但我输入没有很长?

上下文上限是输入加输出之和。max_tokens 设得太大也会挤占空间;另外多轮对话的历史会累积,别忘了算上系统提示和历史轮次。

延伸阅读

#api 401 报错#api 403 报错#api 超时#大模型 api 报错排查
免费创建 API Key

相关阅读

Node.js 接入 OpenAI API 完整教程

Node.js 和 TypeScript 项目接大模型,官方 openai SDK 十几行代码就能跑通。这篇覆盖安装配置、baseURL 指向兼容网关、流式输出、超时重试和常见报错排查,附 Next.js 与 Express 两种落地写法。

Java 项目接入 OpenAI API 完整方案

Spring Boot 项目要接大模型,Spring AI 和官方 openai-java SDK 该选哪个?这篇给出两套可直接落地的配置与代码,讲清 base-url 拼接、流式输出、超时重试和 429 处理,附常见报错对照。