Blog Metlivi

Come fare in modo che una chat con personaggi ricordi una correzione dell'utente tra diverse sessioni

Quando un utente corregge i dettagli di un personaggio di fantasia, la chat dovrebbe salvare la versione corretta insieme al suo ambito, sostituire qualsiasi versione precedente in conflitto e rendere la nota salvata visibile e modificabile. Dovrebbe inoltre distinguere le preferenze durature dell'utente dai fatti che si applicano solo all'interno di una singola scena della storia. Prima di utilizzare un dettaglio memorizzato in un momento successivo, il sistema dovrebbe verificare che sia pertinente e aggiornato; se le prove non sono chiare, dovrebbe chiedere invece di inventare un passato condiviso. Questa guida si concentra su questa persistenza e sull'attività di risoluzione dei conflitti, non su come rispondere a un malinteso sul momento.

27 settembre 20268 min di letturaLettura, arte e culturaDi Metlivi Editorial Team
Sezione 1

Cosa dovrebbe ricordare una chat con personaggi?

Prendiamo un esempio illustrativo: un utente dice: “Gli occhi di Mira sono verdi, non blu”. La correzione potrebbe riferirsi a un dettaglio permanente del personaggio, a una versione temporanea di Mira in un particolare gioco di ruolo, o semplicemente alla preferenza dell'utente su come Mira viene descritta. Una memoria che memorizza solo “occhi: verdi” perde il contesto che rende utile il fatto.

Un record di memoria pratico dovrebbe catturare almeno il soggetto, il dettaglio corretto, l'ambito e se l'utente intendeva renderlo persistente. Per esempio:

Questa struttura è una raccomandazione di progettazione del prodotto, non un formato prescritto dagli studi. Il suo scopo è impedire che il dettaglio di una scena locale si trasformi silenziosamente in un fatto globale. Una correzione specifica per una scena potrebbe invece essere registrata come “Nella scena del ballo d'inverno, Mira indossa un mantello verde”. Quella nota non dovrebbe sovrascrivere il suo abbigliamento o aspetto generale.

Soggetto: Mira, il personaggio di fantasia
Dettaglio: Occhi verdi
Ambito: Descrizione generale del personaggio di Mira
Stato: Attuale; sostituisce la precedente nota “occhi blu”
Fonte: Correzione dell'utente
Sezione 2

In che modo una correzione dovrebbe sostituire la memoria precedente?

Tratta una correzione chiara come un aggiornamento del fatto pertinente, non come un fatto aggiuntivo che lascia attive entrambe le versioni. Se il sistema mantiene “Mira ha gli occhi blu” e aggiunge “Mira ha gli occhi verdi”, il recupero successivo potrebbe far emergere l'una o l'altra informazione. Il record aggiornato dovrebbe contrassegnare il vecchio valore come sostituito o rimuoverlo dall'uso attivo, conservando al contempo una cronologia sufficiente a spiegare la modifica se il prodotto offre un registro di memoria.

