- BrainTools - https://www.braintools.ru -
👋
Недавно я собрал небольшой, но бодрый pet-проект — Telegram AI Companion. Это Telegram-бот, который умеет болтать с вами, используя локальную языковую модель через LocalAI [1]. Без OpenAI, без облаков — всё на своём железе.
Цель проекта — не революция в AI, а именно учебное и увлекательное погружение в Rust, асинхронность, Telegram API и локальные LLM-модели. Такой себе “бот-компаньон”, но больше для разработчика, чем пользователя :)
Если вам интересно:
Как соединить Telegram-бота с локальной LLM
Как запускать Rust-проекты в Docker
Как построить REST API и обрабатывать вебхуки
Как потрогать LocalAI без боли [2]
— добро пожаловать!
Вот что умеет бот:
✅ Отвечает в Telegram на любые сообщения
✅ Работает с LocalAI (а при желании и с OpenAI)
✅ Запускается через Docker + Docker Compose
✅ Написан на Rust с использованием Actix Web
✅ Есть REST API (/chat) — можно прикрутить любой UI
✅ Поддерживает тесты, обёрнут в читаемую структуру
Пользователь пишет боту в Telegram.
Telegram вызывает наш вебхук (/telegram/webhook).
Rust-приложение принимает сообщение, отправляет его в LocalAI.
Получает ответ и отправляет его обратно пользователю.
🦀 Rust: язык, который не прощает ошибок, но зато учит думать
🌐 Actix Web: быстрый веб-фреймворк
📦 Docker + Compose: всё изолировано, удобно и воспроизводимо
🧠 LocalAI: альтернатива OpenAI с поддержкой GGUF и LLaMa моделей
Клонируем репозиторий:
git clone https://github.com/di-zed/tg-ai-companion
cd tg-ai-companion
Скачиваем модель (например, Mistral 7B) и создаем mistral.yaml файл:
cd models/
wget https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q4_K_M.gguf
name: mistral
backend: llama
parameters:
model: mistral-7b-instruct-v0.2.Q4_K_M.gguf
temperature: 0.7
top_p: 0.9
top_k: 40
n_ctx: 4096
Либо можно использовать OpenAI, настраивается в .env файле:
OPEN_AI_URL=http://localai:8080 # or https://api.openai.com
OPEN_AI_MODEL=mistral # or gpt-3.5-turbo / gpt-4 / etc.
OPEN_AI_API_KEY=your_openai_key # required if using OpenAI
Запускаем (не забываем [3] отредактировать .env):
cp .env.sample .env
cp volumes/root/.bash_history.sample volumes/root/.bash_history
docker-compose up --build
docker-compose exec rust bash
cargo run
Теперь бот работает на localhost [4], а LocalAI — на localhost:8080.
Откройте Telegram и найдите @BotFather [5]
Напишите команду:
/newbot
Укажите имя и уникальное имя пользователя (должно заканчиваться на bot, например: ai_companion_bot)
Получите токен, который будет выглядеть так:
123456789:AAH6kDkKvkkkT-PWTwMg6cYtHEb3vY_tS1k
Сохраните его в .env в параметр TELEGRAM_BOT_TOKEN:
TELEGRAM_BOT_TOKEN=ваш_токен_сюда
Теперь ваш бот готов принимать сообщения через вебхук! 🚀
Чтобы Telegram мог достучаться до вашего локального сервера:
ngrok http 80
А потом:
curl -X POST "https://api.telegram.org/bot<ВАШ_ТОКЕН>/setWebhook"
-H "Content-Type: application/json"
-d '{"url": "https://ВАШ-АДРЕС.ngrok-free.app/telegram/webhook"}'
Вы можете использовать бот как обычный LLM API:
POST /chat
Authorization: Bearer YOUR_TOKEN
{
"prompt": "Привет, кто ты?"
}
Ответ приходит от LocalAI (или OpenAI — если включите в .env).
Цель была простая:
Сделать понятный, рабочий и весёлый проект, чтобы прокачаться в Rust, потрогать локальные LLM и просто поиграться с Telegram-ботами.
Теперь можно на его основе строить что-то серьёзное — например, AI-бота с памятью [6], генератор текстов, консультанта и т.д.
Добавить поддержку памяти и диалогов
Прикрутить веб-интерфейс
Поддержка нескольких языковых моделей
Если вы только начинаете в Rust или хотите потрогать локальные модели без всяких API-ключей — этот проект может стать отличной отправной точкой.
📝 Примечание: В этой статье я не стал расписывать все технические детали — чтобы сохранить лёгкость и не перегружать материал.
Если вам интересно глубже погрузиться в архитектуру проекта, структуру кода или тонкости настройки, добро пожаловать в README на GitHub [7] — там всё подробно разложено по полочкам.
Проект открыт: GitHub — tg-ai-companion [7]
🧠 LocalAI [1] — основной движок для LLM
🦀 Rust Book [8] — лучшее место для старта
☁️ ngrok [9] — если хочется Telegram вебхуки локально
Благодарю за внимание [10]! Если бот вам ответил весело — это моя заслуга. Если молчит — ну, это Telegram или ngrok, как всегда 🙂
Автор: D1maZed
Источник [11]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/16469
URLs in this post:
[1] LocalAI: https://github.com/mudler/LocalAI
[2] боли: http://www.braintools.ru/article/9901
[3] забываем: http://www.braintools.ru/article/333
[4] localhost: http://localhost
[5] @BotFather: https://t.me/BotFather
[6] памятью: http://www.braintools.ru/article/4140
[7] README на GitHub: https://github.com/di-zed/tg-ai-companion
[8] Rust Book: https://doc.rust-lang.org/book/
[9] ngrok: https://ngrok.com/
[10] внимание: http://www.braintools.ru/article/7595
[11] Источник: https://habr.com/ru/articles/920482/?utm_source=habrahabr&utm_medium=rss&utm_campaign=920482
Нажмите здесь для печати.