autogen について
Python向けAutoGen AgentChat 0.7.5 APIを扱い、エージェント間の会話を軸にしたオーケストレーションを解説するスキルです。連携するエージェント、ヒューマンインザループのワークフロー、コード実行に向いています。
主な機能
- 01エージェント間の会話によるオーケストレーション
- 02グループチャットと発話者ルーティング
- 03サブタスクを委任するネストチャット
- 04人間の入力とコード実行の分離
- 05ツール連携とタスクのキャンセル
活用シーン
- 01マルチエージェントのグループチャット構築
- 02複雑なタスクの専門エージェントへの委任
- 03Dockerによる生成コードの実行
- 04AgentChatへのMCPツールの接続
MCP 対応
McpWorkbenchを介してMCPツールをAutoGenに統合する方法を解説します。関連する参考資料と例が含まれています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ magnus919/ agent-skills --skill autogenインストール後、Claude Code で/autogenを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdrequirements.txtevals/evals.jsonreferences/agent-types.mdcode-execution.mdconversation-patterns.mdfaq-and-troubleshooting.mdgroup-chat.mdtool-integration.mdv04-migration.mdvalidation-audit.mdscripts/check-setup.pytest_templates.pytemplates/code-execution.pygroup-chat.pytwo-agent-chat.py詳細
AutoGen エキスパートスキル
このスキルは、Python 3.10 以降の AutoGen AgentChat 0.7.5 API を対象としています。AutoGen(Microsoft Research による)は、会話型マルチエージェント AI のフレームワークです。明示的なグラフトポロジーを使う LangGraph や、役割ベースのクルーを使う CrewAI とは異なり、AutoGen ではエージェント間の会話がオーケストレーションの基本要素です。エージェントは構造化されたチャットを通じて通信し、グループチャットのルーティング、人間からの入力、コード実行に対応するパターンが組み込まれています。
中核となるパラダイム
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient
model_client = OpenAIChatCompletionClient(model="gpt-4o-mini")
assistant = AssistantAgent(
name="assistant",
system_message="You are a helpful assistant.",
model_client=model_client,
)
AgentChat 0.7.5 における役割分担:
UserProxyAgentは人間を表し、input_funcを通じて応答を取得します。CodeExecutorAgentはCodeExecutorを使ってコードブロックを実行します。これらは別々のエージェントであり、どちらも従来のhuman_input_modeオプションを受け付けません。
中核となる原則
- 会話がオーケストレーションの基本要素です。 エージェントはメッセージを送り、返信を受け取り、会話の構造によってワークフローが決まります。
- 人間からの入力とコード実行は分けてください。 人間の参加者には
UserProxyAgentを、コードにはCodeExecutorと組み合わせたCodeExecutorAgentを使います。 - GroupChat がエージェント間のルーティングを行います。 RoundRobinGroupChat は固定順序で交代し、SelectorGroupChat は LLM を使って次の発言者を選びます。
- ネストされたチャットで作業を委任します。 エージェントは専門エージェント間のサブ会話を開始し、その結果を返せます。
- 安全にコードを実行するには Docker を使います。 ローカルでのコード実行(
LocalCommandLineCodeExecutor)では、LLM が生成したコードがマシン上で実行されます。本番環境では Docker を使ってください。 - キャンセルトークンでエージェントの暴走を止められます。 長時間実行されるタスクには、必ず
CancellationTokenを渡してください。
はじめに
| すでにあるもの... | まずはこちら |
|---|---|
| 何もない — AutoGen を試している | アシスタントチャットを作成するか、人間の UserProxyAgent を含むチームを作成する |
| 連携が必要なエージェント | 複数のエージェントで GroupChat を構築する |
| コード実行が必要なエージェント | Docker コード実行ツールを設定する |
| 複雑なマルチステップタスク | サブタスクにネストされたチャットを使う |
クイックリファレンス
| タスク | 方法 | リファレンス |
|---|---|---|
| Human-in-the-loop チャット | AssistantAgent + UserProxyAgent | references/agent-types.md |
| マルチエージェントグループ | RoundRobinGroupChat を使った GroupChat | references/group-chat.md |
| コード実行 | DockerCommandLineCodeExecutor | references/code-execution.md |
| ツール連携 | register_function() または @tool | references/tool-integration.md |
| ネストされたチャット | AgentTool またはツールから実行するチーム | references/conversation-patterns.md |
| キャンセル | CancellationToken | references/conversation-patterns.md |
| MCP ツール | McpWorkbench | references/tool-integration.md |
フレームワーク選択ガイド
| シナリオ | 選択するもの | 理由 |
|---|---|---|
| 会話主導のマルチエージェント | AutoGen | エージェント間のネイティブなチャットをオーケストレーションに使う |
| 役割ベースのマルチエージェントチーム | CrewAI | Role/Goal/Backstory がネイティブな抽象化である |
| ステートマシン型マルチエージェント | LangGraph | グラフトポロジー、サブグラフ、human-in-the-loop に対応する |
| チェーン/エージェントの構成 | LangChain | 汎用チェーン向けの LCEL パイプ演算子を使う |
参考ファイル
| 参考資料 | 読み込むタイミング | ファイル |
|---|---|---|
| エージェントの種類 | AssistantAgent、UserProxyAgent | references/agent-types.md |
| 会話パターン | 送受信、ネストされたチャット、キャンセル | references/conversation-patterns.md |
| グループチャット | RoundRobin、Selector、MagenticOne | references/group-chat.md |
| コード実行 | Docker、ローカル、キャンセルトークン | references/code-execution.md |
| ツール連携 | register_function、@tool、MCP 連携 | references/tool-integration.md |
| v0.4 への移行 | v0.2->v0.4 への移行、AgentTool、ストリーミング、終了 | references/v04-migration.md |
| 検証監査 | すべての API に関する主張の調査と検証 | references/validation-audit.md |
| FAQ とトラブルシューティング | よくあるエラーと解決方法 | references/faq-and-troubleshooting.md |
このスキルのディレクトリから python -m pip install -r requirements.txt を実行し、テンプレートで使用されている正確なパッケージバージョンをインストールしてください。コード実行の例では Docker を使用しており、Docker デーモンが正常に動作している必要があります。
テンプレート
| テンプレート | 使用する場面 | ファイル |
|---|---|---|
| 2 エージェントのチャット | アシスタントと人間による入力 | templates/two-agent-chat.py |
| グループチャット | 発話者のルーティングを行うマルチエージェントチーム | templates/group-chat.py |
| コード実行エージェント | アシスタントと Docker を利用するコード実行器 | templates/code-execution.py |
トラブルシューティング
| 症状 | 考えられる原因 | 対処方法 | 参考資料 |
|---|---|---|---|
| エージェントが無限にループする | チームの終了条件がない | MaxMessageTermination などの TerminationCondition を追加する | references/conversation-patterns.md |
| コードの実行に失敗する | Docker が起動していない | Docker を起動するか、LocalCommandLineCodeExecutor を使用する | references/code-execution.md |
| ネストされたチャットが返ってこない | キャンセルトークンが渡されていない | タイムアウトを設定して CancellationToken を渡す | references/conversation-patterns.md |
| v0.2 のコードが動作しない | v0.4 で API が変更された | 移行ガイドに従う | references/faq-and-troubleshooting.md |
| GroupChat の発話者選択がループする | 次の発話者が明確でない SelectorGroupChat を使用している | 順序が固定されている場合は RoundRobinGroupChat を使用する | references/group-chat.md |
| UserProxyAgent が入力を待ち続ける | 人間の参加者であり、input_func が入力を待っている | 適切な入力関数を渡すか、自動化されたエージェントを使用する | references/agent-types.md |
AutoGen を使用しないほうがよい場合
- 単純な単一エージェントのタスク — 過剰な構成になるため、直接 API 呼び出しを使用してください
- グラフを細かく制御する必要がある — LangGraph を使用してください
- 固定されたプロセスを持つロールベースのチームが必要 — CrewAI を使用してください
- チェーンの合成が必要 — LangChain LCEL を使用してください