Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
ValkeyChatHistoryProviderconserva .NET historial de conversaciones del agente en las listas de Valkey. Funciona con Valkey y servidores de Redis OSS compatibles sin necesidad de un módulo de búsqueda.
Esta integración usa el patrón de almacenamiento de conversación: vuelve a cargar mensajes exactos en lugar de extraer o recuperar memorias semánticas.
Esta integración almacena la transcripción completa; no extrae memorias semánticas ni proporciona recuperación de vectores.
Instalación de los paquetes
dotnet add package Microsoft.Agents.AI.Valkey --prerelease
dotnet add package Valkey.Glide
Configuración del historial persistente
Cree la conexión de Valkey, elija una clave de conversación en el inicializador de estado y adjunte el proveedor a través ChatHistoryProviderde .
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 los datos de la aplicación y MaxMessages enlaza la transcripción conservada. Use un identificador de conversación estable propiedad de la aplicación cuando se deba reanudar el historial después de un reinicio.
Consideraciones de producción
- Use conexiones cifradas, usuarios autenticados y aislamiento de red.
- Defina directivas de persistencia y expulsión que coincidan con los requisitos de durabilidad.
- Almacene identificadores de conversación en estado de servidor de confianza y compruebe la propiedad antes de cargar el historial.
- Use prefijos de clave o implementaciones independientes cuando el aislamiento de inquilinos lo requiera.