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.
ValkeyChatHistoryProvider speichert den Unterhaltungsverlauf des .NET-Agenten 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
Dauerhaften Verlauf konfigurieren
Erstellen Sie die Valkey-Verbindung, wählen Sie in der Zustandsinitialisierung einen Konversationsschlüssel aus und binden Sie den Provider über ChatHistoryProvider ein.
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 begrenzt das beibehaltene Transkript. Verwenden Sie eine anwendungseigene stabile Konversations-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 Konversationskennungen in einem vertrauenswürdigen serverseitigen Status und prüfen Sie die Eigentümerschaft, bevor Sie den Verlauf laden.
- Verwenden Sie separate Schlüsselpräfixe oder separate Bereitstellungen, wenn die Mandantenisolierung dies erfordert.