@dieugene/kak-dela-bot-public v1.0.9
🤖 Telegram Bot Template "Как дела?"
Расширенный шаблон для создания Telegram-ботов с ИИ-возможностями, продвинутым управлением пользователями и системой автоматических уведомлений. Основан на симуляции социальной сети с функциями диалогового ИИ, управления событиями и аналитики.
📋 Описание проекта
Это комплексная система, включающая в себя:
🏗️ Архитектура основных модулей
1. Telegram Bot Engine (index.js)
- Полнофункциональный Telegram-бот на базе Telegraf
- Обработка всех типов сообщений (текст, голос, файлы, фото, контакты)
- Система callback-запросов для интерактивных кнопок
- Реферальная система и приглашения
- Команды:
/start,/help,/clear_sessions,/invite,/show_files
2. Система диалогов (dialog.js)
- Интеграция с
@dialogai/dialog-classдля ИИ-диалогов - Поддержка Zod-схем для структурированного ИИ-вывода
- Автоматическое резюмирование длинных диалогов
- Настраиваемые ИИ-ассистенты с различными ролями
3. Управление пользователями (user-list.js)
- Централизованная база пользователей с настройками
- Система уведомлений (ежедневные/еженедельные)
- Отслеживание активности и пропущенных уведомлений
- Персональные настройки частоты дайджестов
4. Система уведомлений (timer-handlers.js)
- Автоматические проактивные запросы статуса
- Логика повторных попыток для неактивных пользователей
- Удаление неотвеченных сообщений
- Настраиваемые интервалы уведомлений
5. Управление файлами (file-manager.js)
- Загрузка и обработка документов пользователей
- Интеграция с системой callback для управления файлами
- Поддержка различных типов файлов (CV, документы)
- Возможность удаления файлов
6. Система событий (observers.js)
- Паттерн Observer для обработки событий
- Асинхронная обработка событий (поделиться телефоном, загрузка файлов)
- Расширяемая архитектура для новых типов событий
7. Утилиты и хелперы (bot_utils.js)
- Обработка callback-запросов
- Отправка сложных ответов с кнопками
- Система post-сообщений
- Обработка файлов и медиа
- Централизованное логирование ошибок
8. Онбординг (onboarding.js)
- Система приветствия новых пользователей
- Обучающие материалы и ссылки
- Адаптивные сценарии в зависимости от типа пользователя
9. Шина новостей (news-bus.js)
- Централизованное хранилище обновлений пользователей с TTL
- Фильтрация новостей по подпискам и времени
- Автоматическая очистка устаревших записей
- Изоляция данных через отдельный домен
10. ИИ-анализ диалогов (analysis.js)
- Структурированный анализ диалогов с помощью Zod-схем
- Извлечение новостей и семантическое сравнение содержания
- Обогащение диалогов метаданными (темы, настроение, ключевые упоминания)
- Создание резюме и извлечение тематик
🔧 Зависимости и технологии
Основные фреймворки:
- Telegraf - фреймворк для Telegram-ботов
- @dialogai/dialog-class - ИИ-диалоги с поддержкой различных LLM
- @dialogai/user-controller - управление пользователями
- Zod - валидация схем для структурированного ИИ-вывода
Внешние сервисы:
- @dieugene/* - внутренние модули экосистемы:
key-object-db- база данных ключ-значениеsessions- управление сессиямиcallbacks- система callbacksocial-graph- реферальная системаtg-messages-cache- кеширование сообщенийlogger- централизованное логированиеutils- набор утилитvoicer- распознавание голосаydb- работа с YandexDB
ИИ и аналитика:
- @langchain/* - интеграция с LangChain для ИИ
- Fuse.js - нечеткий поиск
📋 Обзор функциональности
Для пользователей:
- Ведение персональных диалогов с ИИ-ассистентом
- Автоматические уведомления о важных событиях
- Загрузка и управление файлами
- Реферальная система для приглашения друзей
- Настройка частоты уведомлений и дайджестов
Для разработчиков:
- Готовая архитектура для масштабируемых ботов
- Система управления пользователями из коробки
- Интеграция с ИИ-сервисами
- Extensible event system
- Детальное логирование и аналитика
- Унифицированная система доменов и стандартизированное логирование
- Полная миграция возможностей из симуляции в реальный бот
📚 Для разработчиков: Обязательно изучите
DEVELOPMENT_LOG.mdдля понимания критических исправлений и контекста разработки!
🏗️ Архитектура системы
Схема компонентов Telegram Bot
┌─────────────────────────────────────────────────────────────────┐
│ TELEGRAM BOT CORE │
├─────────────────┬───────────────────┬─────────────────────────┤
│ index.js │ dialog.js │ bot_utils.js │
│ │ │ │
│ • Telegraf Bot │ • Dialog Class │ • Callback Handlers │
│ • Route Handler │ • AI Integration │ • Message Processing │
│ • Commands │ • Zod Schemas │ • File Operations │
│ • Events │ • Summary Logic │ • Error Handling │
└─────────────────┴───────────────────┴─────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ USER MANAGEMENT │
├─────────────────┬───────────────────┬─────────────────────────┤
│ user-list.js │timer-handlers.js │ onboarding.js │
│ │ │ │
│ • User Database │ • Notifications │ • Welcome Messages │
│ • Settings │ • Reminders │ • Help System │
│ • Activity │ • Cleanup Logic │ • User Guidance │
│ • Preferences │ • Retry Logic │ • Resource Links │
└─────────────────┴───────────────────┴─────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ EXTENSIONS & UTILS │
├─────────────────┬───────────────────┬─────────────────────────┤
│file-manager.js │ observers.js │ External Services │
│ │ │ │
│ • File Upload │ • Event System │ • @dialogai/*** │
│ • File Storage │ • Async Handlers │ • @dieugene/*** │
│ • File Management│ • Observer Pattern│ • @langchain/*** │
│ • Callback System│ • Event Emission │ • Zod Validation │
└─────────────────┴───────────────────┴─────────────────────────┘Поток данных в боте
- Telegram Message →
index.js→ обработка типа сообщения - User Authentication →
user-list.js→ управление пользователем - Dialog Processing →
dialog.js→ ИИ-обработка +bot_utils.js - Response Generation → форматирование + отправка ответа
- Event Logging →
observers.js→ обработка событий - Scheduled Tasks →
timer-handlers.js→ автоматические уведомления
Архитектура системы симуляции
Дополнительно система включает продвинутую симуляцию социальной сети:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Avatar │ │ UserAgent │ │ DataBus │
│ │ │ │ │ │
│ - update_myself │ │ - generateResp │ │ - add/get │
│ - read_updates │ │ - analyzeType │ │ - event storage │
│ - subscriptions │ │ - personality │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Scheduler │ │ Reporter │ │ Producer │
│ │ │ │ │ │
│ - invoke_avatar │ │ - reportDialog │ │ - start/grow │
│ - day_counter │ │ - generatePDF │ │ - subscriptions │
│ - time_control │ │ - statistics │ │ - random_users │
└─────────────────┘ └─────────────────┘ └─────────────────┘🚀 Быстрый старт
Предварительные требования
# Node.js 16+
node --version
# Проверка доступности npm
npm --versionУстановка
- Клонируйте репозиторий
git clone <repository-url>
cd kak-dela-bot- Установите зависимости
npm install- Настройте переменные окружения
# Создайте .env файл с необходимыми ключами:
KAK_DELA_BOT_TOKEN=your_telegram_bot_token
OPENAI_API_KEY=your_openai_key
# Дополнительные ключи для внешних сервисовВарианты запуска
1. Telegram Bot (Production)
# Основной бот-сервер
node index.js2. Симуляция социальной сети (Testing)
# Запуск полной симуляции
node test-bot-simulation.js
# Другие тестовые модули
node test-optimized-implementation.js
node test-enhanced-report.js3. Запуск таймера уведомлений
# Для автоматических уведомлений (обычно в cron)
node -e "require('./timer-handlers.js').invoke()"Конфигурация
В package.json настройте:
name- имя вашего ботаdescription- описание проектаmain- точка входа (index.jsдля продакшена)
В коде настройте:
bot_domain='KAK-DELA-BOT'во всех основных модулях (унифицировано)bot_domain='KAK-DELA-BOT-NEWS-BUS'в news-bus.js (для изоляции данных)- Параметры ИИ-моделей в
dialog.js - Интервалы уведомлений в
timer-handlers.js
⚠️ Важно: Используйте единый домен
'KAK-DELA-BOT'для всех основных модулей. Специализированные домены оставляйте только для изоляции данных.
📖 Подробное описание компонентов
1. 🤖 index.js - Главный модуль Telegram-бота
Основа всей системы - полнофункциональный Telegram-бот.
Ключевые функции:
// Инициализация бота
function initBot(botToken) {
const bot = new Telegraf(botToken, {
handlerTimeout: Number.POSITIVE_INFINITY
});
// Настройка обработчиков...
}
// Обработка пользовательских сообщений
async function process_user_message(ctx, data, bot_token) {
// 1. Получение диалога для пользователя
// 2. Обработка кеша сообщений
// 3. Запуск ИИ-диалога
// 4. Отправка ответа
}Поддерживаемые команды:
/start- регистрация пользователя + реферальная система/help- справочная информация/clear_sessions- очистка истории диалогов/invite- получение реферальной ссылки/show_files- просмотр загруженных файлов
Обработка событий:
- Текстовые сообщения → обработка через ИИ
- Голосовые сообщения → распознавание + обработка
- Документы → загрузка и сохранение
- Фотографии → обработка медиа
- Контакты → сохранение информации
- Callback-запросы → выполнение действий
2. 💬 dialog.js - Система ИИ-диалогов
Интеграция с Dialog Class для создания интеллектуальных бесед.
Основные возможности:
// Построение диалога для пользователя
function buildDialog(user_uuid) {
let dialog = new Dialog({
alias: 'Нетворкинг-ассистент',
dialog_code: bot_domain,
start_system_msg: ``
});
dialog.summary_config.threshold = 20;
dialog.summary_config.limit = 15;
return dialog;
}Функции:
- Автоматическое резюмирование - когда диалог превышает порог
- Поддержка Zod-схем - для структурированного ИИ-вывода
- Настраиваемые роли - различные типы ассистентов
- Управление сессиями - привязка к пользователю
3. 👥 user-list.js - Управление пользователями
Централизованная система управления всеми пользователями бота.
Класс UserList:
// Добавление нового пользователя
async addUser(user_uuid, user_data) {
// Проверка существования в основной системе
// Настройка уведомлений по умолчанию
// Сохранение в базе
}
// Получение пользователей для уведомлений
async getUsersForNotification() {
// Фильтрация по времени последнего уведомления
// Учет настроек частоты
}Отслеживаемые данные:
telegram_id- ID пользователя в Telegramadded_at- время регистрацииlast_activity- последняя активностьlast_notification- время последнего уведомленияmissed_notifications- количество пропущенныхsettings- персональные настройки
4. ⏰ timer-handlers.js - Система уведомлений
Автоматические проактивные уведомления пользователей.
Логика работы:
// Основной цикл обработки
async function invoke() {
const allUsers = await userList.getAllUsers();
for (let user of allUsers) {
// Проверка статуса уведомлений
// Логика повторных попыток
// Отправка новых уведомлений
}
}Алгоритм уведомлений:
- Проверка ответа на предыдущее уведомление
- Удаление неотвеченных сообщений в конце дня
- Повторные попытки для неактивных (максимум 2)
- Сброс счетчика при получении ответа
- Отправка новых по расписанию
5. 📁 file-manager.js - Управление файлами
Система загрузки и обработки пользовательских файлов.
Возможности:
// Получение файлов пользователя
function get_user_files(user_data) {
return user_data.files || [];
}
// Создание сообщения с файлом
function to_message(file_data, user_uuid) {
return {
text: stringify_file_data(file_data),
markup_data: 'Удалить::' + callback_id
};
}Поддерживаемые операции:
- Загрузка документов - автоматическая обработка
- Классификация типов - CV, документы, др.
- Управление файлами - просмотр, удаление
- Интеграция с callback - интерактивные кнопки
6. 🔔 observers.js - Система событий
Реализация паттерна Observer для обработки событий.
Класс Observer:
// Подписка на событие
on(event_name, func) {
// Добавление обработчика в карту
}
// Генерация события
async emit(event_name, ...args) {
// Асинхронный вызов всех обработчиков
}Примеры событий:
phone_shared- пользователь поделился номеромfile_uploaded- загрузка файлаdialog_completed- завершение диалога
7. 🛠️ bot_utils.js - Утилиты и хелперы
Вспомогательные функции для обработки различных аспектов бота.
Основные функции:
// Отправка результатов диалога
async function send_dialog_results(ctx, dialog, placeholder_message_id) {
// Обработка ответа ИИ
// Форматирование сообщений
// Отправка с кнопками
// Завершение сессии
}
// Выполнение callback-запросов
async function execute_callback(ctx, callback_rec_id, bot_token, callback_query_id) {
// Получение обработчика
// Выполнение действия
// Подтверждение callback
}Дополнительные возможности:
- Обработка post-сообщений - отложенные сообщения
- Работа с файлами - интеграция с file-manager
- Централизованное логирование - обработка ошибок
- Реферальная система - обработка приглашений
8. 🎯 onboarding.js - Онбординг пользователей
Система приветствия и обучения новых пользователей.
Компоненты:
// Отправка приветственного сообщения
async function sendOnboardingMessage(ctx) {
// Персонализированное приветствие
// Обучающие материалы
// Настройка предпочтений
}Ресурсы:
- Справочные материалы - ссылки на документацию
- Примеры использования - практические кейсы
- Поддержка пользователей - контакты для помощи
- Правовая информация - условия использования
🎯 Использование как шаблон для создания ботов
Быстрое создание бота на основе шаблона
1. Настройка под свой проект
// ✅ Используйте единый домен для всех основных модулей:
const bot_domain = 'YOUR-BOT-NAME'; // Замените на имя вашего бота
// ⚠️ ВАЖНО: Специализированные домены (если нужны):
const bot_domain = 'YOUR-BOT-NAME-NEWS-BUS'; // Только для news-bus.js
// В package.json обновите:
{
"name": "@yourname/your-bot-name",
"description": "Описание вашего бота"
}🔧 Стандарт домена: Все основные модули должны использовать одинаковый
bot_domain. Специализированные домены используйте только для изоляции данных (как в news-bus.js).
2. Кастомизация диалога (dialog.js)
function buildDialog(user_uuid) {
let dialog = new Dialog({
alias: 'Ваш Ассистент', // Имя вашего бота
dialog_code: bot_domain,
start_system_msg: `Вы - полезный ассистент...` // Ваша роль
});
// Настройки резюмирования под вашу задачу
dialog.summary_config.threshold = 30; // Больше для длинных диалогов
dialog.summary_config.limit = 20;
return dialog;
}3. Настройка команд (index.js)
// Измените приветственное сообщение
bot.start(async ctx => {
// Ваша логика приветствия
await ctx.reply("Добро пожаловать в [Название бота]!");
});
// Добавьте свои команды
bot.command('your_command', async ctx => {
// Ваша логика
});4. Адаптация системы уведомлений
// В timer-handlers.js настройте сообщения:
async function sendStatusRequest(user) {
const message = await dialog
.invoke_with_instruction(`Ваша инструкция для бота`);
// ...
}Готовые компоненты для переиспользования
✅ Что готово к использованию:
Полная система управления пользователями
- Регистрация и аутентификация
- Персональные настройки
- История активности
ИИ-диалоги из коробки
- Интеграция с различными LLM
- Автоматическое резюмирование
- Структурированный вывод через Zod
Система уведомлений
- Проактивные сообщения
- Настраиваемые интервалы
- Логика повторных попыток
Файловый менеджер
- Загрузка документов
- Классификация типов
- Управление через callback
Система событий
- Observer pattern
- Расширяемая архитектура
- Асинхронная обработка
🔧 Что нужно настроить:
- Роль и личность бота -
dialog.js - Команды и обработчики -
index.js - Тексты уведомлений -
timer-handlers.js - Онбординг пользователей -
onboarding.js - Единый bot_domain - во всех основных модулях (критически важно!)
- Правила логирования - замените logger.send на console.log с JSON.stringify
Примеры применения шаблона
📋 Task Management Bot
// Роль: Ассистент по управлению задачами
start_system_msg: `Вы - персональный ассистент по управлению задачами.
Помогаете планировать дела, отслеживать прогресс, напоминать о дедлайнах.`
// Уведомления: ежедневные напоминания о задачах🏃 Fitness Coaching Bot
// Роль: Фитнес-тренер
start_system_msg: `Вы - персональный фитнес-тренер.
Создаете программы тренировок, следите за прогрессом, мотивируете.`
// Уведомления: напоминания о тренировках📚 Learning Assistant Bot
// Роль: Обучающий ассистент
start_system_msg: `Вы - персональный преподаватель.
Помогаете изучать материал, проверяете знания, даете советы по обучению.`
// Файлы: обработка учебных материаловШаблоны для различных индустрий
🏥 Healthcare Assistant
- Напоминания о приеме лекарств
- Отслеживание симптомов
- Ведение медицинского дневника
💼 Business Consultant
- Ежедневные check-in с командой
- Отслеживание KPI
- Анализ бизнес-процессов
🎨 Creative Assistant
- Генерация идей
- Отслеживание креативных проектов
- Inspiration reminders
📊 Мониторинг и аналитика
Встроенные метрики
Пользовательская активность:
// В user-list.js отслеживается:
- last_activity: timestamp последней активности
- missed_notifications: пропущенные уведомления
- settings: персональные настройкиКачество диалогов:
// В dialog.js логируется:
- Длина диалогов
- Частота резюмирования
- Использование structured outputКастомные метрики
// Добавьте в observers.js:
observers.on('dialog_completed', async (ctx, dialog_result) => {
// Ваша аналитика
await analytics.track('dialog_completed', {
user_id: ctx.from.id,
dialog_length: dialog_result.messages.length,
satisfaction: dialog_result.rating
});
});🔒 Безопасность и приватность
Рекомендации по безопасности:
- Переменные окружения
# Никогда не коммитьте в git:
KAK_DELA_BOT_TOKEN=your_secret_token
OPENAI_API_KEY=your_secret_key- Валидация данных
// Всегда валидируйте пользовательский ввод
const userInput = ctx.message.text;
if (!userInput || userInput.length > 1000) {
return await ctx.reply("Некорректный ввод");
}- Ограничение доступа
// Добавьте проверки доступа:
if (!await userList.hasUser(user_uuid)) {
return await ctx.reply("Доступ запрещен");
}Соответствие GDPR:
- Данные хранятся с согласия пользователя
- Команда
/clear_sessionsдля удаления данных - Логирование доступа к личным данным
📚 Дополнительная документация
Важные файлы для изучения:
- DEVELOPMENT_LOG.md - история разработки и исправления
- test-bot-simulation.js - полный пример использования системы симуляции
- package.json - список всех зависимостей
Полезные ссылки:
- Telegraf Documentation - документация по фреймворку
- @dialogai packages - ИИ-диалоги
- Zod Documentation - валидация схем
- LangChain JS - инструменты для ИИ
🤝 Вклад в проект
Если вы используете этот шаблон и создаете улучшения:
- Fork репозитория
- Создайте feature branch
- Добавьте тесты для новой функциональности
- Обновите документацию
- Создайте Pull Request
Области для улучшений:
- 🔄 Система миграций для баз данных
- 📈 Расширенная аналитика и метрики
- 🌐 Мультиязычная поддержка
- 🔌 Дополнительные интеграции (календари, CRM)
- 🎨 UI для администрирования
🏷️ Лицензия
ISC License - см. package.json для деталей.
Автор: Eugene Ditkovsky
Версия: 1.0.6
Поддержка: @netto_chat_support
💡 Совет: Начните с изучения
test-bot-simulation.jsдля понимания всех возможностей системы, затем адаптируйтеindex.jsпод свои потребности.
6. 🏭 Producer - Управление симуляцией
Создание и настройка всей экосистемы.
Функции:
- Создание стартовых аватаров
- Генерация случайных связей между пользователями
- Очистка сессий диалогов
- Расширение сети (добавление новых пользователей)
⚙️ Конфигурация
Типичные настройки:
// Количество дней симуляции
const MAX_DAYS = 5;
// Количество аватаров
const MAX_AVATARS = 5;
// Вероятность активности
avatar.activity_probability = 0.8;
// Максимум итераций диалога
const MAX_ITERATIONS = 5;Настройка личностей:
const personalityData = {
name: "Анна Смирнова",
age: 28,
occupation: "графический дизайнер",
personality_traits: ["творческая", "эмоциональная"],
current_life_context: {
mood: "вдохновленная",
recent_events: "получила повышение",
daily_routine: "работает удаленно"
},
communication_style: "открытая и эмоциональная",
interests: ["искусство", "мода", "путешествия"]
};🎮 Использование
Базовый запуск:
// Запуск стандартной симуляции
Producer.start();Кастомизация:
// Создание собственного аватара
const customAvatar = new Avatar(personalityData, "custom-uuid");
Avatar.reg_avatar(customAvatar);
// Добавление подписок
customAvatar.add_subscription(new Subscription({
target_uuid: "friend-uuid",
attention_rate: 0.9,
preferred_topics: ["работа", "технологии"]
}));
// Запуск на определенное количество дней
Scheduler.invoke(10);Анализ результатов:
// Получение отчета по аватару
const report = Reporter.getAvatarReport("avatar-uuid");
// Статистика по дню
const dayStats = Reporter.getDayStats(1);
// Генерация PDF
const pdfResult = await Reporter.generatePDFReport();
console.log("PDF URL:", pdfResult.downloadURI);🔧 Отладка и мониторинг
Логирование:
Система использует многоуровневое логирование:
// Консольные сообщения с цветовой кодировкой
console.log('%cБот:', 'color: yellow;', message);
console.log('%cПользователь:', 'color: green;', message);
// Структурированные отчеты
Reporter.reportDialogResult(uuid, name, result);
Reporter.reportFriendsUpdates(uuid, name, updates);Типичные проблемы:
- Однообразные приветствия - проверьте
generateGreetingInstruction() - Фантазии о друзьях - убедитесь в работе системных ограничений
- Пустые диалоги - проверьте настройки личностей
- Ошибки API - проверьте ключи в
.env
📋 API внешних сервисов
PDF генерация:
const endpoint = 'https://functions.yandexcloud.net/d4euaadkp8baaol6u7gc';
const template = "https://storage.yandexcloud.net/grantbase/report-template.docx";ИИ-модели:
- Claude 3.5 Sonnet для бота и анализа
- @dialogai/dialog-class для управления диалогами
- @dialogai/user-controller для пользователей
🚨 Критически важные моменты
⚠️ НЕ ИЗМЕНЯЙТЕ без понимания:
1. Массив приветствий в generateGreetingInstruction()
// КРИТИЧЕСКИ ВАЖНО: Каждая фраза тщательно подобрана для естественности
// НЕ заменять на общие инструкции типа "Поздоровайся и спроси как дела"
const greetingStyles = [
"Поздоровайся фразой: 'Здравствуй! Давно не общались, интересно, что у тебя происходит...'",
"Скажи: 'Привет! Хотелось бы услышать, что нового в твоих делах'",
"Начни так: 'Добрый день! Интересно узнать, над чем ты сейчас работаешь'",
"Поприветствуй словами: 'Здравствуй! Расскажи, чем живешь в последнее время'",
"Скажи: 'Привет! Поделись новостями, это всегда интересно узнать'"
];2. Системное правило против фантазий
// Это правило предотвращает критическую ошибку - фантазии о друзьях
ВАЖНО: НЕ упоминай никаких друзей или знакомых пользователя. НЕ говори о том, что у тебя есть новости о ком-то. Сосредоточься ТОЛЬКО на самом пользователе.3. Строгие проверки в extractFriendNews
// Защита от пустых диалогов и фантазий
if (!dialogText || dialogText.trim().length < 20) {
return null;
}
// Строгая инструкция для ИИ
const instruction = `
СТРОГО анализируй ТОЛЬКО представленный диалог. НЕ додумывай и НЕ фантазируй.
СТРОГИЕ ПРАВИЛА:
- Используй ТОЛЬКО информацию из диалога
- НЕ додумывай детали
- НЕ интерпретируй то, что не сказано прямо
`;4. Структуру Reporter'а - используется для внешней генерации PDF
🛡️ Критические исправления в коде
Проблема: Бот всегда говорил одинаковые приветствия ("Привет! Как дела на работе?")
Решение: Замена общих инструкций на конкретные фразы в generateGreetingInstruction()
Проблема: Бот придумывал несуществующих друзей и их новости Решение: Многоуровневая защита:
- Запрет в системном сообщении
- Строгие проверки в
extractFriendNews - Валидация длины диалогов
- Четкие инструкции против фантазий
🔒 Безопасность:
- Все ключи API должны быть в
.env - Ограничения на количество запросов к ИИ
- Валидация всех входных данных
- Логирование для аудита
📈 Метрики качества
Ключевые индикаторы:
- Вариативность приветствий > 80%
- Отсутствие фантазийных новостей = 100%
- Естественность диалогов (субъективная оценка)
- Покрытие тестами основных сценариев
Мониторинг:
// Проверка разнообразия приветствий
const uniqueGreetings = new Set(dialogLogs.map(d => d.firstMessage));
const variety = uniqueGreetings.size / dialogLogs.length;
// Проверка фантазий
const hasFantasyNews = newsLogs.some(n => !n.basedOnRealDialog);🚀 Развитие
Текущие возможности:
- ✅ Эмуляция 10 различных личностей
- ✅ 5 стилей приветствий
- ✅ Анализ 3 типов вопросов
- ✅ PDF отчеты
- ✅ Шина событий
- ✅ Система подписок
Планы развития:
- 🔄 Больше разнообразия в диалогах
- 🔄 Адаптация под конкретных пользователей
- 🔄 Сезонные вариации поведения
- 🔄 Машинное обучение на основе истории
- 🔄 Интеграция с реальными социальными сетями
📚 Дополнительные материалы
DEVELOPMENT_LOG.md- детальный лог всех измененийtest-bot-simulation.js- основной код системыobservers.js- система наблюдателей (если используется)
🤝 Участие в разработке
При внесении изменений:
- Изучите
DEVELOPMENT_LOG.mdдля понимания контекста - Протестируйте на нескольких днях симуляции
- Проверьте отсутствие регрессий в качестве диалогов
- Обновите документацию при необходимости
📄 Лицензия
Уточните лицензию в зависимости от требований проекта.
Контакты: Для вопросов по разработке обращайтесь к команде ИИ-ассистентов.
Последнее обновление: 2024-01-20 - Унификация bot_domain и стандартизация логирования Ключевые изменения: Исправлены несоответствия доменов между модулями, стандартизировано использование логгера