如何以更好的方式使用更改后的代理执行 OpenAI 的 API?

问题描述 投票:0回答:1

按照OpenAI官方提供的方式,由于某些地理原因,我无法执行API。虽然我认为我已经更改了代理,但它仍然会导致错误,如 APICONNECTIONERROR429

这很奇怪,因为我相信我只发送了一个请求, 当我之前在 JAVA 中使用 OKHttp 执行相同的选项(执行 OpenAI API)时, 也是429。太奇怪了!

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)

这种传统方式,我可以成功使用它,但我仍然想改进它,而且我也听说如果你用这种方式执行OpenAI的API,你的APIKEY将被禁止。

任何人都可以帮助我解决这个问题,例如改进执行方式添加一些其他代码吗? 或者如何使用OpenAI的官方包来执行它?我已经坚持了一段时间了,请等待您的答复。 :)

这是官方失败记录:

{'id':'cmpl-8TCp9eVM1pOAU8PBmYbpfABJTBKaZ','对象':'text_completion','创建':1701971499,'模型':'gpt-3.5-turbo-instruct','选择':[{'文本': ' 数学,又称数学,是对数字、数量和空间的研究。它是教育的基础学科,在科学、工程、金融等各个领域发挥着至关重要的作用。 数学研究涉及学习解决问题的数学概念、理论和技术', 'index': 0, 'logprobs': None, 'finish_reason': 'length'}], 'usage': {'prompt_tokens': 4、“completion_tokens”:60、“total_tokens”:64}}

这就是传统方式的成功记录。

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'}}
python python-requests proxy openai-api
1个回答
0
投票

以下是 OpenAI 官方支持的国家/地区: https://platform.openai.com/docs/supported-countries

客户端文档有配置代理的示例:

import httpx
from openai import OpenAI

client = OpenAI(
    # Or use the `OPENAI_BASE_URL` env var
    base_url="http://my.test.server.example.com:8083",
    http_client=httpx.Client(
        proxies="http://my.test.proxy.example.com",
        transport=httpx.HTTPTransport(local_address="0.0.0.0"),
    ),
)
© www.soinside.com 2019 - 2024. All rights reserved.