Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
ValkeyChatHistoryProviderpersiste .NET histórico de conversas do agente nas listas do Valkey. Ele funciona com o Valkey e servidores Redis OSS compatíveis sem a necessidade de um módulo de pesquisa.
Essa integração usa o padrão de armazenamento de conversa: recarrega mensagens exatas em vez de extrair ou recuperar memórias semânticas.
Essa integração armazena a transcrição completa; ele não extrai memórias semânticas ou fornece recuperação de vetor.
Instalar os pacotes
dotnet add package Microsoft.Agents.AI.Valkey --prerelease
dotnet add package Valkey.Glide
Configurar o histórico persistente
Crie a conexão Valkey, escolha uma chave de conversa no inicializador de estado e anexe o provedor por meio 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 os dados do aplicativo e MaxMessages vincula a transcrição retida. Use uma ID de conversa estável de propriedade do aplicativo quando o histórico precisar ser retomado após uma reinicialização.
Considerações sobre produção
- Use conexões criptografadas, usuários autenticados e isolamento de rede.
- Defina políticas de persistência e remoção que correspondam aos seus requisitos de durabilidade.
- Armazene identificadores de conversa no estado do servidor confiável e verifique a propriedade antes de carregar o histórico.
- Use prefixos de chave ou implantações separados quando o isolamento do locatário exigir.