1. 本実装の概要
- SelectorGroupChat の動作を3つのモードから選択
- 3種類のAIエージェント(PlanningAgent, SearchAgent, DataAgent)と、人間の立場を代行するUserProxyAgent から構成
- 会話の中で各エージェントが順番にタスクを実行し、「APPROVE」というユーザーの発言によってセッションが終了
主な特徴
- SelectorGroupChat による自動エージェント選出
- search_web_tool / percentage_change_tool というダミー関数の導入
- 発話選出ロジック(selector_func / candidate_func) を切り替え可能
- コンソールにリアルタイム出力されるストリーム表示
2. 各エージェントの役割
2.1 PlanningAgent
- 全体の進行を担う「司令塔」。
- 検索や分析の指示を明確に他エージェントに出す。
2.2 SearchAgent
- 指示されたクエリに基づき、
search_web_toolを用いて情報検索を行う。 - 実際のWeb APIと連携すれば、実務にも応用可能。
2.3 DataAgent
- 数値データの変化を
percentage_change_toolにより解析。 - このエージェントがリードする場面では、統計・可視化拡張も可能。
2.4 UserProxyAgent
- 人間ユーザーの役割を担い、最後に「APPROVE」と発言することでチャットを終了。
3. 選択ロジック:モード切り替え機能
実行時に選べる3つのモードにより、会話制御方法が変わります。
| モード名 | 説明 |
|---|---|
| default | 自動判定で次の発言者を選出 |
| selector_func | 明示的に次のエージェントを決定するカスタム関数を使用 |
| candidate_func | 候補リストを動的に決定し、その中からAutoGenが適切なエージェントを選択 |
これにより、構造の複雑化にも柔軟に対応でき、研究・開発用途での適用範囲が広がります。
4. termination_condition の仕組み
プログラムは、以下いずれかの条件で終了します。
- TextMentionTermination(“APPROVE”)
ユーザーが “APPROVE” を発言 - MaxMessageTermination(max_messages=25)
メッセージ数が25を超えた場合の自動終了(ループ防止)
これにより、無限ループや強制終了リスクが低減されます。
5. 技術スタックと依存条件
このプログラムは以下の構成に基づいて動作します。
- Python 3.10+
autogen-agentchat,autogen-core,autogen-extバージョン 0.6.4 以降- OpenAI GPT-4o を利用
OPENAI_API_KEYを環境変数として事前設定
また、ストリーム表示は Console UI を通じて行われ、リアルタイムに各エージェントのやり取りが可視化されます。
6. 実行手順
- 実行コマンド: bashCopyEdit
python selector_group_chat_demo.py - プロンプトで番号を入力: vbnetCopyEdit
Select selector mode by number: 1-default, 2-selector_func, 3-candidate_func [1]: - コンソールに各エージェントの発話が順に表示される。
- 最終的に “APPROVE” と発言すればセッション終了。
7. 拡張のヒント
search_web_tool→ Google Custom Search API や社内DB APIに置換可能percentage_change_tool→ PandasやNumpyによる高機能分析モジュールに拡張可能candidate_func→ 機械学習ベースの会話戦略最適化に応用可能
8. 全コード
# =============================================================================
# プログラム名 :SelectorGroupChat デモ実装(AutoGen × OpenAI)
# -----------------------------------------------------------------------------
# 概要


コメント