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.
ValkeyChatHistoryProviderspeichert .NET Verlauf der Agentunterhaltungen in Valkey-Listen. Es funktioniert mit Valkey und kompatiblen Redis OSS-Servern, ohne dass ein Suchmodul erforderlich ist.
Diese Integration verwendet das Unterhaltungsspeichermuster: Es lädt genaue Nachrichten neu, anstatt semantische Erinnerungen zu extrahieren oder abzurufen.
Diese Integration speichert die vollständige Transkription; es extrahiert keine semantischen Erinnerungen oder stellt einen Vektorabruf bereit.
Installieren der Pakete
dotnet add package Microsoft.Agents.AI.Valkey --prerelease
dotnet add package Valkey.Glide
Konfigurieren des beständigen Verlaufs
Erstellen Sie die Valkey-Verbindung, wählen Sie einen Unterhaltungsschlüssel im Statusinitialisierer aus, und fügen Sie den Anbieter an ChatHistoryProvider.
var endpoint = Environment.GetEnvironmentVariable("FOUNDRY_PROJECT_ENDPOINT") ?? throw new InvalidOperationException("FOUNDRY_PROJECT_ENDPOINT is not set.");
var deploymentName = Environment.GetEnvironmentVariable("FOUNDRY_MODEL") ?? "gpt-5.4-mini";
var valkeyConnection = Environment.GetEnvironmentVariable("VALKEY_CONNECTION") ?? "localhost:6379";
var connection = await ConnectionMultiplexer.ConnectAsync(valkeyConnection);
Console.WriteLine("=== ValkeyChatHistoryProvider — Persistent Chat History ===\n");
var historyProvider = new ValkeyChatHistoryProvider(
connection,
_ => new ValkeyChatHistoryProvider.State($"sample-{Guid.NewGuid():N}"),
new ValkeyChatHistoryProviderOptions
{
KeyPrefix = "sample_chat",
MaxMessages = 20
});
AIAgent historyAgent = new AIProjectClient(new Uri(endpoint), new DefaultAzureCredential())
.AsAIAgent(new ChatClientAgentOptions()
{
ChatOptions = new() { ModelId = deploymentName, Instructions = "You are a helpful assistant that remembers our conversation." },
ChatHistoryProvider = historyProvider
});
AgentSession session1 = await historyAgent.CreateSessionAsync();
Console.WriteLine(await historyAgent.RunAsync("Hello! My name is Alex and I'm a software engineer.", session1));
Console.WriteLine(await historyAgent.RunAsync("I'm working on a project using Valkey for caching.", session1));
Console.WriteLine(await historyAgent.RunAsync("What do you remember about me?", session1));
var messageCount = await historyProvider.GetMessageCountAsync(session1);
Console.WriteLine($"\n Stored {messageCount} messages in Valkey.\n");
KeyPrefix trennt Anwendungsdaten und MaxMessages gebundene Aufzeichnungen. Verwenden Sie eine anwendungseigene stabile Unterhaltungs-ID, wenn der Verlauf nach einem Neustart fortgesetzt werden muss.
Produktionsüberlegungen
- Verwenden Sie verschlüsselte Verbindungen, authentifizierte Benutzer und Netzwerkisolation.
- Definieren Sie Persistenz- und Entfernungsrichtlinien, die Ihren Anforderungen an die Haltbarkeit entsprechen.
- Speichern Sie Unterhaltungs-IDs im vertrauenswürdigen serverseitigen Zustand, und überprüfen Sie den Besitz vor dem Laden des Verlaufs.
- Verwenden Sie separate Schlüsselpräfixe oder Bereitstellungen, wenn die Mandantenisolation erforderlich ist.