Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
ValkeyChatHistoryProviderbevarar .NET agentkonversationshistorik i Valkey-listor. Den fungerar med Valkey och kompatibla Redis OSS-servrar utan att en sökmodul krävs.
Den här integreringen använder konversationslagringsmönstret: det läser in exakta meddelanden igen i stället för att extrahera eller hämta semantiska minnen.
Den här integreringen lagrar den fullständiga avskriften. den extraherar inte semantiska minnen eller ger vektorhämtning.
Installera programvarupaketen
dotnet add package Microsoft.Agents.AI.Valkey --prerelease
dotnet add package Valkey.Glide
Konfigurera beständig historik
Skapa Valkey-anslutningen, välj en konversationsnyckel i tillståndsinitieraren och koppla providern via 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 separerar programdata och MaxMessages begränsar den bevarade avskriften. Använd ett programägt stabilt konversations-ID när historiken måste återupptas efter en omstart.
Produktionsöverväganden
- Använd krypterade anslutningar, autentiserade användare och nätverksisolering.
- Definiera principer för beständighet och borttagning som matchar dina hållbarhetskrav.
- Lagra konversationsidentifierare i betrott tillstånd på serversidan och verifiera ägarskapet innan du läser in historiken.
- Använd separata nyckelprefix eller distributioner när klientisolering kräver det.