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.
ValkeyChatHistoryProviderblijft .NET gespreksgeschiedenis van agents behouden in Valkey-lijsten. Het werkt met Valkey en compatibele Redis OSS-servers zonder dat hiervoor een zoekmodule is vereist.
Deze integratie maakt gebruik van het patroon gespreksopslag: het laadt exacte berichten opnieuw in plaats van semantische herinneringen te extraheren of op te halen.
Deze integratie slaat de volledige transcriptie op; er worden geen semantische herinneringen geëxtraheerd of vector opgehaald.
De pakketten installeren
dotnet add package Microsoft.Agents.AI.Valkey --prerelease
dotnet add package Valkey.Glide
Permanente geschiedenis configureren
Maak de Valkey-verbinding, kies een gesprekssleutel in de initialisatiefunctie voor de status en koppel de provider 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 scheidt toepassingsgegevens en MaxMessages begrenst het bewaarde transcript. Gebruik een stabiele gespreks-id die eigendom is van een toepassing wanneer de geschiedenis moet worden hervat na opnieuw opstarten.
Overwegingen voor productie
- Gebruik versleutelde verbindingen, geverifieerde gebruikers en netwerkisolatie.
- Definieer persistentie- en verwijderingsbeleidsregels die voldoen aan uw duurzaamheidsvereisten.
- Sla gespreks-id's op in de status vertrouwde server en controleer het eigendom voordat de geschiedenis wordt geladen.
- Gebruik afzonderlijke sleutelvoorvoegsels of implementaties wanneer tenantisolatie dit vereist.