Utilize o armazenamento no seu agente

O armazenamento é um componente crítico do SDK de Agentes do Microsoft 365. Permite aos agentes persistir o estado da conversa, dados do utilizador e outras informações ao longo das sessões. O SDK suporta várias opções de armazenamento, incluindo:

  • Armazenamento em memória
  • Azure Cosmos DB
  • Armazenamento de Blobs do Azure
  • Fornecedores de armazenamento personalizados

Principais opções de armazenamento

O SDK dos Agentes disponibiliza vários fornecedores de armazenamento incorporados, cada um com os seus próprios casos de uso e benefícios. Pode escolher aquele que melhor se adequa às necessidades do seu agente. Também pode implementar o seu próprio fornecedor de armazenamento personalizado.

  1. Armazenamento de memória

    • Adequado para fins de teste e desenvolvimento.
    • Os dados são apagados quando o agente reinicia, por isso não são adequados para produção.
    • Os dados só estão disponíveis na instância da aplicação web, por isso não são adequados 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 através da implementação IStorage

Utilizar diferentes fornecedores de armazenamento

Armazenamento de memória

Todos os exemplos usam MemoryStorage. Este armazenamento é volátil e adequado apenas para desenvolvimento e testes. Para cenários de produção, use uma opção de armazenamento mais durável como o Azure Cosmos DB ou o Armazenamento de Blobs do Azure.

Em Program.cs, regista MemoryStorage:

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

Armazenamento do Azure CosmosDb

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

  2. Em Program.cs, adicione o registo de IStorage (ou substitua o existente) 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. Saiba mais em CosmosDbPartitionedStorageOptions.

Armazenamento de blobs do Azure

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

  2. Em Program.cs, adicione (ou substitua o registo IStorage existente) 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);
    });