Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Waarschuwing
De Semantic Kernel Agent Memory-functionaliteit is experimenteel, kan worden gewijzigd en wordt alleen afgerond op basis van feedback en evaluatie.
Het is vaak belangrijk dat een agent belangrijke informatie onthoudt. Deze informatie kan worden bewaard voor de duur van een gesprek of langere termijn om meerdere gesprekken te omvatten. De informatie kan worden geleerd van interactie met een gebruiker en kan specifiek zijn voor die gebruiker.
We noemen deze informatieherinneringen.
Om herinneringen vast te leggen en te bewaren, ondersteunen we onderdelen die kunnen worden gebruikt met een AgentThread om herinneringen te extraheren uit berichten die aan de thread worden toegevoegd en die herinneringen indien nodig aan de agent leveren.
Mem0 gebruiken voor agentgeheugen
Mem0 is een zelfverbewerkende geheugenlaag voor LLM-toepassingen, waardoor gepersonaliseerde AI-ervaringen mogelijk worden.
Microsoft.SemanticKernel.Memory.Mem0Provider integreert met de Mem0-service, waardoor agents gebruikersvoorkeuren en context over meerdere threads kunnen onthouden, wat een naadloze gebruikerservaring mogelijk maakt.
Elk bericht dat aan de thread wordt toegevoegd, wordt verzonden naar de Mem0-service om herinneringen te extraheren. Voor elke aanroep van agents wordt Mem0 opgevraagd voor herinneringen die overeenkomen met de opgegeven gebruikersaanvraag en worden eventuele herinneringen toegevoegd aan de agentcontext voor die aanroep.
De Mem0-geheugenprovider kan worden geconfigureerd met een gebruikers-id om geheugen over de gebruiker, op lange termijn, op te slaan in meerdere threads. Het kan ook worden geconfigureerd met een thread-id of om de thread-id van de agentthread te gebruiken om korte termijngeheugens toe te staan die slechts aan één thread zijn gekoppeld.
Hier volgt een voorbeeld van het gebruik van dit onderdeel.
// 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);
Opties voor Mem0Provider
De Mem0Provider kan worden geconfigureerd met verschillende opties om het gedrag ervan aan te passen.
Opties worden aangeboden met behulp van de Mem0ProviderOptions klasse voor de Mem0Provider constructor.
Omvangopties
Mem0 biedt de mogelijkheid om geheugens af te bakenen per toepassing, agent, thread en gebruiker.
Er zijn mogelijkheden beschikbaar om id's voor deze scopes op te geven, zodat de geheugens kunnen worden opgeslagen in mem0 onder deze id's.
Zie de ApplicationId, AgentIden ThreadIdUserId eigenschappen op Mem0ProviderOptions.
In sommige gevallen kunt u de thread-id van de serverzijde agent thread gebruiken wanneer u een servicegebaseerde agent gebruikt.
De thread wordt echter mogelijk nog niet gecreëerd wanneer het Mem0Provider object wordt geconstrueerd.
In dit geval kunt u de ScopeToPerOperationThreadId optie instellen op true, en de Mem0Provider zal de id van de AgentThread gebruiken wanneer deze beschikbaar is.
Contextprompt
Met de ContextPrompt optie kunt u de standaardprompt overschrijven die wordt voorafgegaan door herinneringen.
De prompt wordt gebruikt om de geheugens die aan het AI-model worden verstrekt, te contextiseren, zodat het AI-model weet wat ze zijn en hoe ze moeten worden gebruikt.
Whiteboardgeheugen gebruiken voor Short-Term context
Met de functie voor whiteboardgeheugen kunnen agents de meest relevante informatie uit een gesprek vastleggen en behouden, zelfs wanneer de chatgeschiedenis wordt afgekapt.
Elk bericht dat aan het gesprek wordt toegevoegd, wordt door de Microsoft.SemanticKernel.Memory.WhiteboardProvider verwerkt om vereisten, voorstellen, beslissingen en acties te extraheren.
Deze worden opgeslagen op een whiteboard en aan de agent geleverd als extra context voor elke aanroep.
Hier volgt een voorbeeld van het instellen van whiteboardgeheugen:
// 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.
Voordelen van whiteboardgeheugen
- Short-Term Context: behoudt belangrijke informatie over de doelstellingen van lopende gesprekken.
- Hiermee staat u afkapping van chatgeschiedenis toe: ondersteunt het onderhouden van kritieke context als de chatgeschiedenis wordt afgekapt.
WhiteboardProvider-opties
De WhiteboardProvider kan worden geconfigureerd met verschillende opties om het gedrag ervan aan te passen.
Opties worden aangeboden met behulp van de WhiteboardProviderOptions klasse voor de WhiteboardProvider constructor.
MaxWhiteboardMessages
Hiermee geeft u een maximum aantal berichten op dat op het whiteboard moet worden bewaard. Wanneer het maximum is bereikt, worden minder waardevolle berichten verwijderd.
ContextPrompt
Wanneer u de inhoud van het whiteboard aan het AI-model opgeeft, is het belangrijk om te beschrijven waar de berichten voor zijn.
Met deze instelling kan het standaardbericht worden overschreven dat is ingebouwd in de WhiteboardProvider.
WhiteboardEmptyPrompt
Wanneer het whiteboard leeg is, wordt er WhiteboardProvider een bericht weergegeven waarin staat dat het leeg is.
Met deze instelling kan het standaardbericht worden overschreven dat is ingebouwd in de WhiteboardProvider.
MaintenancePromptTemplate
Het WhiteboardProvider maakt gebruik van een AI-model om berichten op het whiteboard toe te voegen/bij te werken/te verwijderen.
Er is een ingebouwde prompt voor het maken van deze updates.
Met deze instelling kunt u de ingebouwde prompt overschrijven.
De volgende parameters kunnen worden gebruikt in de sjabloon:
-
{{$maxWhiteboardMessages}}: Het maximum aantal berichten dat is toegestaan op het whiteboard. -
{{$inputMessages}}: De invoerberichten die moeten worden toegevoegd aan het whiteboard. -
{{$currentWhiteboard}}: De huidige status van het whiteboard.
Geheugen van Mem0 en Whiteboard combineren
U kunt zowel Mem0- als whiteboardgeheugen in dezelfde agent gebruiken om een evenwicht te bereiken tussen langetermijn- en kortetermijngeheugenmogelijkheden.
// 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);
Door deze geheugenfuncties te combineren, kunnen agents een meer persoonlijke en contextbewuste ervaring bieden voor gebruikers.
Volgende stappen
Binnenkort beschikbaar
Meer informatie komt binnenkort beschikbaar.
Binnenkort beschikbaar
Meer informatie komt binnenkort beschikbaar.