昨年ドタバタ劇にあった AutoGen の v0.4.0devXX 系がようやく stable version の v0.4.1 になり、Microsoft Research Blog の以下の記事が出てました。
AgentChat の API を一通り試したのですが旧バージョンより感触がよかったので、まずは概要が書かれた公式ブログも要約してメモしておこって感じです。
※ 公式ブログが公開された 1/14 は v0.4.1 でしたが、1/17 (日本時間) にはもう v0.4.2 です。変更内容は非同期化がちょっと進んだ程度で大きな変更はなさそう。ちなみに v0.4.0devXX の頃は頻繁に breaking changes が入ってすぐ動かなくなってたのですが、ようやく落ち着くころと期待しています。
概要
AutoGen は v0.2 から v0.4 系へのアップデートで完全に再設計されたのですが、その概要です。
- 非同期メッセージング: Agents は非同期メッセージを介して通信し、イベント駆動型とリクエスト/レスポンス型の両方のインタラクションパターンをサポート。
- モジュール式で拡張可能: ユーザーは、カスタム エージェント、ツール、メモリ、モデルなどのプラグ可能なコンポーネントを使用してシステムを簡単にカスタマイズ可能。また、イベント駆動型パターンを使用してプロアクティブで長時間実行される Agents を構築可能。
- オブザーバビリティとデバッグ: 組み込みのメトリックのトレース、メッセージのトレース、デバッグツールにより、Agents のインタラクションとワークフローを監視および制御できます。OpenTelemetry もサポート。
- *スケーラブル・分散**: ユーザーは、組織の境界を越えてシームレスに動作する複雑な分散 Agent ネットワークを設計できる。
- Built-in and community extensions:: 拡張機能モジュールは、高度なモデルクライアント、Agents、multi-agent team, および agents のワークフロー用のツールによってフレームワークの機能を強化できる。コミュニティサポートにより、オープンソース開発者は独自の拡張機能を管理可能。
- Cross-language support: 異なるプログラミング言語で構築されたエージェント間の相互運用が可能になります。現在、Python と .NET がサポートされており、開発中の追加言語もサポートされています。
- Full type support: : インターフェイスはビルド時に型チェックを実施し、堅牢性を向上させ、コードの品質を維持できる。
New AutoGen framework
AutoGen の Framework の構造は以下。
| レイヤー | 概要 |
|---|---|
| Core | イベント駆動型エージェントシステムの基礎となる構成要素。ゴリゴリコード書くならここをいじるが、まずは次に紹介する AgentChat を中心に実装を進める感じ。 |
| AgentChat | Core レイヤーの上に構築されたタスク駆動の API 群。最初の一歩を踏み出すならこの AgentChat レイヤーでの実装を進めるのが いいかなと思っている。 |
| Extensions | Azure Code executor や OpenAI model client などのコア機能の interface や Third-party integration の実装などがある。 |
※ 図は 公式ブログより引用
Developer tools
Framework に加えて、開発をサポートするツールも紹介。
- AutoGen Bench: 開発者は、タスクや環境全体でパフォーマンスを測定および比較することで、エージェントのベンチマークを行うことができます。
- AutoGen Studio: AgentChat API に戻づいて再設計され、ローコードでサクッとプロトタイプの実装が可能に。
- Real-time agent updates: 非同期のイベント駆動型メッセージを使用して、agent のアクションストリームをリアルタイムで表示します。
- Mid-execution control: 会話を一時停止し、agent のアクションをリダイレクトし、team 構成を調整します。その後、タスクをシームレスに再開可能。
- Interactive feedback through the UI:
UserProxyAgentを追加して、Team 実行中にリアルタイムでユーザー入力とガイダンスを有効に。 - Message flow visualization: メッセージ パスと依存関係をマップする直感的なビジュアル インターフェイスを通じて、エージェントの通信を理解します。
- Drag-and-drop team builder: コンポーネントをドラッグアンドドロップで、関係とプロパティを構成するインターフェイスを使用して agent team を視覚的に設計できる。
- Third-party component galleries: 外部ギャラリーから custom agent、ツール、ワークフローをインポートして使用し、機能を拡張可能。