Что понадобится для бота на LLM
Для рабочего Telegram-бота на LLM нужны три вещи: токен бота от Telegram, ключ к языковой модели и немного кода-обвязки между ними.
Первое — токен бота. Его выдаёт @BotFather, официальный служебный бот Telegram для регистрации ботов. Токен выглядит как строка вида 123456:ABC-DEF..., по нему ваш код авторизуется в Bot API и получает право читать входящие сообщения и отправлять ответы.
Второе — доступ к модели. Здесь вы используете ключ VseLLM: один ключ и один баланс в рублях работают со всеми доступными провайдерами (OpenAI, Anthropic, Google, DeepSeek и др.), а конкретная модель выбирается значением поля model в запросе. Endpoint VseLLM — https://api.payclarus.com/v1 — OpenAI-совместимый, поэтому подойдёт стандартный OpenAI SDK.
Третье — обвязка. Это скрипт, который получает сообщение из Telegram, передаёт его текст в модель через chat completions и отправляет ответ обратно в чат. На Python это компактный скрипт на aiogram или python-telegram-bot; на Node.js — на Telegraf.
Шаг 1. Токен бота у @BotFather
Откройте в Telegram диалог с @BotFather и отправьте команду /newbot. BotFather попросит имя бота (отображаемое) и username, который должен заканчиваться на bot (например, my_llm_assistant_bot). После создания он пришлёт токен доступа к Bot API.
Этот токен — секрет: любой, у кого он есть, может управлять вашим ботом. Не коммитьте его в репозиторий и не вставляйте прямо в код — держите в переменной окружения (например, TELEGRAM_BOT_TOKEN). Если токен утёк, отзовите его командой /revoke у того же @BotFather и получите новый.
Здесь же, у @BotFather, можно задать описание бота, аватар и список команд (/setcommands) — это влияет на то, как бот выглядит в интерфейсе Telegram, но для первого запуска достаточно одного токена.
Шаг 2. Ключ VseLLM и баланс в рублях
Модель, на которой думает бот, подключается через VseLLM. Ключ выпускается в кабинете VseLLM, а баланс пополняется в рублях: СБП, картой российского банка или по счёту для юрлица. Подписки нет — оплата pay-as-you-go по фактическому расходу токенов, поэтому для пет-проекта или пилота вы платите ровно за отправленные и полученные токены.
Один ключ работает со всеми провайдерами: чтобы бот отвечал через gpt-4o-mini, deepseek-v4-flash, claude-haiku-4-5 или gemini-3-flash, достаточно поменять значение model в коде — второй ключ и второй баланс заводить не нужно. Ключ храните в переменной окружения (VSELLM_API_KEY) рядом с токеном бота.
Endpoint https://api.payclarus.com/v1 доступен из российских сетей напрямую, VPN для запросов не требуется — это свойство инфраструктуры шлюза, а запросы к моделям выполняет инфраструктура VseLLM. Для команд можно выпустить несколько ключей с индивидуальными лимитами и смотреть детализацию расходов по каждому.
Шаг 3. Код на Python: aiogram + OpenAI SDK
Ниже — минимальный бот на aiogram. Логика простая: на каждое текстовое сообщение бот вызывает chat completions VseLLM и отправляет ответ модели обратно в чат. Единственное отличие от кода под официальный OpenAI SDK — параметр base_url при создании клиента.
Обратите внимание на две детали. Первое: клиент OpenAI SDK создаётся один раз с base_url='https://api.payclarus.com/v1' и вашим ключом VseLLM. Второе: для бота удобно держать system-подсказку (роль assistant) и по желанию — короткую историю диалога, чтобы ответы были в контексте.
import os
import asyncio
from aiogram import Bot, Dispatcher
from aiogram.types import Message
from openai import OpenAI
# Клиент модели через VseLLM (OpenAI-совместимый endpoint)
llm = OpenAI(
api_key=os.environ["VSELLM_API_KEY"],
base_url="https://api.payclarus.com/v1", # единственное отличие от OpenAI
)
bot = Bot(token=os.environ["TELEGRAM_BOT_TOKEN"])
dp = Dispatcher()
SYSTEM = "Ты дружелюбный ассистент. Отвечай кратко и по делу."
@dp.message()
async def on_message(message: Message) -> None:
resp = llm.chat.completions.create(
model="gpt-4o-mini", # дешёвая чат-модель; можно deepseek-v4-flash и др.
messages=[
{"role": "system", "content": SYSTEM},
{"role": "user", "content": message.text or ""},
],
)
await message.answer(resp.choices[0].message.content)
async def main() -> None:
await dp.start_polling(bot) # long polling — публичный адрес не нужен
if __name__ == "__main__":
asyncio.run(main())Если вы предпочитаете python-telegram-bot, приведён и такой вариант во вкладке — API библиотеки другой, но вызов модели тот же самый: chat.completions.create с нужным слагом модели. Дешёвые чат-модели для бота (gpt-4o-mini, deepseek-v4-flash, claude-haiku-4-5, gemini-3-flash) отличаются только строкой model, так что переключить бота на другую модель — правка одного значения.
Шаг 4. Запуск: polling или webhook
У Telegram Bot API два способа получать обновления, и код выше по умолчанию использует long polling.
Long polling — бот сам периодически спрашивает у серверов Telegram новые сообщения. Плюс: работает откуда угодно, не нужен публичный HTTPS-адрес и настройка вебхука — достаточно запустить скрипт там, где есть доступ в интернет. Это удобный способ для разработки и небольших ботов. В aiogram это dp.start_polling(bot), в python-telegram-bot — application.run_polling().
Webhook — Telegram сам присылает обновления POST-запросом на ваш HTTPS-URL. Плюс: нет постоянного опроса, обновления приходят сразу; подходит для продакшена. Минус: нужен публичный адрес с валидным TLS-сертификатом и веб-сервер, принимающий запросы Telegram. Выбор между polling и webhook зависит от того, где вы разворачиваете бота и нужен ли ему публичный входящий адрес; на стороне VseLLM ничего менять не нужно — модель вызывается одинаково в обоих режимах.
Секреты (токен бота и ключ VseLLM) в любом варианте держите в переменных окружения, а не в коде.
Какую модель выбрать для бота
Для большинства ботов — чат-ассистент, ответы на вопросы, обработка коротких сообщений — не нужна топовая модель: важнее низкая цена за токен и приемлемая скорость, потому что бот делает много мелких запросов.
Разумные дешёвые варианты через VseLLM: gpt-4o-mini (OpenAI), deepseek-v4-flash (DeepSeek), claude-haiku-4-5 (Anthropic) и gemini-3-flash (Google). Все они рассчитаны на быстрые массовые запросы и стоят заметно дешевле флагманов вроде gpt-4o или claude-opus-4-7. Поскольку баланс общий, можно начать с одной дешёвой модели, а если качество на вашем сценарии не устраивает — переключить бота на другую заменой одного значения model и сравнить.
Актуальные цены в рублях за 1M токенов смотрите в каталоге моделей VseLLM — они рендерятся по текущему курсу ЦБ, поэтому здесь конкретные суммы не приводим. Если позже боту понадобится более сильная модель для сложных задач, тот же ключ и баланс дают доступ ко всей линейке.
Калькулятор стоимости
Задайте свою нагрузку — сколько токенов уходит на запрос и сколько запросов в месяц — и увидите месячную стоимость дешёвых чат-моделей в рублях по текущему курсу.
При такой нагрузке дешевле всего — DeepSeek V4 Flash: 550 ₽ в месяц.
| Модель | За 1 запрос | В месяц |
|---|---|---|
| DeepSeek V4 Flashдешевле всего | 0.06 ₽ | 550 ₽ |
| GPT-4o mini | 0.08 ₽ | 825 ₽ |
| Gemini 3 Flash | 0.35 ₽ | 3 490 ₽ |
| Claude Haiku 4.5 | 0.62 ₽ | 6 190 ₽ |
Оценка по текущим ценам каталога (пересчёт из USD-прайсов провайдеров по курсу ЦБ). Реальный расход зависит от структуры промптов; детализация — в кабинете по каждому ключу.
Баланс один на все модели — через тот же ключ доступны OpenAI, Claude, Gemini и DeepSeek. Полный каталог с ценами — /ai-tools/models/.
Смежные материалы
- Все модели и цены в рублях
- Модели OpenAI (gpt-4o-mini)
- Модели DeepSeek (deepseek-v4-flash)
- DeepSeek API в России
- OpenAI API в России
Частые вопросы
Ранний доступ к моделям через VseLLM
Оставьте заявку — расскажем о подключении, ценах в рублях и договоре для юрлица, и первыми пригласим, когда откроется выпуск ключей.