搜索

搜索 HiAPI 模型、工具和资源。

返回博客
教程3 分钟阅读

OpenAI API key 无效:401、环境变量与项目配置排查

区分 OpenAI 401、403 和 429,检查环境变量、组织与项目设置,并用只读请求验证凭证。

hiapiAPI故障排查

TL;DR

OpenAI 返回 401 且提示密钥不正确时,先检查凭证、运行时变量和组织或项目配置。429 要根据错误码检查速率、余额或使用上限;403 也需要阅读具体原因。

运行 Python 示例前,在同一个 Python 环境执行 python -m pip install requests。

先分清错误类型

响应检查方向
401,提示 Incorrect API key完整密钥、拼写、撤销状态及归属
401,其他鉴权提示组织成员关系、权限或 IP 限制等具体原因
403阅读响应原因,包括地区或其他访问限制
429区分限流、余额和组织或项目使用上限

不要仅凭 sk- 前缀判断密钥有效。完整凭证、目标域名及账号配置都需要匹配。

五步检查运行环境

  1. 确认调用的是 OpenAI 还是兼容平台;每个平台使用自己的密钥。
  2. 检查实际进程的 OPENAI_API_KEY,排除空值、占位符和误复制。
  3. 检查环境变量加载优先级;部署平台的值可能覆盖本地 .env。
  4. 核对密钥是否已撤销,以及它所属的组织和项目。若主动设置了组织或项目请求头,确认这些值一致;不要盲目添加请求头。
  5. 重新加载运行环境后发起只读检查。持续报错时记录响应的请求 ID,并联系账号负责人。

本地检查不输出凭证

import os

name = "OPENAI_API_KEY"
key = os.environ.get(name, "")
print({
    "variable": name,
    "present": bool(key),
    "length": len(key),
    "has_whitespace": any(c.isspace() for c in key),
    "wrapped_in_quotes": len(key) >= 2 and key[0] == key[-1] and key[0] in (chr(34), chr(39)),
})

不要使用会打印完整请求头的调试日志,也不要把密钥转成十六进制后贴进工单;那仍然是完整凭证。

只读验证请求

在服务器环境运行以下代码。它读取模型列表,不提交内容生成。受限密钥仍可能因读取权限不足被拒;不能把任何非 200 响应都判为密钥损坏。

import os
import re
import requests

key = os.environ.get("OPENAI_API_KEY", "")
if not key or any(ord(c) < 33 or ord(c) > 126 for c in key) or any(c in key for c in (chr(34), chr(39))):
    raise SystemExit("Check the key environment variable: empty, whitespace, control characters, or quotes")
try:
    response = requests.get(
        "https://api.openai.com/v1/models",
        headers={"Authorization": f"Bearer {key}"},
        timeout=30,
    )
except requests.RequestException as exc:
    raise SystemExit("Request failed: " + type(exc).__name__) from None
print("HTTP", response.status_code)
if response.ok:
    print("Model list received")
else:
    try:
        body = response.json()
        error = body.get("error", {})
        message = str(error.get("message") or body.get("message") or "")
        message = message.replace(key, "[REDACTED]")
        message = re.sub(r"sk-[A-Za-z0-9_*.-]+", "[REDACTED]", message)
        print("code:", error.get("code") or body.get("error_code"))
        print("type:", error.get("type"))
        print("message:", message)
        print("request_id:", error.get("request_id") or response.headers.get("x-request-id"))
    except ValueError:
        print("Non-JSON response; check the base URL and network path")

切换到 HiAPI 时检查什么

使用 HiAPI 时,密钥换成 HIAPI_API_KEY,Base URL 使用 HiAPI 的地址,再按模型页选择请求入口。先阅读 HiAPI 认证说明 和 接口选择指南。

两次请求必须独立使用各自平台的凭证,不能把 OpenAI 密钥发给 HiAPI 进行所谓的“隔离验证”。

常见问题

密钥前缀正确,就一定可用吗?

不能仅靠前缀判断。还要检查完整值、撤销状态和账号配置。

遇到 401 应该立即充值吗?

先处理响应指出的鉴权原因;余额或使用上限错误需要根据相应错误码单独处理。

所有请求都必须加组织和项目请求头吗?

不要盲目添加。多组织或旧式用户密钥等情况需要正确选择上下文;已经设置的请求头必须与使用的凭证匹配。

HiAPI 密钥能直接请求 OpenAI 吗?

不能互换。HiAPI 和 OpenAI 各自管理凭证,域名和密钥需要对应。

继续排查 HiAPI 密钥错误。

现在就用 HiAPI 生成

选一个模型,输入你的提示词,直接查看生成结果。

HiAPI Blog

相关文章

HiAPI

现在就用 HiAPI 生成

开始生成