Bagaimana Stage Whisper Memecahkan Masalah 'NPC Maha Tahu': Arsitektur Isolasi Konteks

NPC yang bisa mengutip sesuatu yang dikatakan karakter saya tiga sesi lalu cukup keren untuk dilihat. Sistem memori berfungsi. NPC merujuk peristiwa masa lalu, mengutip hal-hal yang saya katakan. TAPI, itu juga memulai masalah berbeda: NPC mulai menjadi maha tahu.

Berikut kutipan dari sesi baru-baru ini, bagian yang relevan disorot:

"Jadi," katanya, suaranya terdengar jelas di atas gemerisik daun, "apa alasan sebenarnya kamu datang mencariku? Penasaran, atau kamu hanya berusaha menghindari membereskan sisa meja kerjamu yang kacau itu?"

Itu merujuk pada sesuatu yang terjadi di adegan yang sama sekali berbeda yang bukan bagian dari karakter ini. Karakter itu seharusnya tidak punya cara untuk mengetahuinya.

Inkonsistensi kecil seperti ini merusak imersi. Tapi dalam kasus lain, ini bisa merusak permainan. Misalnya, saya punya kampanye di mana karakter saya adalah vampir rahasia yang menavigasi dunia manusia yang tidak curiga. NPC mulai dengan santai mengisyaratkan mereka tahu rahasiaku, yang tiba-tiba membuatku sangat sulit melewati hari tanpa dicurigai. Atau dalam contoh lain, jika aku mencuri artefak selama pencurian, dan kemudian karakter yang tidak terkait membuat komentar mencurigakan.

AI pada dasarnya memutuskan untuk menggunakan semua rahasia yang tersedia dalam konteks untuk efek dramatis, yang seharusnya hanya terjadi sangat jarang karena alasan plot.

Jadi mengapa saya tidak bisa menyuruh AI untuk tidak melakukan ini?

Masalahnya adalah Anda mencoba mencapai negasi. "Jangan gunakan informasi ini." Itu adalah tugas yang secara fundamental berbeda dan jauh lebih sulit daripada kasus positif: gunakan informasi yang ada. Untuk melatih model mengabaikan konteks yang relevan, Anda akan membutuhkan ribuan contoh situasi di mana informasinya jelas tersedia tapi outputnya sengaja tidak menggunakannya. Itu hampir merupakan antitesis dari apa yang dirancang untuk dilakukan AI. Untuk sebagian besar tugas, mengabaikan konteks yang berguna berarti gagal dalam pekerjaan.

Bisa dibayangkan sebuah model bisa dilatih dengan lebih banyak contoh untuk tidak bertindak berdasarkan rahasia. Tapi naratif dan roleplay belum menjadi fokus besar bagi pembuat model sejauh ini, jadi masalah ini belum mendapatkan perhatian yang layak.


Saya menyadari saya harus memperbaiki ini pada kampanye vampir rahasia itu. Kampanye diatur sehingga karakter saya bisa dianggap sebagai manusia biasa sebagian besar waktu, dan intinya adalah menavigasi ketegangan itu tanpa tertangkap. Akan menjadi momen naratif besar ketika NPC mana pun mengetahui rahasia itu, karena kemudian mereka perlu diyakinkan untuk diam tentang itu.

Apa yang saya temukan adalah bahwa hampir setiap antagonis potensial entah bagaimana tahu. Meskipun saya belum mengungkapkan apa pun. Dan itu langsung merusak plot. Rasanya seolah ada tanda besar di atas kepalaku yang mengumumkan bahwa aku vampir. Karakterku terus-menerus melakukan pengendalian kerusakan, atau merasa setiap karakter memiliki pengaruh atas karakterku.

Saya bereksperimen dengan prompt untuk waktu yang lama. Akhirnya saya menyadari saya harus tidak memasukkan informasi itu ke dalam konteks sama sekali.

Solusinya, kemudian, adalah isolasi konteks. Jika AI tidak bisa menahan diri untuk menggunakan apa pun yang dilihatnya, maka informasinya benar-benar harus tidak ada di sana. Ini dapat dicapai di Stage Whisper karena setiap adegan dan memori sudah ditandai dengan NPC yang muncul di dalamnya, jadi kita bisa dengan mudah memfilter untuk hanya menyertakan karakter yang benar-benar ada di sana.

