Używanie dostawców magazynu w agencie

Przechowywanie jest kluczowym elementem SDK Microsoft 365 Agents. Umożliwia agentom przechowywanie stanu rozmowy, danych użytkownika oraz innych informacji podczas różnych sesji. SDK obsługuje różne opcje przechowywania, w tym:

  • Przechowywanie w pamięci operacyjnej
  • Azure Cosmos DB
  • Azure Blob Storage
  • Niestandardowi dostawcy pamięci masowej

Kluczowe opcje przechowywania

Agents SDK oferuje kilka wbudowanych dostawców pamięci masowej, z których każdy ma własne zastosowania i korzyści. Możesz wybrać taki, który najlepiej odpowiada potrzebom Twojego agenta. Możesz też zaimplementować własnego niestandardowego dostawcę pamięci masowej.

  1. Przechowywanie w pamięci operacyjnej

    • Nadaje się do celów testowych i rozwojowych.
    • Dane są usuwane po ponownym uruchomieniu agenta, więc nie nadaje się do produkcji.
    • Dane są dostępne tylko w instancji aplikacji internetowej, więc nie nadaje się do działania w klastrze.
  2. Azure Cosmos DB

    • Globalnie dystrybuowana, wielomodelowa baza danych idealna dla agentów produkcyjnych.
    • Obsługuje partycjonowane przechowywanie dla skalowalności i wydajności.
  3. Azure Blob Storage

    • Zoptymalizowany do przechowywania danych nieustrukturyzowanych, takich jak pliki tekstowe lub binarne.
    • Powszechnie używany do przechowywania stanu agenta oraz transkrypcji.
  4. Opcje niestandardowego przechowywania poprzez implementację IStorage

Korzystanie z różnych dostawców pamięci masowej

Przechowywanie w pamięci operacyjnej

We wszystkich przykładach użyto MemoryStorage. To przechowywanie jest nietrwałe i nadaje się wyłącznie do celów deweloperskich i testowych. W scenariuszach produkcyjnych używaj bardziej trwałej opcji przechowywania, takiej jak Azure Cosmos DB lub Azure Blob Storage.

W Program.cs należy zarejestrować MemoryStorage:

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

Azure CosmosDb storage

  1. Dodaj zależność dla pakietu Microsoft.Agents.Storage.CosmosDb.

  2. W Program.cs, dodaj (lub zastąp istniejącą) IStorage rejestrację przez:

    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. Więcej informacji pod adresem: CosmosDbPartitionedStorageOptions.

Azure Blob Storage

  1. Dodaj zależność dla pakietu Microsoft.Agents.Storage.Blobs.

  2. W Program.cs, dodaj (lub zastąp istniejącą) IStorage rejestrację przez:

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