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.
Lorsque vous créez un agent vocal, vous rencontrez trois problèmes difficiles :
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.
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 :
obtenirensemblesupprimerrequêteconst 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'], }, } ;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' });Lors de la session suivante, l'IA peut appeler :
agentMemory.query({ requête : 'emplacement de l'utilisateur' });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.
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]