Tapi inilah masalahnya. Beberapa rahasia adalah pendorong plot utama. Anda tidak bisa begitu saja menghapusnya sepenuhnya, karena cerita masih perlu memperhitungkannya. Entah itu pencurian, atau vampir rahasia, rahasia itu inti dari narasi, dan tidak akan menjadi cerita yang sama tanpanya.

Jadi kami harus membagi generasi teks kami menjadi dua.

Bagian pertama saya sebut Story Director. Ini mengarahkan cerita keseluruhan: plot, beat naratif. Ini memiliki semua rahasia, dan bisa memutuskan cara terbaik untuk memutar cerita mengingat rahasia itu. Ini memahami gambaran penuh, termasuk hal-hal yang belum boleh diketahui karakter mana pun.

Bagian kedua saya sebut Scene Director. Ini "memerankan" adegan yang diserahkan oleh Story Director. Ini memiliki akses ke semua memori dan kepribadian NPC yang relevan, jadi memiliki cukup informasi untuk memainkan semua NPC dan memberikan beberapa narasi interstitial, tapi benar-benar tidak tahu rahasia.

Beberapa informasi perlu berpindah dari satu ke yang lain, sehingga mereka bisa bekerja pada cerita yang sama tanpa bekerja melawan satu sama lain.


Story Director menghasilkan sinopsis yang memberi tahu Scene Director semua yang perlu diketahui. Ini terlihat seperti ini:

<synopsis>
  Elian kembali ke Kamar 314 dengan Maeve, perlindungan privasi yang familiar menawarkan jeda singkat dari perhatian yang terkumpul selama pertunjukan spektakuler mereka. Merasakan kebutuhan Maeve untuk belajar setelah hari yang tidak biasa, Elian memutuskan untuk meninggalkan kamar mereka untuk eksplorasi solo
  <npc_list>maeve-corwin</npc_list>
  <location>room-314</location>
  <new_scene/>
</synopsis>

Ini memberi tahu Scene Director apa yang terjadi di adegan, di mana, siapa yang ada di dalamnya, dan apakah itu adegan baru. Kehadiran karakter pemain diasumsikan. Story Director juga bisa secara opsional mengeluarkan pembicaraan out-of-character kepada pemain, dan membuat catatan performa detail untuk penggunaan masa depannya sendiri.

Kedua director tidak melihat konteks yang sama. Inilah pembagiannya:

Story Director melihat:

Ini adalah semua yang dibutuhkan Story Director untuk membuat keputusan plot yang menarik dan konsisten. Ini banyak data, tapi KV cache menjaga biaya tetap terkendali.

Scene Director melihat:

Ini adalah pandangan yang sengaja dikurangi. Scene Director memiliki semua yang dibutuhkan untuk menjalankan adegan, dan tidak ada yang tidak seharusnya dimiliki.

Dua lembar karakter

Perbedaan antara lembar karakter pemain publik versus lengkap adalah kunci. Story Director perlu mengetahui detail lengkap dan semua rahasia untuk menghasilkan cerita. Tapi Scene Director seharusnya tidak tahu detail itu. Scene Director masih perlu tahu siapa karakter pemain secara fisik, seperti apa penampilan mereka, reputasi publik mereka, hal-hal yang biasanya ditangkap NPC hanya dari berada di sekitar mereka. Mempertahankan lembar publik terpisah berarti Scene Director selalu memiliki konteks itu tanpa perlu akses ke rahasia.

Memfilter memori berdasarkan adegan

Setiap adegan ditandai dengan NPC mana yang hadir. Ini berarti kita tahu persis adegan terbaru mana yang relevan untuk setiap NPC, dan kita menambahkannya ke konteks Scene Director. Asumsinya adalah bahwa adegan dalam sesi saat ini sangat relevan. Untuk memori yang lebih lama, pencarian semantik memunculkan yang mungkin penting.

Hasilnya adalah Scene Director yang benar-benar tidak bisa tahu hal-hal yang tidak diketahui karakter dalam adegan. Bukan karena diperintahkan untuk tidak, tapi karena informasi itu secara fisik tidak ada di sana.


Saya telah menjalankan kampanye di mana karakter saya adalah wanita manusia yang harus berpakaian seperti pria untuk mengamankan gelar keluarganya sebagai bangsawan kecil, karena hukum waris. Ini adalah kampanye komedi ringan, dan menampilkan beberapa skenario komedi yang berasal dari kebingungan gender itu.

