This commit is contained in:
48
services/gpt_client.py
Normal file
48
services/gpt_client.py
Normal file
@@ -0,0 +1,48 @@
|
||||
"""
|
||||
GPT клиент - отправка запросов к нейросети
|
||||
"""
|
||||
import time
|
||||
import requests
|
||||
from config import GPT_SERVER_URL, GPT_MAX_RETRIES, GPT_TIMEOUT
|
||||
from utils import logger
|
||||
import work_parser as wp
|
||||
|
||||
|
||||
def gpt_response_message(content: str, name_promt: str) -> str:
|
||||
"""
|
||||
Отправляет текст на обработку GPT серверу
|
||||
Возвращает ответ или пустую строку при ошибке
|
||||
"""
|
||||
contentGPT = wp.get_promt(name_promt).replace('{content}', content)
|
||||
|
||||
url = GPT_SERVER_URL
|
||||
params = {'text': contentGPT}
|
||||
|
||||
max_retries = GPT_MAX_RETRIES
|
||||
retries = 0
|
||||
|
||||
while retries < max_retries:
|
||||
try:
|
||||
response = requests.get(url, params=params, timeout=GPT_TIMEOUT)
|
||||
return response.text
|
||||
except requests.exceptions.ConnectTimeout as e:
|
||||
print(f"Ошибка подключения (timeout): {e}")
|
||||
logger.warning(f"gpt_response_message timeout:")
|
||||
retries += 1
|
||||
if retries < max_retries:
|
||||
time.sleep(2 ** (retries - 1))
|
||||
except requests.exceptions.ConnectionError as e:
|
||||
print(f"Ошибка соединения: {e}")
|
||||
logger.warning(f"gpt_response_message connection error: ")
|
||||
retries += 1
|
||||
if retries < max_retries:
|
||||
time.sleep(2 ** (retries - 1))
|
||||
except Exception as ex:
|
||||
print(f"Ошибка при запросе к GPT: {ex}")
|
||||
logger.error(f"gpt_response_message: ")
|
||||
retries += 1
|
||||
if retries < max_retries:
|
||||
time.sleep(2 ** (retries - 1))
|
||||
|
||||
logger.info(f"Превышен лимит запросов {max_retries}")
|
||||
return ""
|
||||
Reference in New Issue
Block a user