📄 Технічна специфікація: 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 і впливає на формування відповідей.