ストレージは、Microsoft 365 エージェント SDKの重要なコンポーネントです。 これにより、エージェントはセッション間で会話状態、ユーザー データ、およびその他の情報を保持できます。 SDK では、次のようなさまざまなストレージ オプションがサポートされています。
- メモリ内ストレージ
- Azure Cosmos DB
- Azure Blob Storage
- カスタム ストレージ プロバイダー
キー ストレージ のオプション
Agents SDK にはいくつかの組み込みストレージ プロバイダーが用意されており、それぞれに独自のユース ケースと利点があります。 エージェントのニーズに最も適したものを選択できます。 独自のカスタム ストレージ プロバイダーを実装することもできます。
メモリ ストレージ
- テストと開発の目的に適しています。
- エージェントの再起動時にデータがクリアされるため、運用環境には適しません。
- データは Web アプリ インスタンスでのみ使用できるため、クラスターで実行する場合は不適切です。
Azure Cosmos DB
- 運用エージェントに最適なグローバル分散マルチモデル データベース。
- スケーラビリティとパフォーマンスのためにパーティション分割ストレージをサポートします。
Azure Blob Storage
- テキスト ファイルやバイナリ ファイルなどの非構造化データを格納するために最適化されています。
- エージェントの状態とトランスクリプトのストレージでよく使用されます。
IStorage を実装したカスタム ストレージ オプション
異なるストレージ プロバイダーの使用
メモリ ストレージ
すべてのサンプルで MemoryStorageが使用されます。 このストレージは揮発性であり、開発とテストにのみ適しています。 運用環境のシナリオでは、Azure Cosmos DBやAzure Blob Storageなどの持続性の高いストレージ オプションを使用します。
Program.csで、MemoryStorageを登録します。
builder.Services.AddSingleton<IStorage, MemoryStorage>();
import { MemoryStorage, AgentApplication, TurnState } from '@microsoft/agents-hosting'
const storage = new MemoryStorage()
const app = new AgentApplication<TurnState>({
storage
})
from microsoft_agents.hosting.core import AgentApplication, TurnState, MemoryStorage
storage = MemoryStorage()
app = AgentApplication[TurnState](
storage=storage,
adapter=adapter,
authorization=authorization,
)
Azure CosmosDb ストレージ
Microsoft.Agents.Storage.CosmosDbのパッケージ依存関係を追加します。
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);
});
詳細については、「CosmosDbPartitionedStorageOptions」を参照してください。
@microsoft/agents-hosting-storage-cosmosのパッケージ依存関係を追加します。
ストレージを構成して作成し、 AgentApplicationに渡します。
import { AgentApplication, TurnState } from '@microsoft/agents-hosting'
import { CosmosDbPartitionedStorage } from '@microsoft/agents-hosting-storage-cosmos'
const storage = new CosmosDbPartitionedStorage({
databaseId: process.env.COSMOS_DATABASE_ID,
containerId: process.env.COSMOS_CONTAINER_ID,
cosmosClientOptions: {
endpoint: process.env.COSMOS_ENDPOINT,
key: process.env.COSMOS_KEY,
}
})
const app = new AgentApplication<TurnState>({
storage
})
詳細については、「CosmosDbPartitionedStorageOptions」を参照してください。
microsoft-agents-storage-cosmosのパッケージ依存関係を追加します。
ストレージを構成して作成し、 AgentApplicationに渡します。
from microsoft_agents.hosting.core import AgentApplication, TurnState
from microsoft_agents.storage.cosmos import CosmosDBStorage, CosmosDBStorageConfig
config = CosmosDBStorageConfig(
cosmos_db_endpoint="your-cosmosdb-endpoint",
database_id="your-database-id",
container_id="your-container-id",
credential=your_token_credential,
)
storage = CosmosDBStorage(config)
app = AgentApplication[TurnState](
storage=storage,
adapter=adapter,
authorization=authorization,
)
詳細については、「CosmosDBStorageConfig」を参照してください。
Azure Blob ストレージ
Microsoft.Agents.Storage.Blobsのパッケージ依存関係を追加します。
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);
});
@microsoft/agents-hosting-storage-blobのパッケージ依存関係を追加します。
ストレージを構成して作成し、 AgentApplicationに渡します。
import { AgentApplication, TurnState } from '@microsoft/agents-hosting'
import { BlobsStorage } from '@microsoft/agents-hosting-storage-blob'
const storage = new BlobsStorage(
process.env.BLOB_CONTAINER_ID,
process.env.BLOB_STORAGE_CONNECTION_STRING
)
const app = new AgentApplication<TurnState>({
storage
})
microsoft-agents-storage-blobのパッケージ依存関係を追加します。
ストレージを構成して作成し、 AgentApplicationに渡します。
from microsoft_agents.hosting.core import AgentApplication, TurnState
from microsoft_agents.storage.blob import BlobStorage, BlobStorageConfig
# Using a connection string
config = BlobStorageConfig(
container_name="agent-state",
connection_string="your-connection-string",
)
# Or using a TokenCredential
config = BlobStorageConfig(
container_name="agent-state",
url="https://your-storage-account.blob.core.windows.net",
credential=your_token_credential,
)
storage = BlobStorage(config)
app = AgentApplication[TurnState](
storage=storage,
adapter=adapter,
authorization=authorization,
)
詳細については、「BlobStorageConfig」を参照してください。