Open svejooo opened 1 month ago
коммент от gpt
TELEGRAM_BOT_TOKEN = 'your_telegram_bot_token'
bot = Bot(token=TELEGRAM_BOT_TOKEN) dp = Dispatcher(bot) dp.middleware.setup(LoggingMiddleware())
logging.basicConfig(level=logging.INFO)
request_queue = []
async def get_openai_response(prompt: str) -> str: global request_queue
# Обработка лимитов запросов
current_time = time.time()
request_queue = [timestamp for timestamp in request_queue if timestamp > current_time - 60]
if len(request_queue) >= 20: # Предполагаем лимит в 20 запросов в минуту
await asyncio.sleep(60 - (current_time - request_queue[0]))
request_queue.append(time.time())
try:
response = openai.Completion.create(
engine="text-davinci-003", # или другой доступный движок OpenAI
prompt=prompt,
max_tokens=150
)
return response.choices[0].text.strip()
except openai.error.RateLimitError as e:
logging.error(f"Rate limit error: {e}")
return "Извините, я временно перегружен. Пожалуйста, попробуйте позже."
@dp.message_handler(commands=['start']) async def send_welcome(message: types.Message): await message.reply("Привет! Я ваш AI ассистент. Задайте мне любой вопрос.")
@dp.message_handler(Text) async def handle_message(message: types.Message): user_message = message.text bot_response = await get_openai_response(user_message) await message.answer(bot_response)
if name == 'main': executor.start_polling(dp, skip_updates=True) Объяснение кода Импорт библиотек: Используются aiogram для Telegram API и openai для OpenAI API. Настройка логирования: Логирование позволяет отслеживать действия бота и выявлять возможные ошибки. Функция get_openai_response: Использует глобальную переменную request_queue для отслеживания времени запросов. Если количество запросов превышает лимит, функция делает паузу, чтобы избежать превышения лимита. Если превышен лимит запросов, возвращается сообщение об ошибке. Обработчик команды /start: Приветствует пользователя. Обработчик текстовых сообщений: Обрабатывает сообщения, отправленные пользователем, и отвечает с использованием OpenAI API. Запуск бота: Бот запускается и начинает обрабатывать сообщения. Этот скрипт помогает учитывать ограничения по частоте запросов, чтобы избежать превышения лимитов использования API.
Rate limit reached for gpt-4o in organization org-..... on tokens per min (TPM): Limit 30000, Used 19460, Requested 18151. Please try again in 15.221s. Visit https://platform.openai.com/account/rate-limits to learn more.