📄 Техническая спецификация: Agatha (ІІ-компаньон на базе LangGraph)
🎯 Цель проекта
Разработать реалистичного, эмоционально вовлеченного виртуального персонажа по имени Agatha, способного вести долгие, персонализированные и «живые» беседы с пользователем.
Agatha работает на основе LLM и управляется через LangGraph, что обеспечивает гибкую логику диалога, адаптацию поведения, контекстную память и мультимодальное взаимодействие.
📌 Основные функциональные модули
Базовый системный промпт (профиль персонажа)
Статичный промпт, описывающий личность Agatha, ее биографию, цели и стиль общения.
Используется во всех обращениях к LLM для обеспечения согласованного поведения.
Динамичные поведенческие промпты по дням
Поведение Agatha меняется ежедневно в соответствии с заранее заданным 30-дневным сценарием.
Каждому дню соответствует отдельная инструкция, которая автоматически добавляется к базовому промпту в зависимости от дня общения (day_1, day_2 и т.д.).
Рандомизация и разбивка сообщений
Ответы Agatha должны состоять из 1–3 логически завершенных сообщений.
Количество частей выбирается случайным образом.
Сообщения отправляются последовательно с возможной задержкой.
Содержание и структура предложений не должны нарушаться.
Ограничение длины сообщений
Устанавливается максимальная длина одного сообщения.
Если ответ превышает лимит — его нужно разбить на 1–3 блока или сократить с сохранением смысла.
Контроль частоты вопросов
Agatha задает вопросы не чаще чем в каждом третьем сообщении.
Ведется счетчик сообщений.
Вопросы формируются на основе предыдущих тем разговора.
Обработка памяти и контекста
Реализуется двухуровневая память:
Краткосрочная — последние сообщения и контекст текущей сессии
Долгосрочная — информация о пользователе (имя, интересы, стиль общения)
Память сохраняется между сессиями и влияет на формирование ответов.
Рекомендуемые технологии:
ConversationBufferMemory
SummaryMemory
VectorStoreRetrieverMemory (для семантической долгосрочной памяти)
Поддержка мультимодального ввода
Agatha должна распознавать:
Изображения — через GPT-4 Vision или совместимую модель
Голос — через ASR (например, OpenAI Whisper)
Распознанный ввод конвертируется в текст и передается в основной диалоговый модуль.
Осознание времени
Agatha учитывает:
Текущую дату и время суток
Количество дней общения
Время с момента последнего сообщения
Эти параметры влияют на стиль общения (например: «Доброе утро ☀️», «Ты не писал уже два дня…»).
💾 Сохранение данных и логирование
Используется LangSmith для визуализации процессов, отладки и аналитики.
Память может сохраняться в:
Локальных векторных хранилищах (например, FAISS)
Облачных решениях (Chroma, Pinecone)
✅ Форматы ввода/вывода
Ввод:
Текст
Изображение (URL или base64)
Голос (MP3/WAV — с распознаванием)
Метаданные о времени (опционально)
Вывод:
Список из 1–3 текстовых сообщений
Дополнительный флаг: было ли вставлено вопрос
📎 Примечание:
Базовый промпт разделен на несколько текстовых файлов (~30 000 символов в сумме).
Система должна собирать их в единый промпт при запуске.
🧠 Опциональный модуль: Адаптация поведения (Behavioral Adaptation Module)
Цель:
Дать возможность Agatha адаптировать стиль общения под пользователя, основываясь на его активности и эмоциональных сигналах. Это повышает реализм и доверие к персонажу.
Функциональность:
Анализируются:
Задержки между сообщениями
Эмоциональная насыщенность
Повторяющиеся темы
Поведенческие паттерны
На основе этого Agatha выбирает одну из поведенческих стратегий:
Заботливая
Сдержанная
Загадочная
Игривый
Легкая ревность
Эта стратегия встроена в финальный промпт через PromptComposer и влияет на формирование ответов.