OpenAI API Key 怎么获取和安全使用?
简答:OpenAI API Key 应在 OpenAI Platform 的 API Keys 页面创建,而不是使用 ChatGPT 登录密码;创建后立即保存到密码管理器或密钥管理服务,并通过 OPENAI_API_KEY 环境变量供后端程序调用。完整密钥通常只在创建时显示一次,丢失或疑似泄露时应立即创建新密钥、更新应用并撤销旧密钥。
定义:OpenAI API Key 是用于鉴别 API 请求身份的访问凭据,不等同于 ChatGPT 登录密码或 ChatGPT Plus 订阅。
先看结论:获取和安全使用只需完成这 5 步
本站是独立的 AI API 使用指南站,本文只整理可从 OpenAI 当前公开文档核验的通用方法。新手可以先完成前 1—5 步,生产环境的权限、轮换和支出控制可在首次请求成功后再配置。
- 登录 OpenAI Platform,进入 API Keys 页面,创建新的 API Key。官方说明显示,完整密钥只会在创建时显示一次;如果没有保存,需要创建新密钥。
- 创建后立即把密钥保存到密码管理器或团队使用的密钥管理服务中,不要发到聊天、工单或公开仓库。
- 在本地或服务器设置
OPENAI_API_KEY环境变量,让 SDK 自动读取密钥。 - 使用官方 SDK 或 API 请求发送一次最小请求,确认状态码、响应字段和实际文本都正常。
- 进入当前 Platform 控制台核对项目、用量、支出提醒、密钥权限和到期设置;具体菜单、账户能力和生效时间以当前控制台及官方文档为准。
官方获取说明:OpenAI API Key 获取、管理与删除。
| 检查项 | 成功判定 |
|---|---|
| 状态码 | 请求返回成功状态,而不是认证或权限错误 |
| 响应字段 | 响应中存在当前接口对应的输出字段 |
| 实际文本 | 返回内容与输入问题相关,而不是空响应或错误对象 |
| 客户端显示 | 你的 Python、Node.js 或其他客户端能够正常打印结果 |
OpenAI API Key 在哪里获取?它和 ChatGPT 账号有什么区别?
OpenAI API Key 应在 OpenAI Platform 的 API Keys 页面创建和管理。不要把 ChatGPT 网页版的登录密码、邮箱验证码或其他账户凭据当作 API Key 使用。ChatGPT 网页服务、ChatGPT 订阅和 API 平台属于不同的使用入口;API 是否可用、项目是否具备调用权限、账单或额度是否满足请求,应以当前 Platform 控制台显示为准。
创建密钥后,官方帮助中心明确提醒:完整 Secret Key 只在创建时显示。如果关闭页面后没有保存完整值,通常不能通过页面再次查看原值,应创建一个新密钥并把应用改为使用新密钥。删除旧密钥后,依赖该密钥的程序可能停止工作,因此轮换时要先更新应用,再确认新密钥可用,最后撤销旧密钥。
官方入口和影响说明:Where do I find my OpenAI API Key?。如果控制台菜单与本文描述不同,不要根据搜索结果猜测入口,优先从当前 Platform 页面或该官方帮助中心文章进入。
本地开发:用环境变量保存 Key,再运行最小 Python 请求
官方 Quickstart 展示了使用 OPENAI_API_KEY 环境变量的方式,OpenAI SDK 会从系统环境中读取该变量。下面示例只展示字段结构,不在代码中写入真实密钥;发送请求前应确认模型 ID 仍在你的账户和当前官方文档中可用。
macOS 或 Linux
export OPENAI_API_KEY="你的密钥"
Windows PowerShell
setx OPENAI_API_KEY "你的密钥"
Windows 使用 setx 后,需要打开新的终端窗口,之后启动的程序才可能读取到新变量。不要把真实密钥放进 Git、截图、前端代码或可公开访问的日志。官方安全指南也提醒,环境变量名称可以统一使用 OPENAI_API_KEY,这样代码无需把密钥硬编码在项目中。
Python 最小示例
先安装当前环境所需的官方 Python SDK,再运行以下示例:
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-6-astra",
input="用一句话说明 API Key 的作用。"
)
print(response.output_text)
当前官方 Quickstart 页面确实展示了 gpt-6-astra 作为示例模型,但模型可用性可能受账户、项目、区域或文档更新影响;如果返回模型不可用,请从当前官方模型目录或控制台复制可用模型 ID,不要盲目更换其他未经核验的名称。官方示例与环境变量说明:Developer quickstart。
Key 应该保存在哪里?不同场景的安全做法
| 保存方式 | 适用场景 | 注意事项 |
|---|---|---|
| 系统环境变量 | 个人本地开发、临时测试 | 不要把环境变量内容打印到日志或提交到仓库 |
.env 文件 | 本地项目配置 | 加入 .gitignore;不要上传真实文件或把密钥写入示例配置 |
| Secret Manager | 服务器、容器、生产环境 | 按应用或服务划分访问权限,避免团队共享同一个长期密钥 |
| 浏览器前端或移动 App | 不适合直接保存 OpenAI API Key | 请求应经过你自己的后端,否则用户可能提取密钥并代为发起请求 |
| 公开 Git 仓库 | 不适用 | 不要提交真实 Key;即使仓库后来删除,历史提交或缓存仍可能暴露凭据 |
官方安全最佳实践建议团队成员使用各自独立的 API Key,不要共享同一个密钥;支持的项目密钥可以设置到期日期,团队还应建立轮换流程。是否能使用某项权限、到期设置或工作负载身份能力,需要以当前账户和控制台显示为准。
相关官方说明:API 密钥安全最佳实践 与 Production best practices。
生产环境如何降低泄露和异常支出风险?
- 按环境隔离:开发、测试和生产尽量使用不同项目或密钥,避免测试代码影响线上应用。项目是否可以单独配置访问、速率或支出限制,以当前控制台为准。
- 减少密钥权限:团队成员、服务或项目不要无必要地共用同一个长期密钥;若控制台支持按密钥分配权限,应只授予实际需要的范围。
- 建立轮换流程:旧密钥仍在使用时,先创建替代密钥并更新部署配置,确认新密钥请求成功后再撤销旧密钥。
- 监控用量:定期查看组织或项目的用量,核对请求量、时间段和应用行为是否匹配。发现异常时先停止可疑应用或撤销相关密钥,再检查日志。
- 配置支出控制:官方生产文档区分支出提醒和硬性支出限制。提醒不会自动停止 API 流量;硬性限制可能在达到跟踪支出后停止受影响的 API 流量,但是否可用、生效延迟及是否造成正常请求中断,应以当前控制台和支出限制文档为准。
- 后端转发:浏览器、桌面客户端或移动 App 不应直接携带长期 API Key,前端请求应发送到由你控制的后端,再由后端调用 API。
生产环境建议同时查看官方的 生产最佳实践 和 API 密钥安全最佳实践,不要只依赖单个密钥或单项支出设置。
Key 丢失、疑似泄露或出现异常扣费怎么办?
如果只是丢失完整密钥,但没有证据表明已泄露,最稳妥的做法仍是创建新 Key 并更新应用;官方页面不会把已经离开创建流程的完整密钥重新展示。
- 立即轮换:进入 API Keys 页面创建替代密钥,不要继续等待异常请求自行停止。
- 更新应用:替换服务器、CI/CD、容器、定时任务和本地配置中的旧值;不要把新密钥直接粘贴到公开工单或聊天记录。
- 撤销旧 Key:确认新密钥已经成功完成最小请求后,删除或撤销疑似泄露的旧密钥。
- 检查用量:查看组织或项目用量,重点核对异常时间段、请求量和使用项目。
- 清理暴露位置:检查 Git 提交历史、构建日志、错误日志、截图、浏览器前端包和共享文档,删除不必要的副本。
- 继续调查:如果无法解释异常请求或支出,保留时间、项目、响应错误和用量记录,再通过官方支持渠道进一步处理。
不要在诊断命令中直接输出完整环境变量,例如不要把 echo $OPENAI_API_KEY 的结果复制到公开页面;核验时只检查变量是否存在、长度是否合理或是否使用脱敏后的前后几位。
常见错误:为什么 Key 看似正确仍然调用失败?
| 现象 | 优先检查 |
|---|---|
| 401 或认证失败 | 环境变量是否在当前进程生效、是否复制了完整 Key、程序是否读取了旧配置;查看响应体中的 error.code 和 message,不要只凭状态码下结论。 |
| 403 或权限错误 | 项目、密钥权限、组织归属、区域或接口能力是否匹配;具体原因以响应体和当前控制台为准。 |
| 404 model not found | 模型 ID、请求路径和项目可用模型列表;不要直接套用网上旧教程中的模型名称。 |
| 429 | 区分限流、额度、账单或并发问题,查看响应体、响应头和用量页面后再决定是否重试。 |
| 环境变量为空 | 是否在设置变量后重新打开终端、是否从正确的运行环境启动程序,以及变量名是否严格为 OPENAI_API_KEY。 |
错误排查顺序建议固定为:凭据 → 最终 URL 和路径 → 模型 → 项目权限或区域 → 最小请求 → 错误响应体。这样可以避免把所有失败都归因于 Key 本身。
常见问题
ChatGPT Plus 是否自动包含 OpenAI API Key?
不能直接这样理解。ChatGPT 网页服务、订阅和 OpenAI Platform API 是不同入口;API Key 需要在 Platform 的 API Keys 页面创建,具体账单、额度和模型可用性以当前账户控制台为准。
OpenAI API Key 创建后还能再次查看吗?
官方帮助中心说明,完整 Secret Key 只在创建时显示。如果没有保存完整值,应创建新 Key,并在应用中替换旧配置;不要尝试从日志或网页缓存中恢复密钥。
可以把 OpenAI API Key 放在浏览器前端吗?
不建议。浏览器、移动 App 或其他客户端中的密钥可能被用户提取,随后被用于发起请求。更安全的做法是让前端调用自己的后端,由后端读取环境变量或 Secret Manager 中的密钥。
API Key 疑似泄露后第一步做什么?
第一步是进入 API Keys 页面创建替代密钥并更新应用;确认新 Key 可用后撤销旧 Key,再检查用量和部署日志。不要只修改本地文件而不处理已经暴露的旧密钥。
为什么设置了 OPENAI_API_KEY,程序仍然提示认证失败?
先确认变量是在启动程序的同一个终端或运行环境中设置的,再检查变量名、Key 是否完整、SDK 是否读取了该变量,以及最终请求使用的项目和接口。查看完整错误响应体,而不是只看 401 状态码。
支出提醒能否自动阻止 API 请求?
不能把两者混为一谈。官方文档区分支出提醒和硬性支出限制:提醒用于通知,是否能配置硬性限制、何时生效以及是否影响正常请求,要以当前控制台和官方支出限制说明为准。
相关阅读
- OpenAI API 返回 401 时按响应体排查
- OpenAI API 403 权限错误排查
- OpenAI API 404 模型不存在排查
- OpenAI API 429 限流、额度与重试
- Chatbox 配置 OpenAI API 的步骤
