# OpenAI Agent SDKの便利で実践的な使い方
🌍 複数のエージェントをどう組み合わせるかで、システム全体の品質が決まります。
LLM駆動とコード駆動、2つのオーケストレーションパターンを使い分けましょう。
📌 タイトル:Agent orchestration
🔗 URL:
🧩 概要
マルチエージェントの連携には、LLMが動的に判断する「LLM駆動」パターンと、Pythonコードで明示的に制御する「コード駆動」パターンの2つがあります。さらに`as_tool`でエージェントをツール化するManagerパターンと、handoffによる制御移譲パターンを組み合わせることで、複雑なワークフローを柔軟に構築できます。
🛠 使い方
LLM駆動パターンでは、`Agent(name="researcher", handoffs=[web_search_agent, code_exec_agent])` のようにhandoffを持たせ、モデルが動的に判断します。コード駆動パターンでは、`researcher`, `outliner`, `writer`, `critic` の各エージェントを定義し、`blog_pipeline(topic)` 関数内で `await input=...)` → `await input= + [...])` → `await input=...)` と順に実行します。生成→評価ループは `for i in range(3)` で `critic` にレビューさせ、`"問題なし"` が含まれれば終了、なければ `writer` に改善させます。並列実行は `asyncio.gather(*[ input=data) for a in agents])` で感情分析・トピック抽出・要約を同時実行します。Managerパターンでは `Agent(name="manager", tools=[ のように子エージェントをツール化して統合します。
🏗 実践的な使い方
**LLM駆動 — オープンエンドなタスク**
調査エージェントにWeb検索・ファイル検索・コード実行・専門家handoffを持たせ、LLMが状況に応じて最適な手段を選択します。「この技術について調べて」のようなオープンエンドな質問に最適で、事前にフローを決定できない場合に使います。
**コード駆動 — 確定的なパイプライン**
ブログ生成のようにステップが決まっている場合は、Pythonコードでリサーチ→アウトライン→執筆→批評→改善のパイプラインを明示的に記述します。各ステップの成果物をプログラムで検証・分岐できるため、品質管理がしやすくなります。
**生成→評価ループ**
`while`ループで生成と評価を繰り返し、品質基準を満たすまで改善し続けるパターンです。批評エージェントが「OK」を返すまで繰り返すことで、一発生成では得られない品質を実現できます。ループ回数の上限は必ず設定してください。
**asyncio.gatherでの並列実行**
感情分析・トピック抽出・要約など、相互に依存しない複数のタスクを`asyncio.gather`で並列実行します。直列実行に比べてレイテンシが大幅に短縮されます。
**Managerパターン(as_tool)とhandoffの使い分け**
`as_tool`はManagerエージェントが制御を保持したまま子エージェントを「ツールとして」呼び出します。制御がManagerに戻るため、複数の子エージェントの結果を統合する場合に適しています。handoffは制御を完全に移譲するため、専門エージェントに任せきりにする場合に向いています。
💡 ユースケース
🔬 研究調査(LLM駆動でWeb検索/論文検索/コード分析を動的選択)
📝 コンテンツ制作パイプライン(コード駆動でリサーチ→執筆→レビュー→改善)
⚡ 並列データ分析(asyncio.gatherで感情/トピック/要約を同時実行)
👔 Managerパターン(分析チームの結果を統合してレポート作成)
⚠️ 注意点
- LLM駆動パターンは柔軟ですが、モデルの判断ミスによる不要なhandoffやツール呼び出しが発生する可能性があります。重要なフローはコード駆動で制御してください。
- 生成→評価ループには必ず上限回数を設定してください。無限ループになるとトークンコストが際限なく増加します。
- `asyncio.gather`で並列実行する場合、1つのタスクの失敗が他のタスクに影響しないよう、`return_exceptions=True`の使用を検討してください。
- `as_tool`で呼ばれた子エージェントの結果はテキストとしてManagerに返されます。構造化データが必要な場合は`output_type`を指定してください。
✨ LLM駆動とコード駆動を適材適所で使い分け、最適なマルチエージェントアーキテクチャを設計しましょう!
#
OpenAIAgentSDK# #
AIAgent#