小白入门

调用 AI API 报错,一堆数字看不懂怎么办

照着教程敲代码,突然弹出一串”401""429""error: invalid_api_key”,心里咯噔一下——是不是代码写错了?是不是账号被封了?先别慌,这篇文章用大白话把最常见的几个报错讲清楚,看完你至少能自己判断”这是我的问题,还是对方的问题”。

一、错误码到底是什么

你请求一个 API(可以理解成”给服务器发一句话,等它回一句话”),服务器每次回复都会带一个”状态码”——一个三位数字,用来告诉你这次请求顺不顺利。200 代表一切正常,你平时根本看不到这个数字,因为程序会直接把结果显示给你。只有出问题的时候,这个数字才会被暴露出来,变成你看到的”报错”。

除了这个数字,服务器通常还会返回一段文字说明,长这样:

{
  "error": {
    "type": "invalid_request_error",
    "message": "Incorrect API key provided: sk-abc***"
  }
}

这段 message 才是真正有用的信息——很多人只顾着盯数字慌,却没往下看这一行字,其实答案往往就写在这里。

二、先分清一件事:4 开头还是 5 开头

所有状态码可以先粗暴地分成两大类,光看第一位数字就能判断责任在谁:

开头数字大白话责任方
4xx(401、403、404、429…)”你发的请求有问题”通常是你这边的代码、密钥或参数需要检查
5xx(500、502、503、504…)”对方服务器出问题了”通常不是你的错,等一会或联系服务商

记住这一条分类规则,遇到没见过的错误码也能先有个方向感,不至于两眼一抹黑。

三、5 个最常见的报错,一次讲清楚

状态码大白话翻译最常见原因怎么办
401 Unauthorized”你没带对’钥匙‘“API Key 填错、多打了空格、复制的时候漏了几位重新复制一遍完整密钥,检查前后有没有多余空格
403 Forbidden”钥匙是对的,但这扇门你进不去”账号权限不够、余额不足、地区限制查账户余额和权限设置,或联系服务商确认
404 Not Found”你敲错门了”接口地址(URL)写错,或者模型名称拼错对照官方文档,逐字核对地址和模型名
429 Too Many Requests”你敲门敲太快了”短时间内请求次数超过限制停几秒再试,或者把请求频率降下来
500 / 502 / 503 / 504”对方家里出故障了”服务器临时故障、过载、维护中不是你的问题,等几分钟重试;持续报错就联系服务商

划重点:401 和 403 长得很像,很多新手会搞混。简单区分法——401 是”你压根没证明自己是谁”(密钥错了),403 是”你证明了自己是谁,但没资格做这件事”(比如余额不够、套餐不支持这个模型)。

四、429 出现得最频繁,但也最不用慌

新手最容易反复碰到的其实是 429。这不是账号出问题了,而是短时间内请求发得太密集,服务器主动”踩了刹车”。处理办法很简单:

  1. 先停下来,等 5-10 秒再重试
  2. 如果是写代码批量调用,在每次请求之间加一个小延迟(比如 time.sleep(1))
  3. 如果频繁触发,说明你的请求量已经接近套餐的限制,考虑升级套餐或分散调用时间

429 报错本身说明”连接是通的、密钥是对的”,反而是相对省心的一种报错。

五、看不懂的报错,去哪找答案

如果表格里没覆盖到你遇到的那个报错码,按下面顺序排查:

  1. 先读 message 字段的原文,很多时候里面直接写了原因,比如 “model not found” 就是模型名字打错了
  2. 去官方文档搜这个状态码,OpenAI、Anthropic、Google 等厂商都有专门的错误码文档页面
  3. 如果用的是中转/代理服务,同样的 401/403/429 在中转层和源站可能含义略有差别,中转商一般会在文档里额外说明
  4. 实在搞不懂就去问人,但贴报错的时候记得把 message 那段文字一起贴出来(密钥本身要打码),只说”报错了”没人能帮你判断

如果你已经能看懂基础报错,想往下深挖故障排查的完整方法论,可以看这篇更系统的AI API 中转常见错误码排查手册,覆盖了 401/403/404/429/500/502/504 在中转场景下的完整排查流程。如果你是想统一处理多个厂商(OpenAI、Anthropic、Gemini)之间不一致的错误码,那是更进阶的话题,可以参考多模型 API 错误码分类与统一处理。

六、新手最容易踩的三个假动作

  • 看到报错就重新申请一个新密钥:多数报错和密钥本身没关系,重新申请解决不了问题,反而容易把旧密钥用的地方全部搞乱
  • 一看到 500 就以为自己代码写错了:5xx 系列几乎都是对方服务器的问题,回头检查自己代码是白费功夫,等一等或换个时间点重试更实际
  • 报错信息只截一半发出去问:只截图数字不带 message 文字,别人也看不出问题在哪,完整信息+密钥打码是求助的基本礼貌

七、相关阅读