Panoramica dell'archiviazione di Agenti SDK

L'archiviazione è un componente fondamentale di SDK per agenti Microsoft, consentendo agli agenti di rendere persistenti lo stato della conversazione, i dati utente e altre informazioni tra le sessioni. Supporta varie opzioni di archiviazione, tra cui archiviazione in memoria, Azure Cosmos DB, Archiviazione BLOB di Azure e consente provider di archiviazione personalizzati.

Opzioni di archiviazione delle chiavi

  1. Archiviazione in memoria

    • Adatta per scopi di test e sviluppo.
    • I dati vengono cancellati al riavvio dell'agente, rendendola non adatta per la produzione.
    • I dati sono disponibili solo nell'istanza dell'app Web, rendendola non adatta durante l'esecuzione 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. Blob Storage 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. Le opzioni di archiviazione personalizzate possono essere fornite implementando IStorage

Uso di provider di archiviazione diversi

Archiviazione in memoria

Tutti gli esempi usano MemoryStorage

Per .NET, In Program.cs, registrare MemoryStorage

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

Archiviazione Azure Cosmos DB

Per .NET:

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

  2. In Program.cs aggiungi o sostituisci 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. Per altri dettagli, vedere CosmosDbPartitionedStorageOptions.

Archiviazione BLOB di Azure

Per .NET:

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

  2. In Program.cs aggiungi o sostituisci 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);
    });