Добавить в корзинуПозвонить
Найти в Дзене
AI в курсе

Как создать Telegram-бота с локальной нейросетью. Гайд для тех, кто устал от облачных API и хочет приватности

Платить за ChatGPT Pro по 20 долларов в месяц и каждый раз объяснять нейросети, что вы не хотите отправлять свои данные в облако, — такое себе удовольствие. Особенно если у вас есть доступ к открытым моделям, которые ничем не хуже, а по некоторым задачам даже лучше. Я покажу, как за полчаса собрать Telegram-бота, который общается с нейросетью прямо на вашем компьютере. Никаких ежемесячных платежей. Никаких «ваши данные могут быть использованы для улучшения сервиса». Только ваш железный друг в вашем же доме. Звучит как что-то сложное? На деле — три шага и один вечер, который окупится в первый же месяц использования. Ollama — это швейцарский нож для локальных нейросетей. Ставится одной командой и работает на любой платформе. На Mac или Linux: bash curl -fsSL https://ollama.com/install.sh | sh На Windows — скачиваете установщик с официального сайта ollama.com. После установки запускаем сервер: bash ollama serve А теперь самое интересное — качаем модель. Для начала возьмём проверенную рабо
Оглавление

Платить за ChatGPT Pro по 20 долларов в месяц и каждый раз объяснять нейросети, что вы не хотите отправлять свои данные в облако, — такое себе удовольствие. Особенно если у вас есть доступ к открытым моделям, которые ничем не хуже, а по некоторым задачам даже лучше.

Я покажу, как за полчаса собрать Telegram-бота, который общается с нейросетью прямо на вашем компьютере. Никаких ежемесячных платежей. Никаких «ваши данные могут быть использованы для улучшения сервиса». Только ваш железный друг в вашем же доме.

Что нам понадобится (список короткий)

  • Компьютер с 8+ ГБ оперативной памяти
  • Установленный Ollama (это программа, которая запускает локальные модели)
  • Python 3.10 или выше
  • Токен Telegram-бота (получается у @BotFather за 2 минуты)
  • Желание сэкономить 240 долларов в год на подписках

Звучит как что-то сложное? На деле — три шага и один вечер, который окупится в первый же месяц использования.

Шаг 1. Ставим Ollama и качаем модель

Ollama — это швейцарский нож для локальных нейросетей. Ставится одной командой и работает на любой платформе.

На Mac или Linux:

bash

curl -fsSL https://ollama.com/install.sh | sh

На Windows — скачиваете установщик с официального сайта ollama.com.

После установки запускаем сервер:

bash

ollama serve

А теперь самое интересное — качаем модель. Для начала возьмём проверенную рабочую лошадку:

bash

ollama pull qwen3:8b

Она весит около 4-5 гигабайт в квантованном виде и тянет на любом нормальном компьютере. Если у вас меньше 8 ГБ оперативной памяти, можно взять qwen3:4b или даже llama3.2:3b — они поменьше, но для большинства задач хватит.

Проверяем, что всё работает:

bash

ollama run qwen3:8b "Привет, как дела?"

Модель должна ответить. Если ответила - вы великолепны, переходим к следующему шагу.

Шаг 2. Создаём Telegram-бота (это вообще просто)

Идём в Telegram, находим @BotFather. Это официальный бот для создания ботов.

Вводим команду /newbot. BotFather спросит:

  • Имя бота — то, как он будет отображаться в чате
  • Username — должно заканчиваться на bot

После создания BotFather выдаст токен — длинную строку вроде 1234567890:ABCdefGHIjklMNOpqrsTUVwxyz. Сохраните его. Это ключ от вашего бота, никому его не отдавайте.

Всё. Бот создан. Пока он ничего не умеет, но мы это исправим.

Шаг 3. Пишем простого бота на Python (кода — 30 строк)

Теперь главное. Нам нужна программа, которая будет соединять Telegram и Ollama.

Создаём папку для проекта:

bash

mkdir telegram-ai-bot
cd telegram-ai-bot

Создаём виртуальное окружение (чтобы не засорять систему):

bash

python -m venv venv
source venv/bin/activate # на Windows: venv\Scripts\activate

Устанавливаем библиотеки:

bash

pip install python-telegram-bot requests

Создаём файл bot.py и пишем туда код:

python

import requests
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes

# Конфигурация — сюда вставляем свой токен
BOT_TOKEN = "ВАШ_ТОКЕН_ОТ_BOTFATHER"
OLLAMA_URL = "http://localhost:11434/api/generate"
OLLAMA_MODEL = "qwen3:8b"

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Привет! Я локальный ИИ-бот. Никакие данные не уходят в облако. Просто напиши мне что-нибудь.")

async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
user_message = update.message.text

