Telegram bot
AI API для Telegram-бота
Вынесите секретный ключ на backend бота и используйте OpenAI-compatible клиент для ответов на сообщения — без VPN, с рублёвой оплатой и защитой бюджета.
Для кого: разработчики ботов, автоматизаций и внутренних помощников
Создать API keyБыстрый старт
От ключа до первого ответа
- 01
Разместите ключ только на backend.
- 02
Выберите модель и ограничьте max_tokens.
- 03
Обрабатывайте ошибки и сохраняйте request ID.
Рабочий шаблон
Скопируйте основу и замените модель
Используйте только идентификатор из актуального каталога. Ключ храните в переменной окружения.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["NORMAHUB_API_KEY"],
base_url="https://api.normahub.cc/v1",
)
def answer(text: str) -> str:
result = client.chat.completions.create(
model="MODEL_ID",
messages=[{"role": "user", "content": text}],
max_tokens=256,
)
return result.choices[0].message.content or ""Детали решения
Как это устроено
Архитектура правильного бота
Клиент присылает текст вашему серверу, сервер добавляет секретный ключ и ходит в NormaHub, ответ уходит пользователю. Ключ не видят ни Telegram-клиент, ни мини-приложение, ни логи. Вход обрезайте по длине, выход ограничивайте max_tokens: без этих двух строк один «расскажи длинно» стоит как сто обычных ответов.
Память диалога без разорения
Модель не помнит переписку — память делаете вы скользящим окном последних 5–6 реплик. Весь лог слать нельзя: каждое сообщение будет стоить как сумма всей истории. Для MVP хватит памяти процесса, для продакшена — Redis или Postgres с TTL.
Три слоя защиты бюджета
Публичный бот — открытый кошелёк. Первый слой: rate limit в коде на пользователя. Второй: spend limit на API-ключе в кабинете — аварийный тормоз при спаме. Третий: max_tokens на каждый вызов. Плюс разделение моделей: дешёвая в личке, сильная — по отдельной команде.
Webhook или polling
Polling проще для старта: скрипт крутится anywhere и опрашивает Telegram. Webhook быстрее и экономнее на большой нагрузке, но требует публичный HTTPS-адрес и обработку повторных доставок (Telegram может прислать апдейт дважды — дедуплицируйте по update_id, иначе заплатите за двойной ответ). В обоих режимах ключ остаётся на сервере, а логика идемпотентности — в вашем коде.
Оплата и контроль расходов
Запросы оплачиваются с предварительно пополненного баланса по актуальным ставкам выбранной модели. Минимум и комиссия показываются перед оплатой в кабинете; лимит расходов задаётся для API-ключа.
Ограничения доступности
Возможности зависят от модели и внешнего маршрута. При недоступности provider запрос может завершиться ошибкой; проверяйте каталог, статус и документацию перед production.
Частые вопросы
Где хранить ключ Telegram-бота?
Только на backend, в переменных окружения. В клиент, мини-приложение и репозиторий ключ попадать не должен.
Какую модель выбрать для бота?
Быструю и дешёвую для диалогов, сильную — для тяжёлых команд. ID и цены — в каталоге моделей.
Бот отвечает медленно. Что делать?
Сразу отвечайте «Думаю…», затем редактируйте сообщение результатом. Держите max_tokens разумным и задавайте timeout клиенту.
Нужен ли VPN серверу в России?
Нет. Backend обращается к api.normahub.cc напрямую, оплата — с рублёвого баланса.
Чем solution отличается от гайда по Telegram-боту?
Здесь — архитектура и экономика решения. Код backend, история диалога и разбор ошибок — в гайде Telegram-бот.
Сколько стоит диалог пользователя?
Зависит от модели, длины истории и max_tokens. Ориентир считайте калькулятором на странице моделей, факт — в истории личного кабинета.