Telegram-бот с AI через AI Gateway — на Python
AI-бот в Telegram на Python: aiogram и OpenAI SDK с ключом AI Gateway
AI-бот в Telegram — это связка двух библиотек: aiogram принимает сообщения от пользователей, а openai SDK обращается к модели. Достаточно направить SDK на AI Gateway через base_url — и бот отвечает моделями из каталога без VPN и валютной карты, с оплатой в рублях.
Подключение
- Получите два ключа
Токен Telegram-бота — у @BotFather командой
/newbot. Ключ AI Gateway (sk-aigate-…) — в кабинете после регистрации; для бота лучше отдельный ключ со своей квотой. - Установите библиотеки
Нужны асинхронный фреймворк для Telegram и OpenAI SDK:
pip install aiogram openai - Настройте клиента на AI Gateway
В
AsyncOpenAIпередайтеbase_urlсо шлюзом и ключ AI Gateway — дальше SDK используется как обычно:from openai import AsyncOpenAI ai = AsyncOpenAI( base_url="https://ai-gatewey.ru/v1", api_key="sk-aigate-...", ) - Соберите echo-AI-бота
Минимальный бот: любое текстовое сообщение уходит в модель, ответ возвращается пользователю:
import asyncio from aiogram import Bot, Dispatcher from aiogram.types import Message from openai import AsyncOpenAI bot = Bot("TELEGRAM_TOKEN") dp = Dispatcher() ai = AsyncOpenAI( base_url="https://ai-gatewey.ru/v1", api_key="sk-aigate-...", ) @dp.message() async def on_message(msg: Message): res = await ai.chat.completions.create( model="deepseek/deepseek-chat", messages=[{"role": "user", "content": msg.text}], ) await msg.answer(res.choices[0].message.content) asyncio.run(dp.start_polling(bot)) - Запустите и проверьте
Запустите скрипт и напишите боту в Telegram — ответ придёт от модели, а расход по токенам появится в кабинете AI Gateway в реальном времени.
messages.Модели для ботов
В ботах поток сообщений большой, а ответы короткие — важнее скорость и цена за запрос, чем максимальный интеллект:
| Модель | Ввод, ₽/1М | Вывод, ₽/1М | Контекст |
|---|---|---|---|
| DeepSeek: DeepSeek V3 | 31 | 125 | 128K |
| OpenAI: GPT-5.4 Mini | 118 | 705 | 400K |
| Anthropic Claude Haiku Latest | 157 | 784 | 200K |
Частые вопросы
Как сделать, чтобы бот помнил контекст диалога?
SDK сам по себе не хранит историю: собирайте список сообщений пользователя и ответов бота и передавайте его целиком в messages при каждом запросе. Для экономии токенов обрезайте старые сообщения.
Как удержать расход под контролем на публичном боте?
Заведите отдельный ключ AI Gateway с месячной квотой и RPM-лимитом, добавьте в бота простой rate-limit на пользователя и выбирайте дешёвую модель — так пиковая нагрузка не приведёт к сюрпризам.
Подойдёт ли синхронный openai-клиент?
aiogram асинхронный, поэтому используйте AsyncOpenAI и await, как в примере. Синхронный клиент в обработчиках будет блокировать event loop и тормозить бота под нагрузкой.
Ключ для Telegram-бота — сразу после регистрации
Получить ключ