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

如何通过代理正确调用OpenAI官方SDK?API调用遇429等问题求助

OpenAI API调用问题:SDK报错429,直接请求成功但担心API Key安全

问题描述

因地域限制,无法通过OpenAI官方SDK正常调用API,已配置代理但仍出现APIConnectionError和429错误,单次请求也会触发。此前用Java的OKHttp调用时同样遇到429错误。改用requests直接调用API成功,但听说该方式可能导致API Key被封禁,希望找到官方SDK的正确使用方法,或优化直接调用的安全性。

尝试的官方SDK代码

import requests
import openai

proxies = {
# MY PROXY HOST
    "http":"http://127.0.0.1:7890",
    "https":"https://127.0.0.1:7890"
}
requests.session().proxies.update(proxies)

openai.api_key = "MYAPIKEY"

completion = openai.chat.completions.create(
    model="gpt-3.5",
    messages=[{"role": "user"},
              {"content": "Tell me about math"}]
)

print(completion)

成功的直接请求代码

import requests
# OpenAI API URL
url = "https://api.openai.com/v1/engines/gpt-3.5-turbo-instruct/completions"
headers = {
    "Authorization": "Bearer MYAPIKEY",
    "Content-Type": "application/json"
}
proxies = {
# MY PROXY HOST
    "http": "http://127.0.0.1:7890",
    "https": "http://127.0.0.1:7890",
}
data = {
    "prompt": "Tell me about math",
    "max_tokens": 60
}
response = requests.post(url, json=data, headers=headers, verify=False)

错误栈信息

Traceback (most recent call last):
  File "C:\User\PycharmProjects\pythonProject\main.py", line 42, in <module>
    completion = openai.chat.completions.create(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\User\PycharmProjects\pythonProject\venv\Lib\site-packages\openai\_utils\_utils.py", line 301, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PycharmProjects\pythonProject\venv\Lib\site-packages\openai\resources\chat\completions.py", line 598, in create
    return self._post(
           ^^^^^^^^^^^
  File "C:\Users\PycharmProjects\pythonProject\venv\Lib\site-packages\openai\_base_client.py", line 1096, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PycharmProjects\pythonProject\venv\Lib\site-packages\openai\_base_client.py", line 856, in request
    return self._request(
           ^^^^^^^^^^^^^^
  File "C:\Users\PycharmProjects\pythonProject\venv\Lib\site-packages\openai\_base_client.py", line 894, in _request
    return self._retry_request(
           ^^^^^^^^^^^^^^^^^^^^
  File "C:\User\PycharmProjects\pythonProject\venv\Lib\site-packages\openai\_base_client.py", line 966, in _retry_request
    return self._request(
           ^^^^^^^^^^^^^^
  File "C:\Users\PycharmProjects\pythonProject\venv\Lib\site-packages\openai\_base_client.py", line 894, in _request
    return self._retry_request(
           ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PycharmProjects\pythonProject\venv\Lib\site-packages\openai\_base_client.py", line 966, in _retry_request
    return self._request(
           ^^^^^^^^^^^^^^
  File "C:\Users\PycharmProjects\pythonProject\venv\Lib\site-packages\openai\_base_client.py", line 908, in _request
    raise self._make_status_error_from_response(err.response) from None
openai.RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}

解决方案

一、修复官方SDK的代理配置

OpenAI v1+版本SDK需直接通过客户端实例配置代理,而非修改requests.session,同时修正模型名和请求格式:

import openai

# 初始化带代理的客户端
client = openai.OpenAI(
    api_key="MYAPIKEY",
    proxies={
        "http": "http://127.0.0.1:7890",
        "https": "http://127.0.0.1:7890",
    }
)

# 修正后的chat completions请求
completion = client.chat.completions.create(
    model="gpt-3.5-turbo",  # 正确的聊天模型名称
    messages=[{"role": "user", "content": "Tell me about math"}]  # 正确的消息格式
)

print(completion)

关键修复点:

  • 使用openai.OpenAI实例配置代理,适配v1版本SDK的规范
  • 修正消息格式:每个消息是包含role和content的单个字典
  • 替换有效模型名:gpt-3.5不是合法模型标识,聊天接口需用gpt-3.5-turbo

二、优化直接请求的安全性

若继续使用requests直接调用,可通过以下方式降低API Key泄露风险:

  1. 避免硬编码API Key:通过环境变量读取
    import os
    api_key = os.getenv("OPENAI_API_KEY")
    
  2. 开启SSL验证:移除verify=False,若代理需证书,指定证书路径:verify="/path/to/proxy/cert.pem"
  3. 使用正确的接口路径:聊天接口应调用https://api.openai.com/v1/chat/completions,请求体匹配格式:
    url = "https://api.openai.com/v1/chat/completions"
    data = {
        "model": "gpt-3.5-turbo",
        "messages": [{"role": "user", "content": "Tell me about math"}],
        "max_tokens": 60
    }
    

三、429错误额外排查点

  • 更换代理节点:共享IP可能被OpenAI列入黑名单,优先使用独享代理
  • 检查账户配额:登录OpenAI后台确认账户是否有可用额度
  • 关闭自动重试:SDK默认会自动重试请求,可能触发频率限制,可关闭:
    client = openai.OpenAI(
        api_key="MYAPIKEY",
        proxies=...,
        max_retries=0
    )
    

内容的提问来源于stack exchange,提问作者chen zc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:45:18