Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Warnung
Die Speicherfunktionalität des semantischen Kernel-Agents ist experimentell, kann sich ändern und wird nur basierend auf Feedback und Auswertung abgeschlossen.
Es ist häufig wichtig, dass sich ein Agent an wichtige Informationen erinnert. Diese Informationen können für die Dauer einer Unterhaltung oder länger aufbewahrt werden, um mehrere Unterhaltungen zu umfassen. Die Informationen können von der Interaktion mit einem Benutzer gelernt werden und für diesen Benutzer spezifisch sein.
Wir nennen diese Informationserinnerungen.
Um Erinnerungen zu erfassen und aufzubewahren, unterstützen wir Komponenten, die mit einem AgentThread Zum Extrahieren von Erinnerungen aus allen Nachrichten verwendet werden können, die dem Thread hinzugefügt werden, und stellen diese Erinnerungen dem Agent bei Bedarf zur Verfügung.
Verwenden von Mem0 für Agent-Speicher
Mem0 ist eine selbst verbessernde Speicherebene für LLM-Anwendungen und ermöglicht personalisierte KI-Erfahrungen.
Die Microsoft.SemanticKernel.Memory.Mem0Provider Integration in den Mem0-Dienst ermöglicht es Agents, Benutzereinstellungen und Kontext über mehrere Threads hinweg zu merken und eine nahtlose Benutzererfahrung zu ermöglichen.
Jede nachricht, die dem Thread hinzugefügt wird, wird an den Mem0-Dienst gesendet, um Erinnerungen zu extrahieren. Für jeden Agentaufruf wird Mem0 nach Erinnerungen abgefragt, die der bereitgestellten Benutzeranforderung entsprechen, und alle Erinnerungen werden dem Agentkontext für diesen Aufruf hinzugefügt.
Der Mem0-Speicheranbieter kann mit einer Benutzer-ID konfiguriert werden, um das Speichern von Erinnerungen an den Benutzer, langfristig, über mehrere Threads hinweg zu ermöglichen. Sie kann auch mit einer Thread-ID oder zur Verwendung der Thread-ID des Agentthreads konfiguriert werden, um kurzfristige Erinnerungen zu ermöglichen, die nur einem einzelnen Thread zugeordnet sind.
Hier ist ein Beispiel für die Verwendung dieser Komponente.
// 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);
Mem0Provider-Optionen
Die Mem0Provider Konfiguration kann mit verschiedenen Optionen erfolgen, um das Verhalten anzupassen.
Optionen werden mithilfe der Mem0ProviderOptions Klasse für den Mem0Provider Konstruktor bereitgestellt.
Umfangsoptionen
Mem0 bietet die Möglichkeit, Erinnerungen nach Anwendung, Agent, Thread und Benutzer zu beschränken.
Optionen stehen zur Verfügung, um IDs für diese Bereiche bereitzustellen, damit die Erinnerungen unter diesen IDs in Mem0 gespeichert werden können.
In den ApplicationId, AgentId, ThreadId und UserId-Eigenschaften auf Mem0ProviderOptions finden Sie weitere Informationen.
In einigen Fällen sollten Sie die Thread-ID des serverseitigen Agent-Threads verwenden, wenn Sie einen dienstbasierten Agent verwenden.
Der Thread wurde jedoch möglicherweise noch nicht erstellt, wenn das Mem0Provider Objekt erstellt wird.
In diesem Fall können Sie die ScopeToPerOperationThreadId Option auf true setzen, und Mem0Provider verwendet die ID der AgentThread, wenn sie verfügbar ist.
Kontextaufforderung
Mit ContextPrompt der Option können Sie die Standardaufforderung außer Kraft setzen, die Erinnerungen vorangestellt ist.
Die Eingabeaufforderung wird verwendet, um die Erinnerungen zu kontextualisieren, die dem KI-Modell zur Verfügung gestellt werden, damit das KI-Modell weiß, was sie sind und wie sie verwendet werden.
Verwenden des Whiteboard-Speichers im Kontext von Short-Term
Mit der Whiteboard-Speicherfunktion können Agents die relevantesten Informationen aus einer Unterhaltung erfassen und aufbewahren, auch wenn der Chatverlauf abgeschnitten wird.
Jede Nachricht, die der Unterhaltung hinzugefügt wird, wird vom Microsoft.SemanticKernel.Memory.WhiteboardProvider verarbeitet, um Anforderungen, Vorschläge, Entscheidungen und Aktionen zu extrahieren.
Diese werden auf einem Whiteboard gespeichert und dem Agent als zusätzlicher Kontext für jeden Aufruf bereitgestellt.
Hier ist ein Beispiel für das Einrichten des Whiteboard-Speichers:
// 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.
Vorteile der Whiteboard-Erinnerungsfunktion
- Short-Term Kontext: Speichert wichtige Informationen zu den Zielen laufender Unterhaltungen.
- Ermöglicht das Abschneiden des Chatverlaufs: Unterstützt die Aufrechterhaltung des kritischen Kontexts, wenn der Chatverlauf abgeschnitten wird.
WhiteboardProvider-Optionen
Die WhiteboardProvider Konfiguration kann mit verschiedenen Optionen erfolgen, um das Verhalten anzupassen.
Optionen werden mithilfe der WhiteboardProviderOptions Klasse für den WhiteboardProvider Konstruktor bereitgestellt.
MaxWhiteboardMessages
Gibt eine maximale Anzahl von Nachrichten an, die auf dem Whiteboard aufbewahrt werden sollen. Wenn das Maximum erreicht ist, werden weniger wertvolle Nachrichten entfernt.
ContextPrompt
Beim Bereitstellen der Whiteboardinhalte für das KI-Modell ist es wichtig zu beschreiben, wofür die Nachrichten dienen.
Diese Einstellung ermöglicht das Überschreiben der Standardnachrichten, die in die WhiteboardProvider integriert sind.
Whiteboard leere Aufforderung
Wenn das Whiteboard leer ist, gibt WhiteboardProvider eine Meldung aus, dass es leer ist.
Diese Einstellung ermöglicht das Überschreiben der Standardnachrichten, die in der WhiteboardProvider enthalten sind.
MaintenancePromptTemplate
Das WhiteboardProvider verwendet ein KI-Modell, um Nachrichten auf dem Whiteboard hinzuzufügen, zu aktualisieren oder zu entfernen.
Es verfügt über eine integrierte Aufforderung zum Erstellen dieser Updates.
Diese Einstellung ermöglicht das Überschreiben dieser integrierten Eingabeaufforderung.
Die folgenden Parameter können in der Vorlage verwendet werden:
-
{{$maxWhiteboardMessages}}: Die maximale Anzahl von Nachrichten, die auf dem Whiteboard zulässig sind. -
{{$inputMessages}}: Die Eingabemeldungen, die dem Whiteboard hinzugefügt werden sollen. -
{{$currentWhiteboard}}: Der aktuelle Zustand des Whiteboards.
Kombinierung der Mem0- und Whiteboard-Speicherfunktion
Sie können mem0- und Whiteboardspeicher im selben Agent verwenden, um ein Gleichgewicht zwischen langfristigen und kurzfristigen Speicherfunktionen zu erzielen.
// 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);
Durch die Kombination dieser Speicherfeatures können Agents eine personalisiertere und kontextorientiertere Benutzeroberfläche für Benutzer bereitstellen.
Nächste Schritte
Bald verfügbar
Weitere Informationen werden in Kürze verfügbar sein.
Bald verfügbar
Weitere Informationen werden in Kürze verfügbar sein.