存储是Microsoft代理 SDK 的关键组件,使代理能够跨会话保留会话状态、用户数据和其他信息。 它支持各种存储选项,包括内存中存储、Azure Cosmos DB、Azure Blobs 存储以及允许自定义存储提供程序。
密钥存储选项
内存存储
- 适用于测试和开发目的。
- 当代理重启时,会清除数据,使其不适合生产。
- 数据仅在 Web 应用实例上可用,因此在群集中运行时不合适。
Azure Cosmos DB
- 全球分布式多模型数据库非常适合生产代理。
- 支持分区存储,实现可伸缩性和性能。
Azure Blob 存储
- 针对存储非结构化数据(如文本或二进制文件)进行了优化。
- 通常用于代理状态和脚本存储。
通过实现
IStorage可以提供自定义存储选项
使用不同的存储提供程序
内存存储
所有示例都使用 MemoryStorage
针对 .NET,在 Program.cs 中注册 MemoryStorage
builder.Services.AddSingleton<IStorage, MemoryStorage>();
Azure CosmosDb 存储
对于 .NET:
为
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。
Azure Blob Storage
对于 .NET:
为
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); });