Πώς το Stage Whisper λύνει το πρόβλημα των 'παντογνώστριων NPC': Αρχιτεκτονική απομόνωσης context
Οι NPC που μπορούν να αναφέρουν κάτι που είπε ο χαρακτήρας μου τρεις συνεδρίες πριν ήταν αρκετά εντυπωσιακό να το βλέπεις. Το σύστημα μνήμης λειτουργούσε. Οι NPC αναφέρονταν σε προηγούμενα γεγονότα, ανέφεραν πράγματα που είπα. ΑΛΛΑ, ξεκίνησε επίσης ένα διαφορετικό πρόβλημα: οι NPC άρχισαν να γίνονται παντογνώστες.
Να ένα απόσπασμα από μια πρόσφατη συνεδρία, το σχετικό μέρος είναι επισημασμένο:
«Λοιπόν», λέει, η φωνή της να μεταφέρεται εύκολα πάνω από το θρόισμα των φύλλων, «ποιος είναι ο πραγματικός λόγος που ήρθες να με ψάξεις; Περιέργεια ή απλά προσπαθείς να αποφύγεις να ξεπακετάρεις το υπόλοιπο αυτού του χαοτικού γραφείου σου;»
Αυτό αναφερόταν σε κάτι που συνέβη σε μια εντελώς διαφορετική σκηνή στην οποία αυτός ο χαρακτήρας δεν ήταν μέρος. Ο χαρακτήρας δεν θα έπρεπε να έχει κανέναν τρόπο να το ξέρει.
Μικρές ασυνέπειες σαν αυτή σπάνε την εμβύθιση. Αλλά σε άλλες περιπτώσεις, μπορεί να είναι game-breaking. Για παράδειγμα, έχω μια εκστρατεία όπου ο χαρακτήρας μου είναι ένας μυστικός βρικόλακας που πλοηγεί έναν κόσμο ανυποψίαστων ανθρώπων. Οι NPC άρχισαν να υπονοούν περιστασιακά ότι ήξεραν το μυστικό μου, πράγμα που ξαφνικά έκανε πολύ δύσκολο να περάσω τη μέρα χωρίς να είμαι ύποπτος. Ή σε άλλα παραδείγματα, αν έκλεψα ένα τεχνούργημα κατά τη διάρκεια μιας ληστείας, ο παίκτης ήταν αυτός που έκλεψε το τεχνούργημα κατά τη διάρκεια μιας ληστείας και μετά ένας άσχετος χαρακτήρας κάνει ύποπτα σχόλια.
Το AI βασικά αποφάσισε να χρησιμοποιήσει όλα τα διαθέσιμα μυστικά στο context για δραματικό αποτέλεσμα, πράγμα που θα έπρεπε πραγματικά να συμβαίνει μόνο πολύ περιστασιακά για λόγους πλοκής.
Γιατί λοιπόν δεν μπορώ απλά να πω στο AI να μην το κάνει αυτό;
Το πρόβλημα είναι ότι προσπαθείς να πετύχεις ένα αρνητικό. «Μη χρησιμοποιείς αυτές τις πληροφορίες.» Αυτό είναι ένα θεμελιωδώς διαφορετικό και πολύ πιο δύσκολο έργο από τη θετική περίπτωση: χρησιμοποίησε τις πληροφορίες που υπάρχουν. Για να εκπαιδεύσεις ένα μοντέλο να αγνοεί σχετικό context, θα χρειαζόσουν χιλιάδες παραδείγματα καταστάσεων όπου οι πληροφορίες ήταν σαφώς διαθέσιμες, αλλά το output σκόπιμα δεν τις χρησιμοποίησε. Αυτό είναι σχεδόν η αντίθεση αυτού που έχει σχεδιαστεί να κάνει ένα AI. Για τις περισσότερες εργασίες, το να αγνοεί χρήσιμο context θα ήταν αποτυχία στη δουλειά.
Θεωρητικά, ένα μοντέλο θα μπορούσε να εκπαιδευτεί με περισσότερα παραδείγματα του να μην ενεργεί βάσει μυστικών. Αλλά η αφήγηση και το roleplay δεν ήταν μεγάλη εστίαση για τους δημιουργούς μοντέλων μέχρι στιγμής, οπότε αυτό το πρόβλημα δεν έχει λάβει την προσοχή που του αξίζει.
Συνειδητοποίησα ότι έπρεπε να το διορθώσω σε εκείνη την εκστρατεία μυστικού βρικόλακα. Η εκστρατεία ήταν στημένη έτσι ώστε ο χαρακτήρας μου να μπορεί να περνά ως κανονικός άνθρωπος τον περισσότερο καιρό και όλο το νόημα ήταν να πλοηγώ αυτή την ένταση χωρίς να με πιάσουν. Θα ήταν μια μεγάλη αφηγηματική στιγμή όταν οποιοσδήποτε NPC μάθαινε το μυστικό, γιατί τότε θα έπρεπε να πειστούν να το κρατήσουν σιωπηλό.
Αυτό που ανακάλυψα ήταν ότι σχεδόν κάθε πιθανός ανταγωνιστής με κάποιο τρόπο το ήξερε. Παρόλο που δεν είχα αποκαλύψει τίποτα. Και αυτό ήταν αμέσως plot-breaking. Ένιωθα σαν να υπήρχε μια μεγάλη πινακίδα πάνω από το κεφάλι μου που ανακοίνωνε ότι ήμουν βρικόλακας. Ο χαρακτήρας μου έκανε συνεχώς damage control ή ένιωθε ότι κάθε χαρακτήρας είχε πλεονέκτημα πάνω μου.
Πειραματίστηκα με prompts για πολύ καιρό. Τελικά συνειδητοποίησα ότι θα έπρεπε απλά να μην συμπεριλάβω τις πληροφορίες καθόλου στο context.
Η λύση, λοιπόν, είναι η απομόνωση context. Αν το AI δεν μπορεί να μην χρησιμοποιήσει οτιδήποτε βλέπει, τότε οι πληροφορίες πρέπει πραγματικά να μην είναι εκεί. Αυτό είναι εφικτό στο Stage Whisper επειδή κάθε σκηνή και ανάμνηση είναι ήδη tagged με τους NPC που εμφανίζονται σε αυτήν, οπότε μπορούμε εύκολα να φιλτράρουμε για να συμπεριλάβουμε μόνο τους χαρακτήρες που ήταν πραγματικά εκεί.
Αλλά να η παγίδα. Μερικά μυστικά είναι σημαντικοί οδηγοί πλοκής. Δεν μπορείς απλά να τα διαγράψεις εντελώς, γιατί η ιστορία πρέπει ακόμα να τα λαμβάνει υπόψη. Είτε πρόκειται για ληστεία είτε για μυστικό βρικόλακα, αυτά τα μυστικά είναι πυρήνας της αφήγησης και δεν θα ήταν η ίδια ιστορία χωρίς αυτά.
Έτσι έπρεπε να χωρίσουμε την παραγωγή κειμένου μας στα δύο.
Το πρώτο μέρος το αποκαλώ Story Director. Διευθύνει τη συνολική ιστορία: την πλοκή, τους αφηγηματικούς ρυθμούς. Έχει όλα τα μυστικά και μπορεί να αποφασίσει πώς καλύτερα να πλέξει την ιστορία δεδομένων αυτών των μυστικών. Κατανοεί την πλήρη εικόνα, συμπεριλαμβανομένων των πραγμάτων που κανένας χαρακτήρας δεν θα έπρεπε να ξέρει ακόμα.
Το δεύτερο μέρος το αποκαλώ Scene Director. «Παίζει» τη σκηνή που του παραδίδεται από τον Story Director. Έχει πρόσβαση σε όλες τις σχετικές αναμνήσεις και προσωπικότητες NPC, οπότε έχει αρκετές πληροφορίες για να παίξει όλους τους NPC και να παρέχει κάποια ενδιάμεση αφήγηση, αλλά πραγματικά δεν ξέρει τα μυστικά.
Κάποιες πληροφορίες πρέπει να περάσουν από τον έναν στον άλλον, ώστε να μπορούν να δουλεύουν στην ίδια ιστορία χωρίς να δουλεύουν ο ένας εναντίον του άλλου.
Ο Story Director παράγει μια σύνοψη που λέει στον Scene Director όλα όσα χρειάζεται να ξέρει. Μοιάζει κάπως έτσι:
<synopsis>
Ο Elian επιστρέφει στο Δωμάτιο 314 με τη Maeve, οι γνωστές προστατευτικές γοητείες προσφέρουν σύντομη ανάπαυλα από την προσοχή που συγκεντρώθηκε κατά τη διάρκεια της θεαματικής τους επίδειξης. Διαισθανόμενος την ανάγκη της Maeve να μελετήσει μετά από μια ασυνήθιστη μέρα, ο Elian αποφασίζει να αφήσει το δωμάτιό τους για λίγη μοναχική εξερεύνηση
<npc_list>maeve-corwin</npc_list>
<location>room-314</location>
<new_scene/>
</synopsis>
Αυτό λέει στον Scene Director τι συμβαίνει στη σκηνή, πού είναι, ποιος είναι σε αυτήν και αν είναι νέα σκηνή. Η παρουσία του χαρακτήρα παίκτη θεωρείται δεδομένη. Ο Story Director μπορεί επίσης προαιρετικά να εκπέμψει out-of-character συζήτηση προς τον παίκτη και να κάνει λεπτομερείς σημειώσεις απόδοσης για μελλοντική του χρήση.
Οι δύο directors δεν βλέπουν το ίδιο context. Να ο διαχωρισμός:
Ο Story Director βλέπει:
- πλήρη αρχεία εκστρατείας, συμπεριλαμβανομένων σημειώσεων GM, σχεδίου συνεδρίας, ρύθμισης εκστρατείας και τρέχουσας κατάστασης εκστρατείας
- το πλήρες character sheet του παίκτη, συμπεριλαμβανομένων όλων των μυστικών
- μια λίστα όλων των NPC, τοποθεσιών και lore
- περιλήψεις και ανακεφαλαιώσεις συνεδριών
- το πλήρες ιστορικό των δύο πιο πρόσφατων σκηνών
Αυτό είναι ό,τι χρειάζεται ο Story Director για να πάρει ενδιαφέρουσες, συνεπείς αποφάσεις πλοκής. Είναι πολλά δεδομένα, αλλά το KV cache κρατά το κόστος διαχειρίσιμο.
Ο Scene Director βλέπει:
- μερικά αρχεία εκστρατείας χωρίς τις σημειώσεις GM
- τη δημόσια έκδοση του character sheet του παίκτη, που παραλείπει τυχόν μυστικά αλλά εξακολουθεί να περιλαμβάνει φυσική εμφάνιση και δημόσια φήμη, τα πράγματα που ένας τυπικός NPC θα γνώριζε εύλογα
- περιλήψεις των τελευταίων σκηνών στις οποίες ήταν πραγματικά οι NPC
- λεπτομέρειες τοποθεσίας
- τις τελευταίες αναμνήσεις που μπορεί να έχει κάθε NPC
- τη σύνοψη από τον Story Director
Αυτή είναι μια σκόπιμα μειωμένη θέα. Ο Scene Director έχει ό,τι χρειάζεται για να εκτελέσει τη σκηνή και τίποτα που δεν θα έπρεπε να έχει.
Δύο character sheets
Η διάκριση μεταξύ δημόσιου και πλήρους character sheet του παίκτη είναι κλειδί. Ο Story Director πρέπει να ξέρει τις πλήρεις λεπτομέρειες και όλα τα μυστικά για να παράγει την ιστορία. Αλλά ο Scene Director δεν πρέπει να ξέρει αυτές τις λεπτομέρειες. Πρέπει ακόμα να ξέρει ποιος είναι ο χαρακτήρας παίκτης φυσικά, πώς μοιάζει, τη δημόσια φήμη του, τα πράγματα που οποιοσδήποτε NPC θα αντιλαμβανόταν εύλογα απλά από το να είναι γύρω του. Η διατήρηση ενός ξεχωριστού δημόσιου sheet σημαίνει ότι ο Scene Director έχει πάντα αυτό το context χωρίς να χρειάζεται ποτέ πρόσβαση στα μυστικά.
Φιλτράρισμα αναμνήσεων ανά σκηνή
Κάθε σκηνή είναι tagged με το ποιοι NPC είναι παρόντες. Αυτό σημαίνει ότι ξέρουμε ακριβώς ποιες πρόσφατες σκηνές είναι σχετικές για κάθε NPC και τις προσθέτουμε στο context του Scene Director. Η υπόθεση είναι ότι οι σκηνές εντός της τρέχουσας συνεδρίας είναι πολύ σχετικές. Για παλαιότερες αναμνήσεις, η σημασιολογική αναζήτηση αναδεικνύει αυτές που μπορεί να έχουν σημασία.
Το αποτέλεσμα είναι ένας Scene Director που πραγματικά δεν μπορεί να ξέρει πράγματα που οι χαρακτήρες στη σκηνή δεν ξέρουν. Όχι επειδή του είπαν να μην το κάνει, αλλά επειδή αυτές οι πληροφορίες φυσικά δεν είναι εκεί.
Παίζω μια εκστρατεία όπου ο χαρακτήρας μου είναι μια ανθρώπινη γυναίκα που πρέπει να ντύνεται ως άντρας για να εξασφαλίσει τον τίτλο της οικογένειάς της ως κατώτερη αριστοκρατία, λόγω των νόμων κληρονομιάς. Είναι μια ανάλαφρη κωμική εκστρατεία και περιλαμβάνει μερικά κωμικά σενάρια που προέρχονται από αυτή τη σύγχυση φύλου.
Χωρίς αυτό το σύστημα σε εφαρμογή, γενικά δεν υπάρχει τρόπος να εκπλήξεις τους NPC. Όλοι συμπεριφέρονται σαν να υποψιάζονται κάτι. Ίσως όχι άμεσα, αλλά ο τρόπος που σου μιλάνε έχει πάντα αυτή την αίσθηση του να ξέρουν. Είναι δύσκολο να το περιγράψεις, αλλά μπορείς να το νιώσεις. Η δραματική ένταση μιας μυστικής ταυτότητας απλά δεν υπάρχει.
Αλλά με αυτό το σύστημα σε εφαρμογή, οι NPC το παίζουν εντελώς straight. Δεν έχουν ιδέα. Και οι σκηνές όπου γίνεται η μεγάλη αποκάλυψη πραγματικά λειτουργούν, γιατί μέχρι εκείνο το σημείο δεν υπάρχει καμία απολύτως νύξη γι' αυτό. Η κωμωδία λειτουργεί επειδή το κοινό, οι NPC, πραγματικά δεν το βλέπουν να έρχεται.
Υπάρχει μία ακραία περίπτωση. Επειδή ο Scene Director δεν ξέρει το ακριβές μυστικό, περιστασιακά κάνει ανατομικά λανθασμένες λεπτομέρειες. Αυτό είναι δύσκολο να αποφευχθεί, αφού ο Scene Director δουλεύει από ένα δημόσιο character sheet που δεν περιλαμβάνει αυτές τις λεπτομέρειες. Η λύση θα ήταν η προσθήκη ενός τρίτου βήματος: ο Story Director εξετάζει την παραγόμενη σκηνή πριν βγει, για να πιάσει τυχόν τέτοιες αποκλίσεις. Αυτό προσθέτει κόστος και καθυστέρηση, οπότε είναι στον οδικό χάρτη αλλά δεν έχει εφαρμοστεί ακόμα.
Ένα πράγμα που με εξέπληξε: όταν ένα μυστικό αποκαλύπτεται στο παιχνίδι, διαδίδεται φυσικά. Ο Scene Director κρατά τις προηγούμενες παραγόμενες σκηνές, οπότε μόλις ένας NPC μάθει κάτι σε μια σκηνή, αυτό γίνεται μέρος του context του για την επόμενη σειρά. Στο τέλος των σκηνών, αυτές οι σκηνές σχηματίζουν αναμνήσεις για τον NPC. Στο τέλος των συνεδριών, τα NPC sheets ενημερώνονται. Και τα δύο αυτά σημαίνουν ότι η γνώση ενός NPC για ένα μυστικό καταγράφεται και η ιστορία μπορεί να συνεχιστεί με αυτόν τον NPC να ξέρει τώρα πραγματικά.
Η αντιστάθμιση
Αυτή η προσέγγιση δεν είναι δωρεάν. Το κόστος αυξάνεται, αν και όχι ακριβώς διπλάσιο, αφού το context του Scene Director είναι σχετικά ελαφρύ. Το prompt cache βοηθά επίσης σημαντικά. Καθώς η σκηνή εξελίσσεται, νέες σειρές προστίθενται στο τέλος του context, που σημαίνει ότι το 90% του prompt μπορεί να προέρχεται από cache αντί να αναγεννάται φρέσκο κάθε φορά.
Προς το παρόν είναι ενεργοποιημένο για όλες τις εκστρατείες. Οι αρχιτεκτονικές αλλαγές είναι αρκετά σημαντικές που δεν έχει νόημα να παρέχουμε μια διαδρομή που παρακάμπτει αυτή τη ρύθμιση. Για τις περισσότερες εκστρατείες η αντιστάθμιση αξίζει τον κόπο, ακόμα κι αν η ιστορία σας δεν έχει μεγάλα μυστικά, επειδή η συνέπεια των NPC έχει σημασία ανεξάρτητα.
Τι ξεκλειδώνει αυτό: ο Game Director
Η δισταδιακή σωλήνωση δείχνει κάτι χρήσιμο: ο διαχωρισμός εργασιών μεταξύ πιο εξειδικευμένων AI με βελτιστοποιημένα context δίνει καλύτερα αποτελέσματα από ένα AI που κάνει τα πάντα. Αυτό οδηγεί σε ένα φυσικό τρίτο στάδιο.
Το αποκαλώ Game Director. Η δουλειά του είναι να χειρίζεται τους μηχανισμούς TTRPG: ζαριές, ελέγχους δεξιοτήτων, παρακολούθηση κατάστασης. Το context του μπορεί να βελτιστοποιηθεί διαφορετικά από τα άλλα, αφού ενδιαφέρεται λιγότερο για την αφηγηματική ιστορία και περισσότερο για τους κανόνες και την κατάσταση του παιχνιδιού.
Η προσθήκη ενός Game Director έχει ένα απροσδόκητο όφελος. Εφόσον τρέχει κάθε σειρά σε περίπτωση που ο παίκτης δοκιμάσει κάτι που δικαιολογεί έλεγχο δεξιότητας, μπορεί επίσης να αποφασίσει αν η είσοδος του παίκτη είναι συνέχεια της τελευταίας σκηνής ή κάτι νέο. Αν ο παίκτης απλά συνομιλεί με έναν NPC χωρίς να μετακινεί την πλοκή, ο Game Director μπορεί να παραλείψει εντελώς τον Story Director και να αφήσει τον Scene Director να συνεχίσει τη σκηνή μόνος του. Ο Scene Director έχει τα NPC sheets και μπορεί να κάνει αναζητήσεις μνήμης, οπότε μπορεί να συνεχίσει διάλογο έτσι χωρίς την επιβάρυνση μιας πλήρους κλήσης Story Director.
Αυτή είναι η κατεύθυνση που πηγαίνει η αρχιτεκτονική: μια τριστάδιακή σωλήνωση που γίνεται προοδευτικά πιο εξειδικευμένη, με βελτιστοποιήσεις εξοικονόμησης κόστους ενσωματωμένες σε κάθε επίπεδο.
Το Stage Whisper είναι φτιαγμένο για ανθρώπους που θέλουν να παίζουν σόλο TTRPG με το βάθος και τη συνέπεια μιας μακροχρόνιας εκστρατείας. Το σύστημα μνήμης, συμπεριλαμβανομένης αυτής της αρχιτεκτονικής απομόνωσης context, είναι αυτό που το κάνει δυνατό. Ξεκινήστε ή μπείτε στο Discord μας για να δείτε πώς λειτουργεί στην πράξη.
Για περισσότερα σχετικά με το σύστημα μνήμης του Stage Whisper, δείτε Μέρος 1: Αφηγηματική συνέπεια και Μέρος 3: Όνειρα NPC.