Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
ValkeyChatHistoryProviderutrwala historię konwersacji agenta .NET na listach Valkey. Działa ona z serwerami systemu operacyjnego Redis i zgodnymi z nim bez konieczności używania modułu wyszukiwania.
Ta integracja używa wzorca magazynu konwersacji: ponownie ładuje dokładne komunikaty, a nie wyodrębnia lub pobiera pamięci semantyczne.
Ta integracja przechowuje pełną transkrypcję; nie wyodrębnia pamięci semantycznych ani nie zapewnia pobierania wektorów.
Instalowanie pakietów
dotnet add package Microsoft.Agents.AI.Valkey --prerelease
dotnet add package Valkey.Glide
Konfigurowanie historii trwałej
Utwórz połączenie Valkey, wybierz klucz konwersacji w inicjatorze stanu i dołącz dostawcę za pomocą polecenia 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 oddziela dane aplikacji i MaxMessages jest powiązany z zachowaną transkrypcją. Użyj stabilnego identyfikatora konwersacji należącego do aplikacji, gdy historia musi zostać wznowiona po ponownym uruchomieniu.
Zagadnienia dotyczące środowiska produkcyjnego
- Używaj szyfrowanych połączeń, uwierzytelnionych użytkowników i izolacji sieciowej.
- Zdefiniuj zasady trwałości i eksmisji zgodne z wymaganiami dotyczącymi trwałości.
- Przechowuj identyfikatory konwersacji w zaufanym stanie po stronie serwera i weryfikuj własność przed załadowaniem historii.
- Użyj oddzielnych prefiksów kluczy lub wdrożeń, gdy wymaga jej izolacja dzierżawy.