Come Stage Whisper risolve il problema dei 'PNG onniscienti': Architettura di Isolamento del Contesto
I PNG che potevano citare qualcosa che il mio personaggio aveva detto tre sessioni prima erano piuttosto belli da vedere. Il sistema di memoria funzionava. I PNG facevano riferimento a eventi passati, citavano cose che avevo detto. MA ha anche creato un problema diverso: i PNG sono diventati onniscienti.
Ecco un estratto da una sessione recente, la parte rilevante è evidenziata:
"Allora", dice, la sua voce che si diffonde facilmente sul fruscio delle foglie, "qual è la vera ragione per cui mi hai cercato? Curiosità, o stai solo cercando di evitare di disfare il resto di quella tua caotica scrivania?"
Quello faceva riferimento a qualcosa che era successo in una scena completamente diversa a cui questo personaggio non aveva partecipato. Il personaggio non avrebbe dovuto avere modo di saperlo.
Piccole incoerenze come questa rompono l'immersione. Ma in altri casi, possono rompere il gioco. Per esempio, ho una campagna in cui il mio personaggio è un vampiro segreto che naviga in un mondo di umani ignari. I PNG hanno iniziato a lasciar intendere casualmente di conoscere il mio segreto, il che all'improvviso ha reso molto difficile per me passare la giornata senza essere sospettato. O in altri esempi, se ho rubato un artefatto durante un colpo, il giocatore era colui che aveva rubato l'artefatto durante un colpo, e poi un personaggio non correlato fa commenti sospetti.
L'IA fondamentalmente decideva di usare tutti i segreti disponibili nel contesto per effetto drammatico, cosa che dovrebbe accadere realmente solo molto occasionalmente per ragioni di trama.
Quindi perché non posso semplicemente dire all'IA di non farlo?
Il problema è che stai cercando di ottenere un negativo. "Non usare queste informazioni." È un compito fondamentalmente diverso e molto più difficile del caso positivo: usa le informazioni che ci sono. Per addestrare un modello a ignorare il contesto rilevante, avresti bisogno di migliaia di esempi di situazioni in cui l'informazione era chiaramente disponibile ma l'output deliberatamente non la usava. È quasi l'antitesi di ciò che un'IA è progettata per fare. Per la maggior parte dei compiti, ignorare il contesto utile significherebbe fallire il lavoro.
È concepibile che un modello possa essere addestrato con più esempi di non agire sui segreti. Ma la narrativa e il gioco di ruolo non sono stati un grande focus per i creatori di modelli finora, quindi questo problema non ha ricevuto l'attenzione che merita.
Ho capito che dovevo risolvere questo problema in quella campagna del vampiro segreto. La campagna era impostata in modo che il mio personaggio potesse passare per un umano normale la maggior parte del tempo, e il punto centrale era navigare quella tensione senza essere scoperto. Sarebbe stato un grande momento narrativo quando un PNG avesse scoperto il segreto, perché poi avrebbe dovuto essere persuaso a mantenere il silenzio.
Ciò che ho scoperto è che praticamente ogni potenziale antagonista in qualche modo lo sapeva. Anche se non avevo rivelato nulla. E questo rompeva immediatamente la trama. Sembrava come se ci fosse un grande cartello sopra la mia testa che annunciava che ero un vampiro. Il mio personaggio faceva costantemente gestione dei danni, o sentiva che ogni personaggio aveva una leva sul mio.
Ho sperimentato con i prompt per molto tempo. Alla fine ho capito che avrei dovuto semplicemente non includere le informazioni nel contesto.
La soluzione, quindi, è l'isolamento del contesto. Se l'IA non può fare a meno di usare tutto ciò che vede, allora l'informazione deve davvero non esserci. Questo è realizzabile in Stage Whisper perché ogni scena e ricordo è già etichettato con i PNG che vi compaiono, quindi possiamo facilmente filtrare per includere solo i personaggi che erano effettivamente presenti.
Ma ecco il problema. Alcuni segreti sono motori principali della trama. Non puoi semplicemente eliminarli del tutto, perché la storia deve ancora tenerne conto. Che si tratti di un colpo o di un vampiro segreto, quei segreti sono centrali per la narrazione, e non sarebbe la stessa storia senza di loro.
Quindi abbiamo dovuto dividere la nostra generazione di testo in due.
La prima parte la chiamo Story Director. Dirige la storia complessiva: la trama, i colpi narrativi. Ha tutti i segreti e può decidere come meglio sviluppare la storia dati quei segreti. Comprende il quadro completo, incluse le cose che nessun personaggio dovrebbe ancora sapere.
La seconda parte la chiamo Scene Director. "Recita" la scena che gli viene consegnata dallo Story Director. Ha accesso a tutti i ricordi e le personalità dei PNG rilevanti, quindi ha abbastanza informazioni per interpretare tutti i PNG e fornire una narrazione interstiziale, ma genuinamente non conosce i segreti.
Alcune informazioni devono passare dall'uno all'altro, così che possano lavorare sulla stessa storia senza lavorare l'uno contro l'altro.
Lo Story Director produce una sinossi che dice allo Scene Director tutto ciò che deve sapere. Assomiglia a qualcosa del genere:
<synopsis>
Elian torna alla Stanza 314 con Maeve, i familiari sigilli di protezione offrono una breve tregua dall'attenzione raccolta durante la loro spettacolare esibizione. Sentendo il bisogno di Maeve di studiare dopo una giornata insolita, Elian decide di lasciare la loro stanza per un po' di esplorazione solitaria
<npc_list>maeve-corwin</npc_list>
<location>stanza-314</location>
<new_scene/>
</synopsis>
Questo dice allo Scene Director cosa sta succedendo nella scena, dove si trova, chi c'è e se è una nuova scena. La presenza del personaggio giocante è data per scontata. Lo Story Director può anche emettere opzionalmente dialoghi fuori personaggio verso il giocatore e prendere note di performance dettagliate per un suo uso futuro.
I due director non vedono lo stesso contesto. Ecco la divisione:
Lo Story Director vede:
- file completi della campagna, incluse note del GM, piano della sessione, configurazione della campagna e stato attuale della campagna
- la scheda completa del personaggio giocante, inclusi tutti i segreti
- un elenco di tutti i PNG, luoghi e lore
- riepiloghi e sommari delle sessioni
- la cronologia completa delle due scene più recenti
Questo è tutto ciò di cui lo Story Director ha bisogno per prendere decisioni di trama interessanti e coerenti. Sono molti dati, ma la cache KV mantiene i costi gestibili.
Lo Scene Director vede:
- file parziali della campagna senza le note del GM
- la versione pubblica della scheda del personaggio giocante, che omette qualsiasi segreto ma include ancora aspetto fisico e reputazione pubblica, le cose che un tipico PNG conoscerebbe ragionevolmente
- riepiloghi delle ultime scene in cui i PNG erano effettivamente presenti
- dettagli dei luoghi
- gli ultimi ricordi che ogni PNG potrebbe avere
- la sinossi dello Story Director
Questa è una visione deliberatamente ridotta. Lo Scene Director ha tutto ciò di cui ha bisogno per gestire la scena, e niente che non dovrebbe avere.
Due schede personaggio
La distinzione tra scheda personaggio pubblica e completa è fondamentale. Lo Story Director ha bisogno di conoscere i dettagli completi e tutti i segreti per produrre la storia. Ma lo Scene Director non dovrebbe conoscere quei dettagli. Ha comunque bisogno di sapere chi è fisicamente il personaggio giocante, che aspetto ha, la sua reputazione pubblica, le cose che qualsiasi PNG coglierebbe ragionevolmente solo standogli intorno. Mantenere una scheda pubblica separata significa che lo Scene Director ha sempre quel contesto senza mai aver bisogno di accedere ai segreti.
Filtrare i ricordi per scena
Ogni scena è etichettata con quali PNG sono presenti. Questo significa che sappiamo esattamente quali scene recenti sono rilevanti per ogni PNG, e le aggiungiamo al contesto dello Scene Director. L'assunto è che le scene all'interno della sessione corrente siano altamente rilevanti. Per i ricordi più vecchi, la ricerca semantica fa emergere quelli che potrebbero contare.
Il risultato è uno Scene Director che genuinamente non può sapere cose che i personaggi nella scena non sanno. Non perché gli è stato detto di non farlo, ma perché quell'informazione fisicamente non c'è.
Ho gestito una campagna in cui il mio personaggio è una donna umana che deve vestirsi da uomo per assicurare il titolo nobiliare minore della sua famiglia, a causa delle leggi di successione. È una campagna comica leggera, e presenta alcuni scenari comici che nascono da quella confusione di genere.
Senza questo sistema in funzione, generalmente non c'è modo di sorprendere i PNG. Si comportano tutti come se sospettassero qualcosa. Forse non direttamente, ma il modo in cui ti parlano ha sempre questo accenno di sapere. È difficile da descrivere, ma lo senti. La tensione drammatica di un'identità segreta semplicemente non c'è.
Ma con questo sistema in funzione, i PNG la interpretano in modo completamente naturale. Non ne hanno idea. E le scene in cui la grande rivelazione avviene colpiscono davvero, perché fino a quel momento non c'è assolutamente alcuna allusione. La commedia funziona perché il pubblico, i PNG, genuinamente non se lo aspettano.
C'è un caso limite. Poiché lo Scene Director non conosce il segreto esatto, occasionalmente fa dettagli anatomicamente scorretti. Questo è difficile da evitare, dato che lo Scene Director lavora da una scheda personaggio pubblica che non include quei dettagli. La soluzione alternativa sarebbe aggiungere un terzo passaggio: lo Story Director rivede la scena generata prima che venga inviata, per catturare discrepanze come questa. Questo aggiunge costo e latenza, quindi è sulla roadmap ma non ancora implementato.
Una cosa che mi ha sorpreso: quando un segreto viene rivelato nel gioco, si propaga naturalmente. Lo Scene Director conserva le scene generate in precedenza, quindi una volta che un PNG apprende qualcosa in una scena, questo diventa parte del suo contesto per il turno successivo. Alla fine delle scene, quelle scene formano ricordi per il PNG. Alla fine delle sessioni, le schede PNG vengono aggiornate. Entrambi questi meccanismi significano che la conoscenza individuale di un segreto da parte di un PNG viene registrata, e la storia può continuare con quel PNG ora genuinamente al corrente.
Il compromesso
Questo approccio non è gratuito. Il costo aumenta, anche se non proprio il doppio, poiché il contesto dello Scene Director è relativamente leggero. Anche la cache dei prompt aiuta significativamente. Man mano che la scena si svolge, nuovi turni vengono aggiunti alla fine del contesto, il che significa che il 90% del prompt può provenire dalla cache invece di essere rigenerato ogni volta.
Attualmente è abilitato per tutte le campagne. I cambiamenti architetturali sono abbastanza significativi che non ha senso fornire un percorso che aggiri questa configurazione. Per la maggior parte delle campagne il compromesso ne vale la pena, anche se la tua storia non ha grandi segreti, perché la coerenza dei PNG conta comunque.
Cosa sblocca questo: il Game Director
La pipeline a due fasi dimostra qualcosa di utile: dividere i compiti tra IA più specializzate con contesti ottimizzati dà risultati migliori di un'IA che fa tutto. Questo sta portando a un naturale terzo stadio.
Lo chiamo Game Director. Il suo compito è gestire le meccaniche GDR: tiri di dado, prove di abilità, tracciamento degli stati. Il suo contesto può essere ottimizzato in modo diverso dagli altri, poiché si preoccupa meno della storia narrativa e più delle regole e dello stato del gioco.
Aggiungere un Game Director ha un beneficio inaspettato. Poiché viene eseguito a ogni turno nel caso in cui il giocatore provi qualcosa che richiede una prova di abilità, può anche decidere se l'input del giocatore è una continuazione dell'ultima scena o qualcosa di nuovo. Se il giocatore sta solo chattando con un PNG senza far avanzare la trama, il Game Director può saltare completamente lo Story Director e lasciare che lo Scene Director continui la scena da solo. Lo Scene Director ha le schede PNG e può fare ricerche di memoria, quindi può portare avanti il dialogo in questo modo senza il sovraccarico di una chiamata completa allo Story Director.
Questa è la direzione in cui sta andando l'architettura: una pipeline a tre fasi che diventa progressivamente più specializzata, con ottimizzazioni per il risparmio dei costi integrate a ogni livello.
Stage Whisper è costruito per persone che vogliono giocare GDR in solitaria con la profondità e la coerenza di una campagna di lunga durata. Il sistema di memoria, inclusa questa architettura di isolamento del contesto, è ciò che lo rende possibile. Inizia o unisciti al nostro Discord per vedere come funziona nella pratica.
Per saperne di più sul sistema di memoria di Stage Whisper, vedi Parte 1: Coerenza Narrativa e Parte 3: I Sogni dei PNG.