Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
ValkeyChatHistoryProviderbertahan .NET riwayat percakapan agen dalam daftar Valkey. Ini bekerja dengan Valkey dan server Redis OSS yang kompatibel tanpa memerlukan modul pencarian.
Integrasi ini menggunakan pola penyimpanan percakapan: ini memuat ulang pesan yang tepat daripada mengekstrak atau mengambil memori semantik.
Integrasi ini menyimpan transkrip lengkap; ini tidak mengekstrak memori semantik atau memberikan pengambilan vektor.
Instal paket-paket tersebut
dotnet add package Microsoft.Agents.AI.Valkey --prerelease
dotnet add package Valkey.Glide
Mengonfigurasi riwayat persisten
Buat koneksi Valkey, pilih kunci percakapan di inisialisasi status, dan lampirkan penyedia melalui 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 memisahkan data aplikasi, dan MaxMessages mengikat transkrip yang dipertahankan. Gunakan ID percakapan stabil milik aplikasi saat riwayat harus dilanjutkan setelah menghidupkan ulang.
Pertimbangan produksi
- Gunakan koneksi terenkripsi, pengguna terautentikasi, dan isolasi jaringan.
- Tentukan kebijakan persistensi dan pengeluaran yang sesuai dengan persyaratan durabilitas Anda.
- Simpan pengidentifikasi percakapan dalam status sisi server tepercaya dan verifikasi kepemilikan sebelum memuat riwayat.
- Gunakan awalan kunci atau penyebaran terpisah saat isolasi penyewa memerlukannya.