Привет, Хабр! ?
Недавно я собрал небольшой, но бодрый pet-проект — Telegram AI Companion. Это Telegram-бот, который умеет болтать с вами, используя локальную языковую модель через LocalAI. Без OpenAI, без облаков — всё на своём железе.
Цель проекта — не революция в AI, а именно учебное и увлекательное погружение в Rust, асинхронность, Telegram API и локальные LLM-модели. Такой себе “бот-компаньон”, но больше для разработчика, чем пользователя :)
Если вам интересно:
- Как соединить Telegram-бота с локальной LLM 
- Как запускать Rust-проекты в Docker 
- Как построить REST API и обрабатывать вебхуки 
- Как потрогать LocalAI без боли 
— добро пожаловать!
? Что под капотом
Вот что умеет бот:
✅ Отвечает в 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.ggufname: 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
- 
Запускаем (не забываем отредактировать .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, а LocalAI — на localhost:8080.
? Как создать Telegram-бота
- Откройте Telegram и найдите @BotFather 
- 
Напишите команду: /newbot
- Укажите имя и уникальное имя пользователя (должно заканчиваться на bot, например: ai_companion_bot) 
- 
Получите токен, который будет выглядеть так: 123456789:AAH6kDkKvkkkT-PWTwMg6cYtHEb3vY_tS1k
- 
Сохраните его в .envв параметрTELEGRAM_BOT_TOKEN:TELEGRAM_BOT_TOKEN=ваш_токен_сюда
Теперь ваш бот готов принимать сообщения через вебхук! ?
? Проброс Telegram вебхука через ngrok
Чтобы 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"}'? API-режим (без Telegram)
Вы можете использовать бот как обычный LLM API:
POST /chat
Authorization: Bearer YOUR_TOKEN
{
  "prompt": "Привет, кто ты?"
}Ответ приходит от LocalAI (или OpenAI — если включите в .env).
? Зачем это всё?
Цель была простая:
Сделать понятный, рабочий и весёлый проект, чтобы прокачаться в Rust, потрогать локальные LLM и просто поиграться с Telegram-ботами.
Теперь можно на его основе строить что-то серьёзное — например, AI-бота с памятью, генератор текстов, консультанта и т.д.
? Планы на будущее
- Добавить поддержку памяти и диалогов 
- Прикрутить веб-интерфейс 
- Поддержка нескольких языковых моделей 
? Заключение
Если вы только начинаете в Rust или хотите потрогать локальные модели без всяких API-ключей — этот проект может стать отличной отправной точкой.
? Примечание: В этой статье я не стал расписывать все технические детали — чтобы сохранить лёгкость и не перегружать материал.
Если вам интересно глубже погрузиться в архитектуру проекта, структуру кода или тонкости настройки, добро пожаловать в README на GitHub — там всё подробно разложено по полочкам.
Проект открыт: GitHub — tg-ai-companion
? Полезные ссылки
- ? LocalAI — основной движок для LLM 
- ? Rust Book — лучшее место для старта 
- ☁️ ngrok — если хочется Telegram вебхуки локально 
Благодарю за внимание! Если бот вам ответил весело — это моя заслуга. Если молчит — ну, это Telegram или ngrok, как всегда ?
 
          