Microsoft 365 Agents SDK 0.2-alpha の変更点
はじめに
0.1 リリースからしばらく更新がなかった Microsoft 365 Agents SDK ですが、最近 0.2-alpha が NuGet で利用できるようになりました。特に公式な更新情報はありませんが、0.1 から 0.2-alpha にアップデートした際の変更点をまとめます。2025/04/16 時点の最新版は 0.2.314-alpha です。
変更点
パッケージ名の変更
状態管理に利用する IStorage を実装する関連のライブラリが Microsoft.Agents.Memory から Microsoft.Agents.Storage に変更されました。Microsoft.Agents.Memory は削除されており、0.1 も使用できない状態です。また、Microsoft.Agents.BotBuilder も Microsoft.Agents.Builder に変更されています。こちらは削除されずに deprecated フラグが付与されています。ライブラリ名の変更に合わせて名前空間も変更されています。
クラス名の変更
ボットのエントリ ポイントを示す IBot インターフェースが IAgent インターフェースに変更されました。IAgent インターフェースを実装するクラスとして AgentApplication クラスが追加されており、エージェントに特化した動作が可能です。従来のボットで利用していた ActivityHandler クラスも残されており、引き続き利用できます。
また、ボットを初期化するための処理が AddAgent 拡張メソッドにまとめられています。IHostApplicationBuilder インターフェースの拡張メソッドとして定義されているため、注意が必要です。
認証方法の変更
以前は README.md に記載されていた設定方法が削除され、サンプルに移動しています。詳細は AspNetExtensions.cs の実装を参照してください。
状態管理クラスの変更
これまでは UserState クラスや ConversationState クラスから状態を取得する際に CreateProperty メソッドを使用していました。これは非推奨となり、GetValue メソッドを利用するように変更されました。IStatePropertyAccessor インターフェースを経由しなくなったため、よりシンプルになりましたが、値を変更した場合は SetValue メソッドを呼び出さないと保存されません。また、UserState クラスや ConversationState クラスは明示的に LoadAsync メソッドを使って初期化する必要があります。これに合わせて OnTurnBeginAsync メソッドと OnTurnEndAsync メソッドが追加されています。これにより、初期化と保存の処理を明確に記述できます。
- public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default)
- {
- await this.conversationState.LoadAsync(turnContext, false, cancellationToken);
- base.OnTurnAsync(turnContext, cancellationToken);
- await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken);
- }
+ protected override async Task OnTurnBeginAsync(ITurnContext turnContext, CancellationToken cancellationToken = default)
+ {
+ await this.conversationState.LoadAsync(turnContext, false, cancellationToken);
+ }
+
+ protected override async Task OnTurnEndAsync(ITurnContext turnContext, CancellationToken cancellationToken = default)
+ {
+ await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken);
+ }
以前にダイアログが進まない問題を取り上げましたが、この書き方であれば確実に発生しなくなります。
おわりに
今回の変更から、ボットという名称からエージェントへの移行を強く推進していることがうかがえます。破壊的な変更が多いことには要注意ですが、利便性が向上している点も多く、今後の発展に期待できます。
Discussion