Übersicht über den Agents SDK-Speicher

Der Speicher ist eine wichtige Komponente des Microsoft Agents SDK, sodass Agents unterhaltungszustand, Benutzerdaten und andere Informationen über Sitzungen hinweg beibehalten können. Es unterstützt verschiedene Speicheroptionen, einschließlich Speicher im Arbeitsspeicher, Azure Cosmos DB, Azure Blobs Storage und ermöglicht benutzerdefinierte Speicheranbieter.

Schlüsselspeicheroptionen

  1. Speicherspeicher

    • Geeignet für Test- und Entwicklungszwecke.
    • Daten werden gelöscht, wenn der Agent neu gestartet wird, sodass sie nicht für die Produktion geeignet ist.
    • Daten sind nur in der Webapp-Instanz verfügbar, sodass sie nicht geeignet sind, wenn sie in einem Cluster ausgeführt werden.
  2. Azure Cosmos DB

    • Eine global verteilte, multimodellbasierte Datenbank ideal für Produktions-Agents.
    • Unterstützt partitionierten Speicher für Skalierbarkeit und Leistung.
  3. Azure Blob Storage (Speicherdienst von Azure für unstrukturierte Daten)

    • Optimiert zum Speichern unstrukturierter Daten wie Text oder Binärdateien.
    • Wird häufig für Agentstatus- und Transkriptspeicher verwendet.
  4. Benutzerdefinierte Speicheroptionen können durch Implementieren von IStorage bereitgestellt werden

Verwenden verschiedener Speicheranbieter

Speicherspeicher

Alle Beispiele verwenden MemoryStorage

Registrieren Sie für .NET in Program.cs MemoryStorage

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

Azure CosmosDb-Speicher

Für .NET:

  1. Hinzufügen einer Paketabhängigkeit für Microsoft.Agents.Storage.CosmosDb

  2. Fügen Sie in Program.cs die vorhandene Registrierung hinzu (oder bestehende ersetzen) IStorage:

    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. Weitere Details finden Sie unter CosmosDbPartitionedStorageOptions.

Azure Blob-Speicher

Für .NET:

  1. Hinzufügen einer Paketabhängigkeit für Microsoft.Agents.Storage.Blobs

  2. Fügen Sie in Program.cs die vorhandene Registrierung hinzu (oder bestehende ersetzen) IStorage:

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