Сегодня я решил сменить последовательное выполнение запросов OpenAi на асинхронное: с
# Функция для последовательного вызова OpenAI
async def call_openai(message) -> str:
global user_message
user_id = message.from_user.id
# Или какой-то другой способ получения сообщения от пользователя
user_messages[user_id].append({"role": "user", "content": user_message})
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-16k",
messages=user_messages[user_id],
temperature=0.8,
frequency_penalty=0,
presence_penalty=0.3,
max_tokens=max_token_count,
)
response_content = response['choices'][0]['message']['content']
return response_content, response
На это:
# Функция для асинхронного вызова OpenAI
async def call_openai(message) -> str:
global user_message
user_id = message.from_user.id
# Или какой-то другой способ получения сообщения от пользователя
user_messages[user_id].append({"role": "user", "content": user_message})
response = await openai.ChatCompletion.acreate(
model="gpt-3.5-turbo-16k",
messages=user_messages[user_id],
temperature=0.8,
frequency_penalty=0,
presence_penalty=0.3,
max_tokens=max_token_count,
)
response_content = response['choices'][0]['message']['content']
return response_content, response
И в обычном Pycharm всё работет идеально, но на сервисе по деплою - PythonAnywhere возникла ошибка коммуникации с API OpenAi, как только я сменил response = openai.ChatCompletion.create на response = await openai.ChatCompletion.acreate Возможно проблема заключается в том, что я использую PROXY_URL, который не пропускает OpenAI или сам PythonAnywhere, но без него он выдаёт другую ошибку о незащищённом соединении.
PROXY_URL = "
proxy.server:3128"
bot = Bot(token=telegram_token, proxy=PROXY_URL)
Вот текст ошибки:
*Task exception was never retrieved
future: exception=TypeError("'coroutine' object is not subscriptable")>
Traceback (most recent call last):
File "/home/svkl/main.py", line 273, in handle_messages
response_content, response = await call_openai(message)
File "/home/svkl/main.py", line 324, in call_openai
/home/svkl/.local/lib/python3.10/site-packages/openai/datalib/numpy_helper.py:4: UserWarning: The NumPy module was reloaded (imported a second time). This can in some cases result in small but subtle issues and is discouraged.
import numpy
Task exception was never retrieved
future: exception=APIConnectionError(message='Error communicating with OpenAI', http_status=None, request_id=None)>
Traceback (most recent call last):
File "/home/svkl/.local/lib/python3.10/site-packages/aiohttp/connector.py", line 980, in _wrap_create_connection
return await self._loop.create_connection(*args, **kwargs) # type: ignore[return-value] # noqa
File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 535, in _sock_connect_cb
raise OSError(err, f'Connect call failed {address}')
ConnectionRefusedError: [Errno 111] Connect call failed ('104.18.7.192', 443)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
raise client_error(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host api.openai.com:443 ssl:default [Connect call failed ('104.18.7.192', 443)]
The above exception was the direct cause of the following exception:
raise error.APIConnectionError("Error communicating with OpenAI") from e
openai.error.APIConnectionError: Error communicating with OpenAI*