按照OpenAI官方提供的方式,由于某些地理原因,我无法执行API。虽然我认为我已经更改了代理,但它仍然会导致错误,如 APICONNECTIONERROR 和 429。
这很奇怪,因为我相信我只发送了一个请求, 当我之前在 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'}}
以下是 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"),
),
)