Telegram AI Companion: веселый проект на Rust, Telegram и локальном ИИ. actix.. actix. ai.. actix. ai. docker.. actix. ai. docker. llm.. actix. ai. docker. llm. localai.. actix. ai. docker. llm. localai. Natural Language Processing.. actix. ai. docker. llm. localai. Natural Language Processing. ngrok.. actix. ai. docker. llm. localai. Natural Language Processing. ngrok. Open source.. actix. ai. docker. llm. localai. Natural Language Processing. ngrok. Open source. openai.. actix. ai. docker. llm. localai. Natural Language Processing. ngrok. Open source. openai. rust.. actix. ai. docker. llm. localai. Natural Language Processing. ngrok. Open source. openai. rust. telegram bot.. actix. ai. docker. llm. localai. Natural Language Processing. ngrok. Open source. openai. rust. telegram bot. искусственный интеллект.. actix. ai. docker. llm. localai. Natural Language Processing. ngrok. Open source. openai. rust. telegram bot. искусственный интеллект. Программирование.

👋

Недавно я собрал небольшой, но бодрый 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

✅ Поддерживает тесты, обёрнут в читаемую структуру


⚙️ Как это работает

Общая схема

  1. Пользователь пишет боту в Telegram.

  2. Telegram вызывает наш вебхук (/telegram/webhook).

  3. Rust-приложение принимает сообщение, отправляет его в LocalAI.

  4. Получает ответ и отправляет его обратно пользователю.

Стек технологий

  • 🦀 Rust: язык, который не прощает ошибок, но зато учит думать

  • 🌐 Actix Web: быстрый веб-фреймворк

  • 📦 Docker + Compose: всё изолировано, удобно и воспроизводимо

  • 🧠 LocalAI: альтернатива OpenAI с поддержкой GGUF и LLaMa моделей


🚀 Быстрый запуск

  1. Клонируем репозиторий:

    git clone https://github.com/di-zed/tg-ai-companion
    cd tg-ai-companion
  2. Скачиваем модель (например, 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
  3. Либо можно использовать 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
  4. Запускаем (не забываем отредактировать .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-бота

  1. Откройте Telegram и найдите @BotFather

  2. Напишите команду:

    /newbot
  3. Укажите имя и уникальное имя пользователя (должно заканчиваться на bot, например: ai_companion_bot)

  4. Получите токен, который будет выглядеть так:

    123456789:AAH6kDkKvkkkT-PWTwMg6cYtHEb3vY_tS1k
  5. Сохраните его в .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, как всегда 🙂

Автор: D1maZed

Источник

Rambler's Top100