Descrição geral do armazenamento do SDK de Agentes

O armazenamento é um componente crítico do SDK de Agentes Microsoft, permitindo que os agentes mantenham o estado da conversa, os dados do utilizador e outras informações entre sessões. Suporta várias opções de armazenamento, incluindo armazenamento em memória, Azure Cosmos DB, Armazenamento de Blobs do Azure, e permite fornecedores de armazenamento personalizados.

Principais opções de armazenamento

  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ó estão disponíveis na instância webapp, tornando-os inadequados quando executados num cluster.
  2. Azure Cosmos DB

    • Uma base de dados multimodelo distribuída globalmente, ideal para agentes de produção.
    • Suporta armazenamento particionado para escalabilidade e desempenho.
  3. Armazenamento de Blobs do Azure

    • Otimizado para armazenar dados não estruturados, como texto ou ficheiros binários.
    • Comumente utilizado para armazenamento do estado e de transcrições do agente.
  4. Opções de armazenamento personalizadas podem ser fornecidas implementando IStorage

Utilizar diferentes fornecedores de armazenamento

Armazenamento de memória

Todas as amostras utilizam MemoryStorage

Para .NET, em Program.cs, registe-se 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 existente) o registo IStorage com:

    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, veja 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 existente) o registo IStorage com:

    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);
    });