AI-помощник для учёта калорий в Telegram
Telegram-бот с AI-нутрициологом на базе Mistral AI. Просто напишите боту что вы ели — он найдёт продукт, рассчитает КБЖУ и запишет в дневник питания.
| Функция | Описание |
|---|---|
| 🤖 AI-агент | Интеллектуальный нутрициолог на Mistral (tool calling) |
| 🔍 Поиск продуктов | База YAZIO с тысячами продуктов на русском |
| 📊 Учёт КБЖУ | Автоматический расчёт калорий, белков, жиров, углеводов |
| 🎯 Персональные нормы | Расчёт по формуле Миффлина-Сан Жеора |
| 💬 Контекст диалога | Бот помнит контекст разговора |
| 📋 Inline-клавиатуры | Удобная навигация без команд |
- Python 3.12+
- uv
- Telegram Bot Token (BotFather)
- Mistral API Key (console.mistral.ai)
git clone <repo-url> && cd hhBotAI
cp .env.example .envЗаполните .env:
BOT_TOKEN=your_telegram_bot_token
MISTRAL_API_KEY=your_mistral_api_keyuv sync
uv run python main.pydocker compose up --build -dapp/
├── config.py # Конфигурация (pydantic-settings)
├── database/
│ ├── models.py # Pydantic-модели, расчёт КБЖУ
│ ├── connection.py # Менеджер SQLite
│ └── repository.py # CRUD-операции
├── services/
│ ├── mistral_client.py # Прямые HTTP-запросы к Mistral API
│ ├── yazio_client.py # Поиск продуктов (YAZIO)
│ └── agent.py # AI-агент с tool calling
└── bot/
├── states.py # FSM-состояния
├── keyboards.py # Inline-клавиатуры
├── middlewares.py # Database middleware
└── handlers/
├── start.py # Онбординг (7 шагов)
├── chat.py # Текст → AI-агент
└── callbacks.py # Меню и действия
Пользователь: "Съел 200г гречки"
│
▼
┌─────────────┐
│ Mistral AI │──► search_food("гречка")
└─────────────┘ │
▲ ▼
│ ┌──────────────┐
│ │ YAZIO API │
│ └──────────────┘
│ │
│ ▼
┌─────────────┐ Результаты поиска
│ Mistral AI │◄────────┘
└─────────────┘
│
▼
log_meal(гречка, 200г, ...)
│
▼
✅ Записано: Гречка — 200г
📊 264 ккал | Б: 25г | Ж: 7г | У: 51г
| Технология | Назначение |
|---|---|
| aiogram 3 | Telegram Bot Framework |
| aiohttp | HTTP-клиент для API |
| aiosqlite | Асинхронный SQLite |
| pydantic-settings | Конфигурация и валидация |
| Mistral AI | LLM с function calling |
| YAZIO API | База продуктов питания |
| Docker | Контейнеризация |
MIT