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 z Valkey i kompatybilnymi serwerami Redis OSS bez konieczności stosowania modułu wyszukiwania.
Ta integracja wykorzystuje wzorzec przechowywania konwersacji: ponownie wczytuje dokładne wiadomości, zamiast wyodrębniać lub pobierać wspomnienia 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, a MaxMessages wyznacza granice zachowanego transkryptu. 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łego przechowywania i usuwania danych 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ń, jeśli jest to wymagane do izolacji tenantów.