Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
ValkeyChatHistoryProvider.NET aracı konuşma geçmişini Valkey listelerinde kalıcı hale alır. Arama modülü gerektirmeden Valkey ve uyumlu Redis OSS sunucularıyla çalışır.
Bu tümleştirme konuşma depolama düzenini kullanır: anlamsal bellekleri ayıklamak veya almak yerine tam iletileri yeniden yükler.
Bu tümleştirme tam transkripti depolar; anlamsal bellekleri ayıklamaz veya vektör alma sağlamaz.
Paketleri yükleme
dotnet add package Microsoft.Agents.AI.Valkey --prerelease
dotnet add package Valkey.Glide
Kalıcı geçmişi yapılandırma
Valkey bağlantısını oluşturun, durum başlatıcıda bir konuşma anahtarı seçin ve sağlayıcıyı aracılığıyla ChatHistoryProviderekleyin.
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 uygulama verilerini ayırır ve MaxMessages tutulan transkripti sınırlar. Yeniden başlatmadan sonra geçmişin sürdürülebilmesi gerektiğinde uygulamaya ait kararlı bir konuşma kimliği kullanın.
Üretimle ilgili dikkat edilmesi gerekenler
- Şifrelenmiş bağlantılar, kimliği doğrulanmış kullanıcılar ve ağ yalıtımı kullanın.
- Dayanıklılık gereksinimlerinize uyan kalıcılık ve çıkarma ilkeleri tanımlayın.
- Konuşma tanımlayıcılarını güvenilen sunucu tarafı durumunda depolayın ve geçmişi yüklemeden önce sahipliği doğrulayın.
- Kiracı yalıtımı gerektirdiğinde ayrı anahtar ön ekleri veya dağıtımları kullanın.