Agents SDK ストレージの概要

ストレージは Microsoft Agents SDK の重要なコンポーネントであり、エージェントはセッション間で会話状態、ユーザー データ、およびその他の情報を保持できます。 メモリ内ストレージ、Azure Cosmos DB、Azure Blobs Storage など、さまざまなストレージ オプションがサポートされており、カスタム ストレージ プロバイダーに対応しています。

キー ストレージ のオプション

  1. メモリ ストレージ

    • テストと開発の目的に適しています。
    • エージェントの再起動時にデータがクリアされるため、運用環境には適さない。
    • データは Web アプリ インスタンスでのみ使用できるため、クラスターで実行する場合は不適切です。
  2. Azure Cosmos DB

    • 運用エージェントに最適なグローバル分散マルチモデル データベース。
    • スケーラビリティとパフォーマンスのためにパーティション分割ストレージをサポートします。
  3. Azure Blob Storage

    • テキスト ファイルやバイナリ ファイルなどの非構造化データを格納するために最適化されています。
    • エージェントの状態とトランスクリプトのストレージでよく使用されます。
  4. カスタム ストレージ オプションは、IStorage を実装することによって提供できます。

異なるストレージ プロバイダーの使用

メモリ ストレージ

すべてのサンプルで MemoryStorage を使用します。

.NET の場合は、Program.csで登録します。 MemoryStorage

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

Azure CosmosDb ストレージ

.NET の場合:

  1. のパッケージ依存関係を追加する Microsoft.Agents.Storage.CosmosDb

  2. Program.csで、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. 詳細については、 CosmosDbPartitionedStorageOptionsを参照してください。

Azure Blob ストレージ

.NET の場合:

  1. のパッケージ依存関係を追加する Microsoft.Agents.Storage.Blobs

  2. Program.csで、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);
    });