Créer une mémoire persistante pour les agents Voice AI avec MongoDB

DEV - 08/01
Les agents vocaux ont un sale secret : ce sont des poissons rouges. Terminez une conversation, revenez demain, et ils...

Les agents vocaux ont un sale secret : ce sont des poissons rouges. Mettez fin à une conversation, revenez demain et ils n'auront aucune idée de qui vous êtes. Pour les applications de chat, vous pouvez faire défiler vers le haut et voir l'historique. Pour la voix ? C’est parti.

Nous avons passé les dernières semaines à résoudre ce problème pour notre plateforme d'agent vocal, et je souhaite partager ce que nous avons appris en la construisant avec MongoDB Atlas et Gemini Live.

Code de démonstration : consultez la démo fonctionnelle complète sur GitHub :démo de mémoire vocale.

Le problème avec la mémoire de l'agent vocal

Lorsque vous créez un agent vocal, vous rencontrez trois problèmes difficiles :

  1. Isolation de session : chaque navigateur/appareil a besoin de son propre espace mémoire.
  2. Déploiements multi-utilisateurs : un agent déployé sur le site Web d'une entreprise compte des milliers d'utilisateurs.
  3. Récupération sémantique : les utilisateurs ne disent pas « Comment je m'appelle ? » de la même manière deux fois.

L’approche naïve consiste à tout intégrer dans l’historique des conversations. Mais les sessions vocales coûtent cher (les frais OpenAI par minute audio) et vous ne pouvez pas conserver 50 conversations précédentes dans leur contexte.

Vous avez besoin d'une véritable mémoire persistante.

La mémoire comme outil

Voici ce qui nous a pris du temps à comprendre : n’injectez pas de mémoire dans l’invite. Exposez-le comme un outil appelable et laissez l'IA décider quand l'utiliser.

Nous avons défini unagentMémoireoutil avec quatre opérations :

  • obtenir
  • ensemble
  • supprimer
  • requête
const agentMemorySchema = { nom : 'agentMemory', description : 'Stocker et récupérer des souvenirs sur l'utilisateur et la conversation', paramètres : { type : 'objet', propriétés : { opération : { type : 'string', enum : ['get', 'set', 'delete', 'query'], description : 'L'opération à effectuer', }, clé : { type : 'string', description : 'Clé mémoire (pour get/set/delete)', }, valeur : { type : 'chaîne', description : 'Valeur à stocker (pour l'ensemble)', }, requête : { type : 'chaîne', description : 'Requête en langage naturel (pour l'opération de requête)', }, }, obligatoire : ['opération'], }, } ;
Entrer en mode plein écran Quitter le mode plein écran

Désormais, lorsqu'un utilisateur dit :

"Je m'appelle Pavel, j'habite à Tel Aviv"

l'IA décide d'appeler :

agentMemory.set({ clé : 'nom_utilisateur', valeur : 'Pavel' }); agentMemory.set({ clé : 'user_location', valeur : 'Tel Aviv' });
Entrer en mode plein écran Quitter le mode plein écran

Lors de la session suivante, l'IA peut appeler :

agentMemory.query({ requête : 'emplacement de l'utilisateur' });
Entrer en mode plein écran Quitter le mode plein écran

pour récupérer le contexte pertinent.

L’IA prend les décisions sur ce qu’il convient de retenir – plutôt que sur les règles de codage en dur.

Isolement des utilisateurs : le problème des cookies

Lorsque vous déployez un agent sur le site Web d’une entreprise, des centaines d’utilisateurs interagissent avec lui. L'utilisateur A ne devrait pas voir...
[Courte citation de 8% de l'article original]

Loading...