La distinzione è importante perché le informazioni possono cambiare nel tempo. In *[Keep Me Updated! Memory Management in Long-term Conversations](https://aclanthology.org/2022.findings-emnlp.276/)*, Bae e colleghi introducono un compito e un dataset per tracciare le informazioni aggiornate sugli utenti attraverso molteplici sessioni di conversazione. Rappresentano i ricordi come descrizioni testuali e propongono di eliminare selettivamente le informazioni invalidate o ridondanti. I loro esperimenti confrontano questo approccio con baseline che lasciano invariate le memorie archiviate. Lo studio riguarda la memoria conversazionale a lungo termine; non testa specificamente le chat con personaggi di fantasia né stabilisce un unico modello di memoria universale.

Per una chat con personaggi, applica con cura la stessa logica generale di aggiornamento: una correzione diretta “non blu, ma verdi” è una forte prova del fatto che il vecchio valore è errato all'interno dell'ambito specificato. Il dettaglio di una nuova scena non è automaticamente una prova del cambiamento di un fatto permanente del personaggio. Quando l'ambito manca e la differenza conta per il futuro, poni una breve domanda di chiarimento come: “Dovrei ricordare gli occhi verdi per Mira in ogni storia, o solo per questa versione?”

Sezione 3

In che modo il sistema può separare le preferenze dell'utente dai fatti della storia?

Conserva le preferenze e i fatti del mondo immaginario in categorie distinte. Una preferenza potrebbe essere “L'utente preferisce che i dialoghi di Mira siano concisi”. Un fatto della storia potrebbe essere “In questa scena, Mira è appena arrivata alla stazione”. Rispondono a domande diverse: la preferenza guida il modo in cui la chat risponde, mentre il fatto della storia aiuta a mantenere la continuità all'interno di una narrazione.

Aggiungi un ambito a entrambi. Una preferenza può applicarsi a tutte le chat, a un singolo personaggio o solo al gioco di ruolo corrente. Un fatto della storia può applicarsi a una scena, a un arco narrativo o al profilo generale del personaggio. Non dedurre una preferenza generale da una singola correzione. Se un utente dice “Gli occhi di Mira sono verdi”, ciò non significa di per sé che desideri che ogni personaggio abbia gli occhi verdi, o che il dettaglio si applichi a ogni versione alternativa di Mira.

Una semplice sequenza decisionale può essere d'aiuto:

Questi passaggi costituiscono un flusso di lavoro proposto derivato dal problema di mantenere aggiornate le informazioni conversazionali. Non rappresentano una dichiarazione che un particolare prodotto di chat li segua effettivamente.

Identifica a cosa si riferisce la correzione: alla preferenza dell'utente, a un tratto del personaggio o allo stato attuale della scena.
Conserva l'ambito dichiarato dall'utente, inclusi limiti come “in questa storia” o “d'ora in poi”.
Se l'ambito è assente, utilizza solo l'interpretazione ragionevole più ristretta oppure chiedi chiarimenti prima di salvare una memoria valida per più sessioni.
Verifica la presenza di una memoria precedente riguardante lo stesso soggetto e ambito. Sostituiscila solo quando la nuova affermazione è effettivamente in conflitto.
Mantieni intatte le memorie non correlate. Cambiare il colore degli occhi di Mira non dovrebbe alterare la sua età, le sue relazioni o lo stile di scrittura preferito dall'utente.
Sezione 4

Come dovrebbe gestire le memorie in conflitto?

Risolvi i conflitti confrontando soggetto, ambito e momento temporale, non privilegiando ciecamente la frase più facile da recuperare. Una correzione chiara e successiva da parte dell'utente dovrebbe generalmente avere la precedenza su una versione precedente dello stesso fatto all'interno dello stesso ambito. Un dettaglio proveniente da un diverso gioco di ruolo non dovrebbe prevalere su quello attuale. Se il sistema non è in grado di determinare se due record si riferiscono alla stessa versione di un personaggio, dovrebbe tenerli separati o chiedere chiarimenti.

Ad esempio, supponiamo che una memoria precedente dica: “Mira ha gli occhi blu”, mentre un messaggio successivo dica: “Per questa storia in un universo alternativo, Mira ha gli occhi verdi”. L'affermazione successiva aggiorna l'aspetto di Mira per quella storia, ma non modifica necessariamente il profilo predefinito del personaggio. Se l'utente dice: “In realtà, fai in modo che il verde sia il colore dei suoi occhi d'ora in poi”, l'ambito è più ampio e il record predefinito può essere aggiornato. Non fondere silenziosamente versioni contraddittorie sostenendo che l'utente abbia sempre descritto Mira nello stesso modo.

I sistemi di memoria devono anche disporre di un modo per gestire l'incertezza. Se due record presentano date o ambiti poco chiari, contrassegna il conflitto come irrisolto anziché presentare con sicurezza l'uno o l'altro dettaglio. Una breve domanda è preferibile a un ricordo sicuro ma privo di fondamento.

Sezione 5

In che modo gli utenti possono vedere e controllare ciò che è stato memorizzato?

Dopo aver salvato una correzione, dai conferma della modifica specifica: “Ricevuto: ricorderò che Mira ha gli occhi verdi nel suo profilo generale del personaggio, sostituendo il precedente dettaglio degli occhi blu”. Se il sistema sta salvando un fatto più limitato, specificalo: “Terrò a mente il mantello verde come dettaglio per questa scena”. Questa conferma offre all'utente la possibilità di correggere immediatamente un errore di ambito.

Una vista della memoria dovrebbe mostrare il testo salvato e il suo ambito in un linguaggio chiaro, con la possibilità di modificarlo o eliminarlo. Se il prodotto può visualizzare le voci sostituite, dovrebbe etichettarle come obsolete anziché mostrarle come ugualmente attuali. Ciò rende più semplice per gli utenti capire perché una chat con personaggi menzioni un dettaglio e correggere il record senza dover ripetere l'intera storia.

Evita di insinuare che esista un ricordo quando questo non è stato salvato, o di affermare che il personaggio ricordi uno scambio passato che il sistema non è in grado di verificare. Un personaggio può esprimersi in modo naturale mentre l'interfaccia o la risposta rimangono oneste riguardo a quali informazioni sono memorizzate.

Sezione 6

Come dovrebbe essere testato il richiamo successivo?

Testa la persistenza tra sessioni diverse, non solo nella stessa conversazione in cui è stata effettuata la correzione. Lo [studio sulla comprensione situazionale condotto da Yang ed Ettinger](https://aclanthology.org/2023.emnlp-main.394/) valuta ChatGPT utilizzando un ambiente sintetico progettato per testare se traccia e riporta gli stati mutevoli dell'ambiente. Gli autori segnalano errori nel trattenere gli stati nel tempo e discutono la memoria nel contesto non persistente e la suscettibilità ad aggiornamenti allucinati come fattori determinanti nel loro contesto. Si trattava di uno studio controllato su ChatGPT in quell'ambiente, pubblicato nel 2023; non costituisce una prova applicabile a qualsiasi modello attuale, prodotto o sistema di personaggi di fantasia.

Un test mirato per una chat con personaggi può utilizzare una piccola serie di conversazioni sceneggiate:

Valuta ogni test rispetto all'ambito previsto: recupero corretto, sostituzione corretta delle vecchie informazioni, separazione tra fatti della scena e fatti generali, e gestione onesta dell'incertezza. Includi casi in cui la risposta attesa sia chiedere un chiarimento. Un sistema che rinuncia in modo affidabile a tirare a indovinare quando le sue note memorizzate sono ambigue gestisce quel caso meglio di uno che inventa una finta continuità.

Imposta un fatto predefinito del personaggio, correggilo, termina la sessione e chiedi informazioni al riguardo in una nuova sessione.
Salva un dettaglio valido solo per la scena e verifica che non diventi un tratto permanente del personaggio.
Modifica una preferenza e conferma che la vecchia preferenza non guidi più le risposte successive all'interno dell'ambito dichiarato.
Introduci una seconda versione dello stesso personaggio e verifica che le due versioni rimangano distinte.
Chiedi informazioni su un dettaglio non correlato e verifica che la correzione non abbia modificato altre memorie.
Chiedi cosa ha detto l'utente in precedenza e controlla che il sistema non inventi una conversazione precedente per giustificare la propria risposta.
Sezione 7

Un percorso affidabile dalla correzione al richiamo

Una correzione dovrebbe seguire un percorso chiaro: identificare il soggetto, preservare l'ambito, aggiornare eventuali memorie in conflitto, mostrare la modifica salvata e verificare che le risposte successive la recuperino senza espanderla in una cronologia priva di riscontri. Questa sequenza offre a una chat con personaggi un modo pratico per rimanere coerente tra i vari turni e le sessioni, lasciando il controllo del mondo narrativo all'utente. La ricerca supporta l'importanza di prendere sul serio gli aggiornamenti della memoria e il tracciamento dello stato; il flusso di lavoro specifico illustrato qui è una raccomandazione di progettazione, e il suo comportamento dovrebbe essere verificato nel prodotto specifico in cui verrà impiegato.

Letture correlate

Continua a esplorare il tema