# Отправляем запрос в Ollama
response = requests.post(
OLLAMA_URL,
json={
"model": OLLAMA_MODEL,
"prompt": user_message,
"stream": False
}
)

if response.status_code == 200:
ai_response = response.json()["response"]
await update.message.reply_text(ai_response)
else:
await update.message.reply_text("Ошибка подключения к нейросети. Проверь, запущен ли Ollama.")

def main():
app = Application.builder().token(BOT_TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
app.run_polling()

if __name__ == "__main__":
main()

Всё. Осталось запустить:

bash

python bot.py

Открываете Telegram, находите своего бота, пишете /start — и он ответит.

Поздравляю. У вас свой локальный ИИ-бот. Абсолютно бесплатно. Полностью приватно.

Шаг 4. Добавляем «память» — чтобы бот не забывал диалог

В текущей версии бот не помнит, о чём вы говорили минуту назад. Каждый запрос для него — новый разговор. Исправим это.

Модифицируем код. Добавим словарь, который будет хранить историю для каждого пользователя:

python

from collections import defaultdict

# Хранилище истории диалогов
chat_histories = defaultdict(list)

async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
user_id = update.effective_user.id
user_message = update.message.text

# Сохраняем сообщение пользователя в историю
chat_histories[user_id].append({"role": "user", "content": user_message})

# Ограничиваем историю последними 10 сообщениями (чтобы не перегружать память)
if len(chat_histories[user_id]) > 20:
chat_histories[user_id] = chat_histories[user_id][-20:]

# Формируем запрос с историей
response = requests.post(
"http://localhost:11434/api/chat", # обратите внимание — используем /chat, а не /generate
json={
"model": OLLAMA_MODEL,
"messages": chat_histories[user_id],
"stream": False
}
)

if response.status_code == 200:
ai_response = response.json()["message"]["content"]
# Сохраняем ответ модели в историю
chat_histories[user_id].append({"role": "assistant", "content": ai_response})
await update.message.reply_text(ai_response)
else:
await update.message.reply_text("Ошибка подключения к нейросети.")

Важный нюанс: обратите внимание на использование /api/chat вместо /api/generate. Первый эндпоинт предназначен именно для диалогов с историей, второй — для простой генерации .

Теперь бот помнит, о чём вы говорили, и поддерживает контекст.

Шаг 5. Что ещё можно добавить (и это всё локально)

Базовый вариант работает. Но его можно прокачать до полноценного голосового помощника с кучей фич.

Голосовые сообщения. Добавляем распознавание речи через Whisper (тоже локально). Пользователь отправляет голосовое — бот транскрибирует его в текст и отправляет в модель.

bash

pip install faster-whisper

В коде добавляем обработчик голосовых сообщений:

python

from faster_whisper import WhisperModel

model = WhisperModel("base", device="cpu", compute_type="int8")

async def handle_voice(update: Update, context: ContextTypes.DEFAULT_TYPE):
voice = update.message.voice
file = await context.bot.get_file(voice.file_id)
await file.download_to_drive("voice.ogg")

segments, _ = model.transcribe("voice.ogg")
text = " ".join([seg.text for seg in segments])

# Дальше отправляем text в Ollama, как обычное сообщение

Анализ картинок. Если взять мультимодальную модель вроде Gemma 3 4B, бот сможет описывать изображения. Пользователь отправляет фото — бот видит, что на нём, и комментирует.

Прокси для обхода блокировок. Telegram в России иногда работает нестабильно. В коде можно добавить поддержку прокси. Просто передаёте параметр proxy_url при создании Application .

Ограничение по пользователям. Если не хотите, чтобы ботом пользовались все подряд, можно задать список разрешённых ID. А если хотите, наоборот, открыть доступ всем — просто не ставите ограничений .

Если вам нужен просто чат-бот - нашего варианта достаточно. Если хотите, чтобы бот сам писал код, управлял файлами или запускал терминальные команды - смотрите в сторону OpenClaw.

Требования к железу (честно)

Важный момент, о котором молчат в красивых туториалах.

На старом ноутбуке с 8 ГБ ОЗУ qwen3:8b будет работать, но ответы станут приходить за 15-20 секунд. Если это критично, лучше взять модель поменьше.

Наличие GPU с 8 ГБ VRAM ускорит инференс в 5-10 раз. Но для начала хватит и процессора.

Вопрос к вам

Пробовали запускать локальные модели? Какую выбрали — Qwen, Llama, Gemma? Или остались на облачных сервисах, несмотря на цену и приватность?

И главный вопрос: какие фичи вы хотели бы добавить в своего бота — голос, картинки, управление компьютером?

Ставьте лайк, если хотите больше гайдов по локальному ИИ.