You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenAI API Python调用报401错误(API密钥错误)但curl正常且产生费用

OpenAI API Python调用报401错误(curl正常且已产生费用)

问题详情

测试OpenAI API时,使用curl格式调用官方示例可正常返回结果,但Python格式调用出现401错误,提示openai.error.APIError: HTTP code 401 from API (wrong api key)。已将OPENAI_API_KEY设置为系统变量,但问题依旧,且API后台usage显示已产生调用费用。

可用的curl调用代码

curl https://api.openai.com/v1/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "text-davinci-003",
    "prompt": "Say this is a test",
    "max_tokens": 7,
    "temperature": 0
  }'

报错的Python调用代码

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Completion.create(
  model="text-davinci-003",
  prompt="Say this is a test",
  max_tokens=7,
  temperature=0
)

解决方案

1. 直接验证API密钥有效性

跳过环境变量,直接在代码中写入curl里使用的有效API密钥测试:

import openai
openai.api_key = "你的实际API密钥" # 替换为curl中使用的密钥
openai.Completion.create(
  model="text-davinci-003",
  prompt="Say this is a test",
  max_tokens=7,
  temperature=0
)

如果此代码能成功返回结果,说明问题出在环境变量读取环节。

2. 排查环境变量读取问题

在Python代码中先打印环境变量值,确认是否正确读取:

import os
print(os.getenv("OPENAI_API_KEY"))
  • 若输出为None:说明环境变量未生效,需重启运行Python的终端/IDE(环境变量修改后必须重启才能被进程读取),同时确认系统变量名称为OPENAI_API_KEY(注意大小写,Linux/macOS严格区分)。
  • 若输出的密钥与实际不符:检查系统变量中存储的密钥是否有多余空格、换行或特殊字符。

3. 更新OpenAI Python库

旧版本库可能存在API请求逻辑缺陷,执行以下命令更新到最新版:

pip install --upgrade openai

4. 检查代理或自定义API地址配置

如果本地使用代理服务,或曾修改过OpenAI的API base URL,需在代码中明确指定官方API地址:

import openai
openai.api_base = "https://api.openai.com/v1"
openai.api_key = os.getenv("OPENAI_API_KEY")
# 后续调用代码不变

关于费用产生的说明

即使返回401错误,API服务器仍可能已处理请求并记录使用量,这种情况属于偶发异常。后续修复调用问题后,可关注后台费用统计是否正常。

内容的提问来源于stack exchange,提问作者Xujie Yuan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:40:59