Tanpa sistem ini, umumnya tidak ada cara untuk mengejutkan NPC. Mereka semua berperilaku seperti mencurigai sesuatu. Mungkin tidak langsung, tapi cara mereka berbicara kepada Anda selalu memiliki sedikit kesan mengetahui. Sulit dijelaskan, tapi Anda bisa merasakannya. Ketegangan dramatis dari identitas rahasia tidak ada.

Tapi dengan sistem ini, NPC memainkannya sepenuhnya lurus. Mereka tidak tahu. Dan adegan di mana pengungkapan besar terjadi benar-benar terasa, karena sampai saat itu sama sekali tidak ada kiasan ke sana. Komedi berfungsi karena penonton, para NPC, benar-benar tidak melihatnya datang.

Ada satu kasus tepi. Karena Scene Director tidak tahu rahasia persisnya, kadang-kadang membuat detail yang secara anatomis tidak benar. Ini sulit dihindari, karena Scene Director bekerja dari lembar karakter publik yang tidak mencakup detail itu. Solusinya adalah menambahkan langkah ketiga: Story Director meninjau adegan yang dihasilkan sebelum dikirim, untuk menangkap ketidaksesuaian seperti ini. Itu menambah biaya dan latensi, jadi ada di roadmap tapi belum diimplementasikan.

Satu hal yang mengejutkan saya: ketika rahasia benar-benar terungkap dalam permainan, itu menyebar secara alami. Scene Director menyimpan adegan yang dihasilkan sebelumnya, jadi begitu NPC mempelajari sesuatu dalam adegan, itu menjadi bagian dari konteks mereka untuk giliran berikutnya. Di akhir adegan, adegan itu membentuk memori untuk NPC. Di akhir sesi, lembar NPC diperbarui. Keduanya berarti pengetahuan NPC individu tentang rahasia dicatat, dan cerita bisa berlanjut dengan NPC itu sekarang benar-benar mengetahuinya.


Tradeoff-nya

Pendekatan ini tidak gratis. Biaya meningkat, meskipun tidak sampai dua kali lipat, karena konteks Scene Director relatif ringan. Prompt cache juga membantu secara signifikan. Seiring adegan berjalan, giliran baru ditambahkan ke akhir konteks, yang berarti 90% prompt bisa berasal dari cache daripada diregenerasi baru setiap kali.

Saat ini ini diaktifkan untuk semua kampanye. Perubahan arsitektural cukup signifikan sehingga tidak masuk akal menyediakan jalur yang melewati pengaturan ini. Untuk sebagian besar kampanye tradeoff ini sepadan, bahkan jika cerita Anda tidak memiliki rahasia besar, karena konsistensi NPC tetap penting.

Apa yang ini buka: Game Director

Pipeline dua tahap menunjukkan sesuatu yang berguna: membagi tugas antara AI yang lebih terspesialisasi dengan konteks yang dioptimalkan memberikan hasil yang lebih baik daripada satu AI melakukan segalanya. Itu mengarah ke tahap ketiga yang alami.

Saya menyebutnya Game Director. Tugasnya adalah menangani mekanik TTRPG: roll dadu, skill check, pelacakan status. Konteksnya bisa dioptimalkan berbeda dari yang lain, karena kurang peduli tentang riwayat naratif dan lebih tentang aturan permainan dan status permainan.

Menambahkan Game Director memiliki manfaat tak terduga. Karena berjalan setiap giliran jika pemain mencoba sesuatu yang memerlukan skill check, ia juga bisa memutuskan apakah input pemain adalah kelanjutan dari adegan terakhir atau sesuatu yang baru. Jika pemain hanya mengobrol dengan NPC tanpa menggerakkan plot, Game Director bisa melewati Story Director sepenuhnya dan membiarkan Scene Director melanjutkan adegan sendiri. Scene Director memiliki lembar NPC dan bisa melakukan pencarian memori, jadi bisa melanjutkan dialog seperti ini tanpa overhead panggilan Story Director penuh.

Ini adalah arah arsitektur yang sedang bergerak: pipeline tiga tahap yang semakin terspesialisasi, dengan optimasi penghematan biaya bawaan di setiap lapisan.


Stage Whisper dibangun untuk orang yang ingin bermain TTRPG solo dengan kedalaman dan konsistensi kampanye jangka panjang. Sistem memori, termasuk arsitektur isolasi konteks ini, adalah yang membuat itu mungkin. Mulai atau bergabung dengan Discord kami untuk melihat bagaimana ia bekerja dalam praktik.

Untuk lebih lanjut tentang sistem memori Stage Whisper, lihat Bagian 1: Konsistensi Naratif dan Bagian 3: NPC Bermimpi.