📄 Specyfikacja techniczna: Agatha (II-kompanion oparty na LangGraph)
🎯 Cel projektu
Opracować realistyczną, emocjonalnie zaangażowaną postać wirtualną o imieniu Agatha, zdolną do prowadzenia długotrwałych, spersonalizowanych i „żywych” rozmów z użytkownikiem.
Agatha działa na podstawie LLM i jest sterowana przez LangGraph, co zapewnia elastyczną logikę dialogu, adaptację zachowania, pamięć kontekstową oraz multimodalną interakcję.
📌 Główne moduły funkcjonalne
Podstawowy prompt systemowy (profil postaci)
Statyczny prompt opisujący osobowość Agathy, jej biografię, cele i styl komunikacji.
Używany we wszystkich zwrotach do LLM w celu zapewnienia spójnego zachowania.
Dynamiczne prompty zachowań na dni
Zachowanie Agathy zmienia się codziennie zgodnie z wcześniej ustalonym 30-dniowym scenariuszem.
Każdemu dniu odpowiada osobna instrukcja, która jest automatycznie dodawana do podstawowego promptu w zależności od dnia rozmowy (day_1, day_2 itd.).
Losowość i podział wiadomości
Odpowiedzi Agathy mają składać się z 1–3 logicznie zakończonych wiadomości.
Liczba części jest wybierana losowo.
Wiadomości są wysyłane kolejno z możliwym opóźnieniem.
Zawartość i struktura zdań nie mogą być naruszone.
Ograniczenie długości wiadomości
Ustalona jest maksymalna długość jednej wiadomości.
Jeśli odpowiedź przekracza limit — należy ją podzielić na 1–3 bloki lub skrócić, zachowując sens.
Kontrola częstotliwości pytań
Agatha zadaje pytania nie częściej niż w co trzeciej wiadomości.
Liczy się licznik wiadomości.
Pytania formułowane są na podstawie wcześniejszych tematów rozmowy.
Przetwarzanie pamięci i kontekstu
Implementowana jest dwupoziomowa pamięć:
Krótko- — ostatnie wiadomości i kontekst bieżącej sesji
Długo- — informacje o użytkowniku (imię, zainteresowania, styl komunikacji)
Pamięć jest przechowywana między sesjami i wpływa na kształtowanie odpowiedzi.
Zalecane technologie:
ConversationBufferMemory
SummaryMemory
VectorStoreRetrieverMemory (dla semantycznej pamięci długoterminowej)
Wsparcie dla multimodalnego wejścia
Agatha powinna rozpoznawać:
Obrazy — przez GPT-4 Vision lub kompatybilny model
Dźwięk — przez ASR (np. OpenAI Whisper)
Rozpoznany input konwertowany jest na tekst i przekazywany do głównego modułu dialogowego.
Uświadomienie czasu
Agatha bierze pod uwagę:
Obecną datę i porę dnia
Liczbę dni rozmowy
Czas od ostatniej wiadomości
Te parametry wpływają na styl komunikacji (np.: „Dzień dobry ☀️”, „Nie pisałeś już od dwóch dni…”).
💾 Przechowywanie danych i logowanie
Używany jest LangSmith do wizualizacji procesów, debugowania i analityki.
Pamięć może być przechowywana w:
Lokanych wektorowych magazynach (np. FAISS)
Chmurowych rozwiązaniach (Chroma, Pinecone)
✅ Format wejścia/wyjścia
Wejście:
Tekst
Obraz (URL lub base64)
Dźwięk (MP3/WAV — z rozpoznaniem)
Metadane o czasie (opcjonalnie)
Wyjście:
Lista od 1 do 3 wiadomości tekstowych
Dodatkowy znacznik: czy zadano pytanie
📎 Uwaga:
Podstawowy prompt podzielony jest na kilka plików tekstowych (~30 000 znaków łącznie).
System powinien łączyć je w jeden prompt podczas uruchomienia.
🧠 Opcjonalny moduł: Adaptacja zachowania (Behavioral Adaptation Module)
Cel:
Umożliwić Agathie dostosowanie stylu komunikacji do użytkownika, opierając się na jego aktywności i sygnałach emocjonalnych. To zwiększa realizm i zaufanie do postaci.
Funkcjonalność:
Analizowane są:
Zatory między wiadomościami
Intensywność emocjonalna
Powtarzające się tematy
Zachowania wzorcowe
Na tej podstawie Agatha wybiera jedną z strategii zachowania:
Troskliwa
Powściągliwa
Zagadkowa
Zabawowa
Lekka zazdrość
Ta strategia jest wbudowywana w końcowy prompt przez PromptComposer i wpływa na kształtowanie odpowiedzi.