Jak Stage Whisper rozwiązuje problem 'wszechwiedzących NPC': Architektura izolacji kontekstu
NPC, którzy potrafią zacytować coś, co moja postać powiedziała trzy sesje temu, było całkiem fajne do zobaczenia. System pamięci działał. NPC odwoływali się do przeszłych wydarzeń, cytowali rzeczy, które powiedziałem. ALE to również zapoczątkowało inny problem: NPC zaczęli stawać się wszechwiedzący.
Oto fragment z niedawnej sesji, istotna część jest podkreślona:
"Więc, mówi, jej głos niesie się swobodnie ponad szelestem liści, jaki jest prawdziwy powód, dla którego mnie szukałeś? Ciekawość, czy po prostu próbujesz uniknąć rozpakowania reszty tego chaotycznego biurka?"
To odnosiło się do czegoś, co wydarzyło się w zupełnie innej scenie, w której ta postać nie brała udziału. Postać nie powinna mieć możliwości, by o tym wiedzieć.
Małe niespójności jak ta łamią immersję. Ale w innych przypadkach może to zepsuć grę. Na przykład mam kampanię, w której moja postać jest tajnym wampirem nawigującym w świecie niczego niepodejrzewających ludzi. NPC zaczęli swobodnie sugerować, że znają mój sekret, co nagle sprawiło, że bardzo trudno było mi przetrwać dzień bez bycia podejrzanym. Albo w innych przykładach, jeśli ukradłem artefakt podczas skoku, gracz był tym, który ukradł artefakt podczas skoku, a potem niezwiązana postać robi podejrzane uwagi.
AI w zasadzie decydowało się używać wszystkich sekretów dostępnych w kontekście dla dramatycznego efektu, co powinno zdarzać się tylko bardzo okazjonalnie z powodów fabularnych.
Więc dlaczego nie mogę po prostu powiedzieć AI, żeby tego nie robiło?
Problem polega na tym, że próbujesz osiągnąć negację. "Nie używaj tej informacji." To fundamentalnie inne i znacznie trudniejsze zadanie niż przypadek pozytywny: użyj informacji, która tam jest. Aby wytrenować model do ignorowania istotnego kontekstu, potrzebowałbyś tysięcy przykładów sytuacji, w których informacja była wyraźnie dostępna, ale wynik celowo jej nie używał. To prawie antyteza tego, do czego AI jest zaprojektowane. Dla większości zadań ignorowanie użytecznego kontekstu byłoby porażką.
Można sobie wyobrazić, że model mógłby być trenowany z większą liczbą przykładów niedziałania na podstawie sekretów. Ale narracja i odgrywanie ról nie były dotąd dużym obszarem zainteresowania twórców modeli, więc ten problem nie otrzymał uwagi, na jaką zasługuje.
Zdałem sobie sprawę, że muszę to naprawić w tej kampanii z tajnym wampirem. Kampania była tak skonfigurowana, że moja postać mogła udawać zwykłego człowieka przez większość czasu, a cały sens polegał na nawigowaniu tym napięciem bez bycia złapanym. To byłby wielki moment narracyjny, gdy jakikolwiek NPC odkrył sekret, ponieważ wtedy musieliby być przekonani do milczenia na ten temat.
Odkryłem, że praktycznie każdy potencjalny antagonista jakoś wiedział. Mimo że niczego nie ujawniłem. I to natychmiast psuło fabułę. Czułem się, jakby nade mną wisiał wielki znak ogłaszający, że jestem wampirem. Moja postać ciągle zajmowała się kontrolą szkód albo czuła, że każda postać ma na mnie haka.
Eksperymentowałem z promptami przez długi czas. W końcu zdałem sobie sprawę, że będę musiał po prostu nie umieszczać informacji w kontekście w ogóle.
Rozwiązaniem jest więc izolacja kontekstu. Jeśli AI nie może powstrzymać się od używania wszystkiego, co widzi, to informacja naprawdę musi jej nie być. Jest to osiągalne w Stage Whisper, ponieważ każda scena i wspomnienie są już otagowane NPC, którzy się w nich pojawiają, więc możemy łatwo filtrować, aby uwzględnić tylko postacie, które faktycznie tam były.
Ale jest pewien haczyk. Niektóre sekrety są głównymi motorami fabuły. Nie można ich po prostu całkowicie usunąć, ponieważ historia wciąż musi je uwzględniać. Czy to skok, czy tajny wampir, te sekrety są kluczowe dla narracji i nie byłaby to ta sama historia bez nich.
Więc musieliśmy podzielić nasze generowanie tekstu na dwie części.
Pierwszą część nazywam Reżyserem Historii. Kieruje on ogólną historią: fabułą, punktami narracyjnymi. Ma wszystkie sekrety i może decydować, jak najlepiej poprowadzić historię, biorąc pod uwagę te sekrety. Rozumie pełny obraz, w tym rzeczy, których żadna postać nie powinna jeszcze znać.
Drugą część nazywam Reżyserem Sceny. "Odgrywa" scenę przekazaną mu przez Reżysera Historii. Ma dostęp do wszystkich istotnych wspomnień NPC i osobowości, więc ma wystarczająco informacji, aby odegrać wszystkich NPC i zapewnić trochę narracji przejściowej, ale naprawdę nie zna sekretów.
Niektóre informacje muszą przechodzić od jednego do drugiego, aby mogli pracować nad tą samą historią bez działania przeciwko sobie.
Reżyser Historii tworzy streszczenie, które mówi Reżyserowi Sceny wszystko, co musi wiedzieć. Wygląda ono mniej więcej tak:
<synopsis>
Elian wraca do pokoju 314 z Maeve, znajome osłony prywatności oferują krótkie wytchnienie od uwagi zebranej podczas ich spektakularnego pokazu. Czując potrzebę Maeve do nauki po niezwykłym dniu, Elian postanawia opuścić ich pokój dla samotnej eksploracji
<npc_list>maeve-corwin</npc_list>
<location>room-314</location>
<new_scene/>
</synopsis>
To mówi Reżyserowi Sceny, co dzieje się w scenie, gdzie jest, kto w niej jest i czy to nowa scena. Obecność postaci gracza jest zakładana. Reżyser Historii może również opcjonalnie emitować rozmowę poza postacią do gracza i robić szczegółowe notatki dla własnego przyszłego użytku.
Obaj reżyserzy nie widzą tego samego kontekstu. Oto podział:
Reżyser Historii widzi:
- pełne pliki kampanii, w tym notatki MG, plan sesji, konfigurację kampanii i bieżący status kampanii
- pełną kartę postaci gracza, w tym wszystkie sekrety
- listę wszystkich NPC, lokacji i wiedzy
- podsumowania i streszczenia sesji
- pełną historię dwóch najnowszych scen
To wszystko, czego Reżyser Historii potrzebuje, aby podejmować interesujące, spójne decyzje fabularne. To dużo danych, ale cache KV utrzymuje koszty na rozsądnym poziomie.
Reżyser Sceny widzi:
- częściowe pliki kampanii bez notatek MG
- publiczną wersję karty postaci gracza, która pomija wszelkie sekrety, ale wciąż zawiera wygląd fizyczny i publiczną reputację, rzeczy, które typowy NPC rozsądnie by wiedział
- podsumowania ostatnich scen, w których NPC faktycznie byli
- szczegóły lokacji
- kilka ostatnich wspomnień, które każdy NPC może mieć
- streszczenie od Reżysera Historii
To celowo zredukowany widok. Reżyser Sceny ma wszystko, czego potrzebuje do prowadzenia sceny, i nic, czego nie powinien mieć.
Dwie karty postaci
Rozróżnienie między publiczną a pełną kartą postaci gracza jest kluczowe. Reżyser Historii musi znać pełne szczegóły i wszystkie sekrety, aby tworzyć historię. Ale Reżyser Sceny nie powinien znać tych szczegółów. Wciąż musi wiedzieć, kim fizycznie jest postać gracza, jak wygląda, jej publiczną reputację, rzeczy, które każdy NPC rozsądnie by zauważył po prostu będąc w jej pobliżu. Utrzymywanie oddzielnej publicznej karty oznacza, że Reżyser Sceny zawsze ma ten kontekst bez potrzeby dostępu do sekretów.
Filtrowanie wspomnień według sceny
Każda scena jest otagowana, którzy NPC są obecni. Oznacza to, że wiemy dokładnie, które niedawne sceny są istotne dla każdego NPC i dodajemy je do kontekstu Reżysera Sceny. Zakładamy, że sceny w ramach bieżącej sesji są wysoce istotne. Dla starszych wspomnień wyszukiwanie semantyczne znajduje te, które mogą mieć znaczenie.
Rezultatem jest Reżyser Sceny, który naprawdę nie może znać rzeczy, których postacie w scenie nie znają. Nie dlatego, że mu powiedziano, by nie wiedział, ale dlatego, że ta informacja fizycznie jej nie ma.
Prowadziłem kampanię, w której moja postać jest ludzką kobietą, która musi przebierać się za faceta, aby zabezpieczyć tytuł swojej rodziny jako niższej szlachty, z powodu praw dziedziczenia. To lekka komediowa kampania i zawiera kilka scenariuszy komediowych wynikających z tego zamieszania płciowego.
Bez tego systemu generalnie nie ma sposobu, by zaskoczyć NPC. Wszyscy zachowują się, jakby coś podejrzewali. Może nie bezpośrednio, ale sposób, w jaki do Ciebie mówią, zawsze ma tę nutę wiedzy. Trudno to opisać, ale można to wyczuć. Dramatyczne napięcie tajnej tożsamości po prostu nie istnieje.
Ale z tym systemem NPC grają całkowicie prosto. Nie mają pojęcia. A sceny, w których wielkie odkrycie następuje, naprawdę trafiają, ponieważ do tego momentu nie ma absolutnie żadnej aluzji do tego. Komedia działa, ponieważ publiczność, NPC, naprawdę tego nie widzą.
Jest jeden przypadek szczególny. Ponieważ Reżyser Sceny nie zna dokładnego sekretu, czasami tworzy anatomicznie niepoprawne szczegóły. Trudno tego uniknąć, ponieważ Reżyser Sceny pracuje z publicznej karty postaci, która nie zawiera tych szczegółów. Obejściem byłoby dodanie trzeciego kroku: Reżyser Historii przegląda wygenerowaną scenę przed jej wysłaniem, aby wyłapać wszelkie takie rozbieżności. To dodaje kosztów i opóźnienia, więc jest na mapie drogowej, ale jeszcze nie zaimplementowane.
Jedna rzecz, która mnie zaskoczyła: gdy sekret zostaje ujawniony w grze, rozprzestrzenia się naturalnie. Reżyser Sceny przechowuje wcześniej wygenerowane sceny, więc gdy NPC dowie się czegoś w scenie, staje się to częścią jego kontekstu na następną turę. Pod koniec scen te sceny tworzą wspomnienia dla NPC. Pod koniec sesji karty NPC są aktualizowane. Oba te elementy oznaczają, że wiedza indywidualnego NPC o sekrecie zostaje zapisana, a historia może toczyć się dalej z tym NPC teraz naprawdę świadomym.
Kompromis
To podejście nie jest darmowe. Koszt wzrasta, choć nie całkiem podwaja się, ponieważ kontekst Reżysera Sceny jest stosunkowo lekki. Cache promptów również znacząco pomaga. W miarę rozwoju sceny nowe tury są dodawane na końcu kontekstu, co oznacza, że 90% promptu może pochodzić z cache zamiast być regenerowane od nowa za każdym razem.
Obecnie jest to włączone dla wszystkich kampanii. Zmiany architektoniczne są na tyle znaczące, że nie ma sensu zapewniać ścieżki omijającej tę konfigurację. Dla większości kampanii kompromis jest tego wart, nawet jeśli Twoja historia nie ma wielkich sekretów, ponieważ spójność NPC ma znaczenie niezależnie od tego.
Co to odblokowuje: Reżyser Gry
Dwuetapowy potok demonstruje coś użytecznego: dzielenie zadań między bardziej wyspecjalizowane AI z zoptymalizowanymi kontekstami daje lepsze wyniki niż jedno AI robiące wszystko. To prowadzi do naturalnego trzeciego etapu.
Nazywam go Reżyserem Gry. Jego zadaniem jest obsługa mechaniki TTRPG: rzutów kośćmi, testów umiejętności, śledzenia statusu. Jego kontekst może być optymalizowany inaczej niż pozostałe, ponieważ mniej zależy mu na historii narracyjnej, a bardziej na zasadach gry i stanie gry.
Dodanie Reżysera Gry ma nieoczekiwaną korzyść. Ponieważ działa on w każdej turze na wypadek, gdyby gracz spróbował czegoś, co wymaga testu umiejętności, może również decydować, czy dane wejściowe gracza są kontynuacją ostatniej sceny, czy czymś nowym. Jeśli gracz po prostu rozmawia z NPC bez poruszania fabuły, Reżyser Gry może całkowicie pominąć Reżysera Historii i pozwolić Reżyserowi Sceny kontynuować scenę samodzielnie. Reżyser Sceny ma karty NPC i może wykonywać wyszukiwania wspomnień, więc może prowadzić dialog w ten sposób bez narzutu pełnego wywołania Reżysera Historii.
To jest kierunek, w którym zmierza architektura: trójetapowy potok, który staje się coraz bardziej wyspecjalizowany, z wbudowanymi optymalizacjami oszczędzania kosztów na każdej warstwie.
Stage Whisper jest zbudowane dla ludzi, którzy chcą grać w solo TTRPG z głębią i spójnością długotrwałej kampanii. System pamięci, w tym ta architektura izolacji kontekstu, jest tym, co to umożliwia. Zacznij grać lub dołącz do naszego Discorda, aby zobaczyć, jak to działa w praktyce.
Więcej o systemie pamięci Stage Whisper: Część 1: Spójność narracyjna i Część 3: Śnienie NPC.