Usa lo spazio di archiviazione nel tuo agente

L'archiviazione è un componente fondamentale di Managed Disks. Consente agli agenti di mantenere lo stato della conversazione, i dati utente e altre informazioni tra le sessioni. L'SDK supporta varie opzioni di archiviazione, tra cui:

  • Archiviazione in memoria
  • Azure Cosmos DB, un servizio di database distribuito globale di Microsoft
  • Archiviazione BLOB di Azure (Servizio di archiviazione Blob di Azure)
  • Provider di archiviazione personalizzati

Opzioni di archiviazione delle chiavi

Agents SDK offre diversi provider di archiviazione predefiniti, ognuno con casi d'uso e vantaggi specifici. È possibile scegliere quello più adatto alle esigenze dell'agente. È anche possibile implementare il proprio provider di archiviazione personalizzato.

  1. Archiviazione in memoria

    • Adatta per scopi di test e sviluppo.
    • I dati vengono eliminati quando l'agente si riavvia, quindi non è adatto all'uso in produzione.
    • I dati sono disponibili solo nell'istanza dell'app Web, quindi non sono adatti quando vengono eseguiti in un cluster.
  2. Azure Cosmos DB, un servizio di database distribuito globale di Microsoft

    • Un database multimodello distribuito a livello globale ideale per gli agenti di produzione.
    • Supporta l'archiviazione partizionata per scalabilità e prestazioni.
  3. Archiviazione BLOB di Azure (Servizio di archiviazione Blob di Azure)

    • Ottimizzato per l'archiviazione di dati non strutturati come file di testo o binari.
    • Comunemente usato per l'archiviazione dello stato e della trascrizione dell'agente.
  4. Opzioni di archiviazione personalizzate implementando IStorage

Uso di provider di archiviazione diversi

Archiviazione in memoria

Tutti gli esempi usano MemoryStorage. Questa risorsa di archiviazione è volatile e adatta solo allo sviluppo e ai test. Per gli scenari di produzione, usare un'opzione di archiviazione più durevole, ad esempio Azure Cosmos DB o Archiviazione BLOB di Azure.

In Program.cs, registrare MemoryStorage:

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

Archiviazione Azure Cosmos DB

  1. Aggiungere una dipendenza del pacchetto per Microsoft.Agents.Storage.CosmosDb.

  2. In Program.csaggiungere (o sostituire la registrazione esistente) IStorage con:

    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. Altre informazioni sono disponibili in CosmosDbPartitionedStorageOptions.

Archiviazione BLOB di Azure

  1. Aggiungere una dipendenza del pacchetto per Microsoft.Agents.Storage.Blobs.

  2. In Program.csaggiungere (o sostituire la registrazione esistente) IStorage con:

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