6.8 KiB
6.8 KiB
📋 Обзор проекта ChatBot
🎯 Что такое ChatBot?
ChatBot — это интеллектуальный Telegram-бот, использующий локальные AI модели через Ollama для создания естественных диалогов. Бот имитирует общение реального человека с индивидуальным характером и стилем общения.
✨ Основные возможности
🤖 AI-функциональность
- Интеграция с Ollama - Использование локальных LLM моделей
- Контекстное общение - Бот помнит историю диалога
- Сжатие истории - Автоматическая оптимизация длинных диалогов
- Настраиваемый промпт - Гибкая настройка личности бота
- Множественные модели - Поддержка различных AI моделей
💬 Telegram функции
- Команды бота -
/start,/help,/clear,/settings,/status - Групповые чаты - Работа в приватных чатах и группах
- Обработка ошибок - Устойчивость к сбоям
- Retry механизм - Автоматические повторные попытки
- Health checks - Мониторинг состояния сервисов
💾 Управление данными
- PostgreSQL - Хранение сессий и истории
- Entity Framework Core - ORM для работы с БД
- Миграции - Автоматическое обновление схемы БД
- In-Memory опция - Альтернативное хранилище для тестов
🛠️ Технические особенности
- .NET 9.0 - Современная платформа
- Dependency Injection - Управление зависимостями
- Serilog - Структурированное логирование
- FluentValidation - Валидация конфигурации
- Health Checks - Проверка работоспособности
🏗️ Архитектура
Проект построен на принципах:
- Clean Architecture - Разделение на слои
- SOLID принципы - Качественный дизайн кода
- Dependency Inversion - Зависимость от абстракций
- Repository Pattern - Абстракция доступа к данным
- Service Layer - Бизнес-логика в сервисах
Основные слои:
┌─────────────────────────────────────┐
│ Telegram Bot Layer │
│ (TelegramBotService, Commands) │
├─────────────────────────────────────┤
│ Service Layer │
│ (ChatService, AIService, etc.) │
├─────────────────────────────────────┤
│ Data Access Layer │
│ (Repositories, DbContext) │
├─────────────────────────────────────┤
│ Infrastructure │
│ (PostgreSQL, Ollama) │
└─────────────────────────────────────┘
🔧 Технологический стек
Backend
- Runtime: .NET 9.0
- Language: C# 13
- Архитектура: Worker Service
Библиотеки
- Telegram.Bot 22.7.2 - Telegram Bot API
- OllamaSharp 5.4.7 - Ollama клиент
- Entity Framework Core 9.0.10 - ORM
- Npgsql 9.0.4 - PostgreSQL провайдер
- Serilog 4.3.0 - Логирование
- FluentValidation 12.0.0 - Валидация
База данных
- PostgreSQL - Основное хранилище
- In-Memory - Опция для разработки
Тестирование
- xUnit 2.9.3 - Тестовый фреймворк
- Moq 4.20.72 - Моки
- FluentAssertions 8.7.1 - Assertions
- Coverlet 6.0.4 - Code coverage
DevOps
- Docker - Контейнеризация
- Gitea Actions - CI/CD
- SonarQube - Анализ кода
📊 Статистика проекта
- Языки: C#
- Файлов кода: ~100+
- Тестов: 50+ test classes
- Покрытие кода: ~80%+
- Target Framework: .NET 9.0
🎭 Особенности реализации
Умная обработка сообщений
Бот использует специальные маркеры в ответах AI:
{empty}- Игнорировать сообщение (не для него)- Контекстная обработка групповых чатов
- Распознавание обращений по имени
Оптимизация памяти
- Автоматическое сжатие длинной истории
- Сохранение системного промпта
- Настраиваемые лимиты сообщений
Отказоустойчивость
- Retry механизм с экспоненциальным backoff
- Обработка таймаутов
- Health checks для мониторинга
🔐 Безопасность
- Переменные окружения для секретов
- User Secrets для разработки
- Валидация конфигурации при старте
- Безопасное хранение токенов
🌟 Преимущества
- Модульность - Легко расширяемая архитектура
- Тестируемость - Высокое покрытие тестами
- Производительность - Асинхронная обработка
- Надежность - Retry механизмы и обработка ошибок
- Масштабируемость - Готовность к росту нагрузки
📈 Планы развития
- Поддержка мультимодальных моделей
- Веб-интерфейс для управления
- Метрики и аналитика
- Kubernetes deployment
- Дополнительные команды
- Плагинная система
🤝 Вклад в проект
Проект открыт для contributions! См. Contributing Guide для деталей.