首页 / 文档 / 错误

错误

网关返回的所有状态码、实际成因及解决方法。

错误返回 JSON,其中包含 type 以及便于人类阅读的 message。状态码遵循 Anthropic 和 OpenAI 的约定。

{"type": "error", "error": {"type": "authentication_error", "message": "invalid api key"}}

状态码

代码含义最常见的实际原因解决方法
400请求无效缺少 max_tokens (Messages 请求中),或格式错误的 messages 数组对照以下内容检查请求体 Messages
401未通过身份验证密钥放在了不符合该格式要求的请求头中x-api-key 用于 Messages,Bearer 用于 Chat Completions
402需要付款余额耗尽或套餐已过期充值 或 购买套餐
403禁止访问密钥已被撤销,或账户未启用该模型创建新密钥;检查 /v1/models
404未找到基础 URL 错误——通常是重复或缺少 /v1参见 基础 URL
429请求受到速率限制并发请求过多采用指数退避;参见 速率限制
500网关错误意外的内部故障重试一次;如果问题持续存在,请联系支持并提供请求 ID
529上游过载提供商容量问题,与您的账户无关采用退避策略重试——通常会在几秒内恢复

错误类型

类型含义
invalid_request_error请求体格式错误或缺少必填字段
authentication_error密钥缺失、格式错误或已被撤销
permission_error密钥有效,但无权使用该模型
not_found_error未知路径或未知模型 ID
rate_limit_error受到限流
api_error内部故障
overloaded_error上游容量耗尽

正确重试

重试 429, 500, 502, 503 和 529。切勿盲目重试 400, 401, 402 或 403 ——相同的请求会以相同方式失败,而且对于已生成部分内容的响应,您可能需要支付两次费用。

import time, httpx

def call(body, key, tries=4):
    for i in range(tries):
        r = httpx.post(class="s">"https://aiprimetech.io/v1/messages", json=body, timeout=120,
                       headers={class="s">"x-api-key": key,
                                class="s">"anthropic-version": class="s">"2023-06-01"})
        if r.status_code in (429, 500, 502, 503, 529):
            time.sleep(2 ** i)          class=class="s">"c"># 1s, 2s, 4s, 8s
            continue
        r.raise_for_status()
        return r.json()
    raise RuntimeError(class="s">"upstream unavailable after retries")
在生产环境中,为等待时间添加随机抖动。大量工作进程同步重试,会将一次短暂故障变成针对同一上游的惊群请求。