Технический разбор проекта «Помощник Программиста»

ИИ бот

Я разработал Telegram-бота «Помощник Программиста» — это мой личный проект, который я сделал один, от идеи до поддержки. Цель была простая: создать инструмент для русскоязычных разработчиков, который помогает решать задачи по программированию, хранит контекст диалога и выдаёт код без лишней "воды".

Зачем я сделал этого бота?

  • Большинство существующих ботов — просто "прокладки" к ChatGPT без контекста и персонализации
  • Я хотел, чтобы ответы были только на русском и с примерами кода
  • Нужен был инструмент, которым удобно пользоваться именно в Telegram
  • Важно было сохранить простоту деплоя и поддержки, так как работал один

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

  • python-telegram-bot ≥ 20.0 — основной фреймворк
  • aiohttp — минимальный HTTP-сервер для health-check
  • Groq Async API с моделью gemma2-9b-it — основная LLM
  • Hugging Face Inference API — fallback для коротких ответов
  • Хранение данных пользователей в простом users.json
  • Кастомные модули: smart_features, enhanced_ai_handler, database, utils

Как устроена архитектура

  • main.py — точка входа с обработчиками команд и сообщений
  • RateLimiter ограничивает до 10 запросов в минуту на одного пользователя
  • ResponseCache хранит последние ответы и снижает нагрузку на LLM
  • UserContext сохраняет историю диалога, уровень навыка и предпочтения стиля
  • Форматирование кода реализовано через <pre><code>, чтобы в Telegram блоки выглядели аккуратно

Работа с конфигурацией и секретами

  • Все ключи хранятся в .env и .env.local
  • При старте бот проверяет наличие обязательных ключей и падает с ошибкой, если чего-то нет
  • Есть скрипты test_api.py и test_models.py для проверки ключей и доступности моделей

Интеграция с LLM

  • Groq — основная модель, которая обрабатывает запросы
  • В prompt добавляется системное сообщение и последние 6 реплик из истории
  • При таймауте или ошибке подключается Hugging Face
  • Температура 0.3 и лимит в 1000 токенов позволяют держать ответы стабильными

Тестирование и поддержка

  • Локальные проверки API-ключей
  • Тестирование команд: /start, /help, /stats, /settings
  • Проверка отображения кода и кириллицы в Telegram
  • Введён TYPING_DELAY, чтобы бот отвечал более "по-человечески"

Деплой

  • Railway: запуск через deploy_railway.py, переменные окружения задаются в Dashboard
  • Render: используется render.yaml с конфигурацией порта и командой запуска
  • Для обоих вариантов реализован health-check по эндпоинту /health

Выводы

  • Контекст и память — обязательная часть, иначе бот превращается в обычный FAQ
  • Детальный системный prompt помогает сохранять стиль и язык ответов
  • Даже простая JSON-база достаточна на старте
  • Rate limiter и кэш экономят ресурсы и ускоряют ответы

Что дальше?

  • Добавить "учебные режимы" — мини-курсы и чек-листы прямо в боте
  • Сделать простую админку для просмотра статистики
  • Расширить базу умных подсказок

Бот создан мной — Вадим, full-stack разработчик. Если нужен такой инструмент, консультация по архитектуре или аудит кода — пишите:

Прокрутить вверх
Оставьте сообщение — отвечу через Telegram в течение 20 минут.
Отправляя данные, вы соглашаетесь с Политикой конфиденциальности