Visão geral do armazenamento do SDK de agentes

O armazenamento é um componente crítico do SDK de Agentes da Microsoft, permitindo que os agentes persistam o estado da conversa, os dados do usuário e outras informações entre as sessões. Ele dá suporte a várias opções de armazenamento, incluindo armazenamento na memória, Azure Cosmos DB, Armazenamento de Blobs do Azure e permite provedores de armazenamento personalizados.

Opções de armazenamento de chaves

  1. Armazenamento de Memória

    • Adequado para fins de teste e desenvolvimento.
    • Os dados são limpos quando o agente é reiniciado, tornando-os inadequados para produção.
    • Os dados só são válidos na instância do webapp, tornando-os inadequados ao serem executados em um cluster.
  2. Azure Cosmos DB

    • Um banco de dados multimodelo distribuído globalmente ideal para agentes de produção.
    • Dá suporte ao armazenamento particionado para escalabilidade e desempenho.
  3. Armazenamento de Blobs do Azure

    • Otimizado para armazenar dados não estruturados, como arquivos binários ou texto.
    • Normalmente usado para o estado do agente e o armazenamento de transcrição.
  4. As opções de armazenamento personalizado podem ser fornecidas implementando IStorage

Usando provedores de armazenamento diferentes

Armazenamento de memória

Todas as amostras usam MemoryStorage

Para .NET, em Program.cs, registre MemoryStorage

builder.Services.AddSingleton<IStorage, MemoryStorage>();

Armazenamento do Azure CosmosDb

Para .NET:

  1. Adicionar uma dependência de pacote para Microsoft.Agents.Storage.CosmosDb

  2. Em Program.cs, adicione (ou substitua o registro existente) IStorage por:

    builder.Services.AddSingleton<IStorage>(sp =>
    {
          var options = new CosmosDbPartitionedStorageOptions()
          {
             CosmosDbEndpoint = "your-cosmosdb-endpoint",
             DatabaseId = "your-database-id",
             ContainerId = "your-container-id",
    
             // Get a TokenCredential from your defined Connections
             TokenCredential = sp.GetService<IConnections>().GetConnection("ServiceConnection").GetTokenCredential()
          };
    
          return new CosmosDbPartitionedStorage(options);
    });
    
  3. Para obter mais detalhes, confira CosmosDbPartitionedStorageOptions.

Armazenamento de blobs do Azure

Para .NET:

  1. Adicionar uma dependência de pacote para Microsoft.Agents.Storage.Blobs

  2. Em Program.cs, adicione (ou substitua o registro existente) IStorage por:

    builder.Services.AddSingleton<IStorage>(sp =>
    {
       // Get a TokenCredential from your defined Connections
       var tokenCredential = sp.GetService<IConnections>().GetConnection("ServiceConnection").GetTokenCredential();
    
       return new BlobsStorage(
          new Uri("{{your-blobs-storage-endpoint}}/agent-state"),
          tokenCredential);
    });