Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Avertissement
La fonctionnalité mémoire de l’agent de noyau sémantique est expérimentale, est susceptible de changer et ne sera finalisée qu’en fonction des commentaires et de l’évaluation.
Il est souvent important qu’un agent mémorise des informations importantes. Ces informations peuvent être conservées pendant la durée d’une conversation ou à plus long terme pour couvrir plusieurs conversations. Les informations peuvent être apprises à partir de l’interaction avec un utilisateur et peuvent être spécifiques à cet utilisateur.
Nous appelons ces informations des souvenirs.
Pour capturer et conserver des souvenirs, nous prenons en charge les composants qui peuvent être utilisés avec un AgentThread pour extraire des souvenirs de tous les messages ajoutés au thread et fournir ces souvenirs à l’agent selon les besoins.
Utilisation de Mem0 pour la mémoire de l’agent
Mem0 est une couche de mémoire auto-améliorante pour les applications LLM, ce qui permet des expériences d’IA personnalisées.
L’intégration Microsoft.SemanticKernel.Memory.Mem0Provider au service Mem0 permet aux agents de mémoriser les préférences et le contexte de l’utilisateur sur plusieurs threads, ce qui permet une expérience utilisateur transparente.
Chaque message ajouté au thread est envoyé au service Mem0 pour extraire des souvenirs. Pour chaque appel d’agent, Mem0 est interrogé pour les souvenirs correspondant à la demande utilisateur fournie, et tous les souvenirs sont ajoutés au contexte de l’agent pour cet appel.
Le fournisseur de mémoire Mem0 peut être configuré avec un ID d’utilisateur pour permettre le stockage de mémoires sur l’utilisateur, à long terme, sur plusieurs threads. Il peut également être configuré avec un ID de thread ou utiliser l’ID de thread du thread d’agent pour permettre des mémoires à court terme qui ne sont attachées qu’à un seul thread.
Voici un exemple d’utilisation de ce composant.
// Create an HttpClient for the Mem0 service.
using var httpClient = new HttpClient()
{
BaseAddress = new Uri("https://api.mem0.ai")
};
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", "<Your_Mem0_API_Key>");
// Create a Mem0 provider for the current user.
var mem0Provider = new Mem0Provider(httpClient, options: new()
{
UserId = "U1"
});
// Clear any previous memories (optional).
await mem0Provider.ClearStoredMemoriesAsync();
// Add the mem0 provider to the agent thread.
ChatHistoryAgentThread agentThread = new();
agentThread.AIContextProviders.Add(mem0Provider);
// Use the agent with mem0 memory.
ChatMessageContent response = await agent.InvokeAsync("Please retrieve my company report", agentThread).FirstAsync();
Console.WriteLine(response.Content);
Options Mem0Provider
Mem0Provider peut être configuré avec différentes options pour personnaliser son comportement.
Les options sont fournies à l’aide de la classe Mem0ProviderOptions au constructeur Mem0Provider.
Options d’étendue
Mem0 permet d’étendre les mémoires par application, agent, thread et utilisateur.
Les options sont disponibles pour fournir des ID pour ces étendues, afin que les mémoires puissent être stockées dans mem0 sous ces ID.
Consultez les propriétés ApplicationId, AgentId, ThreadId et UserId sur Mem0ProviderOptions.
Dans certains cas, vous pouvez utiliser l’ID de thread du thread de l’agent côté serveur, lors de l’utilisation d’un agent basé sur un service.
Le thread n’a peut-être pas encore été créé lorsque l’objet Mem0Provider est en cours de construction.
Dans ce cas, vous pouvez définir l’option ScopeToPerOperationThreadId sur true, et le Mem0Provider utilisera l’id du AgentThread lorsqu'il est disponible.
Invite de contexte
L’option ContextPrompt vous permet de remplacer l'incitation par défaut qui est ajoutée aux mémoires.
L’invite est utilisée pour contextualiser les mémoires fournies au modèle IA, afin que le modèle IA sache ce qu’ils sont et comment les utiliser.
Utilisation de la mémoire du tableau blanc pour le contexte Short-Term
La fonctionnalité mémoire du tableau blanc permet aux agents de capturer et de conserver les informations les plus pertinentes d’une conversation, même lorsque l’historique des conversations est tronqué.
Chaque message ajouté à la conversation est traité par le Microsoft.SemanticKernel.Memory.WhiteboardProvider pour en extraire les exigences, propositions, décisions et actions.
Elles sont stockées sur un tableau blanc et fournies à l’agent en tant que contexte supplémentaire sur chaque appel.
Voici un exemple de configuration de la mémoire de tableau blanc :
// Create a whiteboard provider.
var whiteboardProvider = new WhiteboardProvider(chatClient);
// Add the whiteboard provider to the agent thread.
ChatHistoryAgentThread agentThread = new();
agentThread.AIContextProviders.Add(whiteboardProvider);
// Simulate a conversation with the agent.
await agent.InvokeAsync("I would like to book a trip to Paris.", agentThread);
// Whiteboard should now contain a requirement that the user wants to book a trip to Paris.
Avantages de la mémoire du tableau blanc
- Short-Term Contexte : conserve les informations clés sur les objectifs des conversations en cours.
- Autorise la troncation de l’historique des conversations : prend en charge la maintenance du contexte critique si l’historique des conversations est tronqué.
Options de WhiteboardProvider
WhiteboardProvider peut être configuré avec différentes options pour personnaliser son comportement.
Les options sont fournies à l’aide de la classe WhiteboardProviderOptions au constructeur WhiteboardProvider.
MaxWhiteboardMessages
Spécifie un nombre maximal de messages à conserver dans le tableau blanc. Lorsque la valeur maximale est atteinte, les messages moins précieux sont supprimés.
ContextPrompt
Lorsque vous fournissez le contenu du tableau blanc au modèle IA, il est important de décrire le contenu des messages.
Ce paramètre permet de remplacer la messagerie par défaut incluse dans le WhiteboardProvider.
WhiteboardEmptyPrompt
Lorsque le tableau blanc est vide, le WhiteboardProvider message indique qu’il est vide.
Ce paramètre permet de remplacer la messagerie par défaut incluse dans le WhiteboardProvider.
MaintenancePromptTemplate
Il WhiteboardProvider utilise un modèle d'IA pour ajouter, mettre à jour ou supprimer des messages sur le tableau de bord.
Il dispose d’une invite intégrée pour effectuer ces mises à jour.
Ce paramètre permet de remplacer cette invite intégrée.
Les paramètres suivants peuvent être utilisés dans le modèle :
-
{{$maxWhiteboardMessages}}: nombre maximal de messages autorisés sur le tableau blanc. -
{{$inputMessages}}: messages d’entrée à ajouter au tableau blanc. -
{{$currentWhiteboard}}: état actuel du tableau blanc.
Combinaison de la mémoire Mem0 et de la mémoire tableau blanc
Vous pouvez utiliser la mémoire mem0 et le tableau blanc dans le même agent pour obtenir un équilibre entre les fonctionnalités de mémoire à long terme et à court terme.
// Add both Mem0 and whiteboard providers to the agent thread.
agentThread.AIContextProviders.Add(mem0Provider);
agentThread.AIContextProviders.Add(whiteboardProvider);
// Use the agent with combined memory capabilities.
ChatMessageContent response = await agent.InvokeAsync("Please retrieve my company report", agentThread).FirstAsync();
Console.WriteLine(response.Content);
En combinant ces fonctionnalités de mémoire, les agents peuvent fournir une expérience plus personnalisée et prenant en charge le contexte pour les utilisateurs.
Étapes suivantes
Prochainement
Plus d’informations seront bientôt disponibles.
Prochainement
Plus d’informations seront bientôt disponibles.