AI ソフトウェア 公開日 2026.04.21 更新日 2026.04.21

コード主導のオーケストレーションとは?AIエージェントの流れをコードで決める設計

コード主導のオーケストレーションとは何かを、LLM任せとの違い、向く場面、速度やコストで強い理由、実務での判断基準まで整理します。

先に要点

  • コード主導のオーケストレーションは、AIエージェント 同士の流れや分岐条件を、LLMのその場判断だけでなくアプリ側のコードで決める設計です。
  • 向いているのは、分岐条件を明示したい場面、速度・コスト・再現性を上げたい場面、承認点を厳密に置きたい場面です。
  • 自由度は下がりますが、`どの条件で次へ進むか` をコードで固定できるぶん、予測しやすくなります。

AI エージェントの構成を見ていると、LLM が自律的に次を決める流れコード側で流れを決める形 の2つが出てきます。
前者は agentic で柔軟ですが、後者は speed、cost、predictability の面で強いことがあります。

OpenAI Agents SDK の orchestration ガイドでも、オーケストレーションには大きく

  1. LLM に判断させる方法
  2. コードで流れを決める方法

があり、それぞれに tradeoff があると整理されています。

この記事では、2026年4月21日時点の OpenAI Agents SDK の公式ドキュメントを中心に、コード主導のオーケストレーションとは何か、LLM 任せとの違い、どんな場面で向くのかを整理します。

コード主導のオーケストレーションとは何か

コード主導のオーケストレーションとは、どの agent をどの順番で走らせるか、どの条件で次へ進むかを、アプリ側のコードで決める設計です。

たとえば次のような流れです。

  1. まず分類 agent に依頼内容を分類させる
  2. その結果が bug なら修正フローへ進む
  3. doc なら記事生成フローへ進む
  4. 修正後は必ず評価 agent を通す
  5. 評価 NG なら再試行、OK なら人間承認へ進む

ここで重要なのは、次に誰へ渡すかLLM がその場で好きに決めるのではなく、コード側が条件分岐として持つことです。

LLM任せのオーケストレーションと何が違うのか

OpenAI の docs では、LLM 主導のオーケストレーションは、agent が tools や handoffs を使って自律的に流れを決める形として説明されています。
一方、コード主導のオーケストレーションは、your code determines the flow という考え方です。

ざっくり違いを表で見るとこうです。

観点 LLM主導 コード主導
次の流れ LLMがその場で判断 コードの条件分岐で決める
柔軟性 高い 中程度
再現性 ぶれやすい 高めやすい
速度・コスト 流れ次第で増減しやすい 予測しやすい
向く場面 曖昧で開いたタスク 明確な分岐や承認フロー

つまり、柔軟性を優先するなら LLM 主導、制御しやすさを優先するならコード主導、という見方ができます。

なぜコード主導が必要になるのか

1. 速度とコストを読みやすくしたい

LLM に flow を全部決めさせると、何回 handoff が起きるか、どこで再試行するか、どの specialist を何回呼ぶかが読みにくくなります。
小さなぶれでも、積み重なると速度やコストに効きます。

コード主導なら、

  • 何回まで再試行するか
  • どの条件で evaluator を通すか
  • 並列にするか逐次にするか

を固定しやすくなります。

2. 危ない操作の承認点を置きたい

本番反映、課金、外部送信、権限変更のような処理は、どこで人間確認を入れるかが大事です。
こうした承認点は、コード主導の方が明示しやすいです。

3. 分岐条件がすでに明確

たとえば、

  • ラベルが billing なら請求担当
  • 優先度が high なら人間レビュー必須
  • 出力が schema 不一致なら再実行

のように分岐条件がはっきりしているなら、LLM に毎回考えさせるより、コードへ置いた方が素直です。

どんな形で使うのか

OpenAI の orchestration docs では、コード主導でよくあるパターンとして次のようなものが挙げられています。

1. 分類して分岐する

最初に structured output でカテゴリを出し、その結果を見てコード側で次の agent を選ぶ形です。

2. 直列にチェーンする

調査 -> 下書き -> 改善 -> 評価 のように、手順をコードでつなぐ形です。

3. evaluator でループする

出力を評価 agent に見せ、NG なら再試行、OK なら次へ進む、という流れです。

4. 並列に走らせる

独立した複数タスクを asyncio.gather のようなコード側の並列処理で走らせる形です。
このときも、誰を並列にするかはコードが決めます。

向いている場面

定型フローがある業務

問い合わせ分類、社内申請、レビュー導線、記事生成フローなど、手順が比較的決まっているものに向いています。

監査や再現性が大事な業務

なぜその agent を呼んだのか なぜ再試行したのか を説明しやすくしたい場面です。

コストを抑えたい業務

不要な specialist 呼び出しや handoff を減らしたいときは、コードで制御する方が読みやすいです。

失敗条件が明確な業務

schema 不一致、禁止操作、評価 NG のように失敗条件が定義しやすい場面は、コード主導と相性がよいです。

向かない場面

一方で、最初から flow を細かく決めにくい仕事には向きません。

たとえば、

  • 何を調べるべきか自体が曖昧な調査
  • 途中で論点が大きく変わる壁打ち
  • かなり開いた創造作業

のような場面では、LLM 主導の柔軟さの方が強いことがあります。

無理にコード主導へ寄せると、分岐だらけでかえって複雑になることもあります。

実務でよくある誤解

1. コード主導ならAIらしさがなくなる

そんなことはありません。
流れ をコードで決めて、各ステップの知的処理 は agent に任せる、という分担ができます。

2. コード主導の方が必ず安全

制御しやすくはなりますが、ルール設計が雑なら危ないです。
危険な tool を開きっぱなしにしていれば、コード主導でも事故は起きます。

3. LLM主導より常に安い

単純なフローなら安くなりやすいですが、コード側で細かく evaluator や retry を組みすぎると、逆に重くなることもあります。

どう判断すればいいか

迷ったら、次の3つで見ると判断しやすいです。

分岐条件が言語化できるか

こういうときはこの agent と短く書けるなら、コード主導に寄せやすいです。

失敗条件が定義できるか

評価 NG や schema mismatch のような条件が明確なら、コードで制御しやすいです。

監査や説明責任が必要か

必要なら、流れをコードに置く価値が高いです。

まとめ

コード主導のオーケストレーションとは、AIエージェント同士の流れや分岐条件を、LLMのその場判断だけでなくコード側で決める設計 です。
柔軟性は少し下がりますが、速度、コスト、再現性、承認フローの明示ではかなり強いです。

大事なのは、

  • どこを LLM に任せるか
  • どこをコードで固定するか
  • どこで評価や人間承認を入れるか

を分けて考えることです。
マルチエージェント全体の前提は マルチエージェントとは?複数のAIエージェントを分けて使う意味と注意点を整理 から、受け渡しは Handoffとは?AIエージェントが役割を受け渡す仕組みを整理 とあわせて読むとつながりやすいです。


参考リンク

あとで見返すならここで保存

読み終わったあとに残しておきたい記事は、お気に入りからまとめて辿れます。