Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
ValkeyChatHistoryProviderrende persistente .NET cronologia delle conversazioni dell'agente negli elenchi Valkey. Funziona con valkey e i server OSS compatibili di Redis senza richiedere un modulo di ricerca.
Questa integrazione usa il modello di archiviazione delle conversazioni: ricarica i messaggi esatti anziché estrarre o recuperare memorie semantiche.
Questa integrazione archivia la trascrizione completa; non estrae memorie semantiche o fornisce il recupero vettoriale.
Installare i pacchetti
dotnet add package Microsoft.Agents.AI.Valkey --prerelease
dotnet add package Valkey.Glide
Configurare la cronologia permanente
Creare la connessione Valkey, scegliere una chiave di conversazione nell'inizializzatore di stato e collegare il provider tramite 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 separa i dati dell'applicazione e MaxMessages delimita la trascrizione mantenuta. Usare un ID conversazione stabile di proprietà dell'applicazione quando la cronologia deve essere ripresa dopo un riavvio.
Considerazioni sulla produzione
- Usare connessioni crittografate, utenti autenticati e isolamento di rete.
- Definire criteri di persistenza e rimozione che soddisfano i requisiti di durabilità.
- Archiviare gli identificatori di conversazione in uno stato lato server attendibile e verificare la proprietà prima del caricamento della cronologia.
- Usare prefissi o distribuzioni di chiavi separati quando è necessario l'isolamento del tenant.