エージェントでストレージを使用する

ストレージはMicrosoft 365 エージェント SDKの不可欠なコンポーネントです。 これにより、エージェントはセッション間で会話の状態、ユーザーデータ、その他の情報を永続化できます。 SDKは、以下のような様々なストレージオプションをサポートしています。

  • メモリ内ストレージ
  • Azure Cosmos DB
  • Azure Blob Storage
  • カスタム ストレージ プロバイダー

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

Agents SDK には、用途や利点が異なる複数の組み込みストレージプロバイダーが用意されています。 エージェントのニーズに最も合ったものをお選びいただけます。 カスタムストレージプロバイダーを実装することもできます。

  1. メモリストレージ

    • テストおよび開発目的に適しています。
    • エージェントを再起動するとデータが消去されるため、本番環境には適していません。
    • データはウェブアプリインスタンス上でのみ利用可能なため、クラスタ環境では適していません。
  2. Azure Cosmos DB

    • グローバルに分散されたマルチモデルデータベースで、本番環境のエージェントに最適です。
    • スケーラビリティとパフォーマンス向上のため、パーティション化ストレージをサポートしています。
  3. Azure Blob Storage

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

さまざまなストレージプロバイダーの利用

メモリストレージ

すべてのサンプルで MemoryStorage が使用されています。 このストレージは揮発性で、開発やテストのみに適しています。 本番環境では、Azure Cosmos DBやAzure Blob Storageなどのより耐久性の高いストレージオプションを使用してください。

Program.cs で、MemoryStorage を登録します。

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

Azure Cosmos DB ストレージ

  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 Storage

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