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

LLM主導のオーケストレーションとは?AIエージェントが流れを判断する設計を整理

LLM主導のオーケストレーションとは何かを、コード主導との違い、agents as toolsやhandoffとの関係、向く場面と注意点まで整理します。

先に要点

  • LLM主導のオーケストレーションは、LLM が状況を見て、どのツールや専門 エージェント を使うかを判断する設計です。
  • 柔軟で開いたタスクに向きますが、呼び出し回数・順番・コスト・実行時間がぶれやすく、選択肢を渡しすぎると誤選択とループが増えます。
  • 渡すツールは目安で 5〜8 個まで、20 個を超えたら分割か絞り込みを検討します。トレースに「同じツールの連打」「max_turns 超過」が出たら選択肢過多のサインです。
  • 書き込み・課金・外部送信・権限変更だけはコードの承認点に落とし、それ以外の探索は LLM に任せる、という境界の引き方が実務では安定します。

前回の コード主導のオーケストレーションとは?AIエージェントの流れをコードで決める設計 では、アプリ側のコードで agent の流れを決める設計を整理しました。 今回はその対になる、LLM主導のオーケストレーションです。

AI エージェントでは、LLM にツールや専門エージェントを渡し、状況に応じて「次に何を使うか」を判断させることがあります。 OpenAI Agents SDK の orchestration guide でも、instructions・tools・handoffs を備えた LLM が、open-ended なタスクに対して自律的に計画し、ツールや handoff を使う形として説明されています。

この記事では、2026年6月時点の OpenAI Agents SDK の公式情報をもとに、LLM主導のオーケストレーションとは何か、コード主導との違い、向く場面と落とし穴、そして「どこまでを LLM に任せ、どこからコードに落とすか」の境界の引き方を、ツール数やログの症状といった具体まで含めて整理します。

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

LLM主導のオーケストレーションとは、AIエージェントが与えられた instructions、tools、handoffs を見て、次に何をするかを LLM 自身に判断させる設計です。

たとえば、ユーザーが「競合サービスを調べて、改善案を出して」と依頼したとします。 LLM主導なら、エージェントは状況に応じて、

  • web search を使って調べる
  • file search で社内資料を見る
  • code execution でデータを集計する
  • report writer agent へ渡す
  • specialist agent を tool として呼ぶ

のような判断を自分で組み立てます。

コード側が「必ずこの順番で実行する」と決めるのではなく、LLM がその場の文脈から手順を選ぶのが特徴です。内部的には、モデルがツールを呼ぶ→結果を受け取る→次の一手を決める、というループ(agent loop)を、最終回答にたどり着くまで繰り返します。このループの上限が後述の max_turns で、無限ループを防ぐ安全弁になります。

コード主導との違い

コード主導では、「分類結果がAならこのagent」「評価NGなら再試行」のように、アプリ側のコードが流れを決めます。 LLM主導では、エージェントに選択肢を渡し、どれを使うかを LLM が判断します。

観点 LLM主導 コード主導
流れの決め方 LLMが文脈から判断する コードの条件分岐で決める
柔軟性 高い 制御しやすい
再現性 ぶれやすい 高めやすい
コストの読みやすさ 呼び出し回数が変動し読みにくい 呼び出し回数を固定でき読みやすい
向く場面 開いた調査、壁打ち、複雑な判断 定型業務、承認フロー、明確な分岐
注意点 選択肢過多で誤選択・ループが増える 分岐設計が硬くなりやすい

どちらが上というより、「どこをAIに判断させ、どこをコードで固定するか」の設計問題です。公式の orchestration guide も両者を対立ではなく組み合わせとして扱い、決定性が欲しい部分はコードに落とすことを勧めています。

LLM主導でよく使われる2つの形

1. Agents as tools

OpenAI Agents SDK では、specialist agent を tool として manager agent に渡す形があります(agent as tool)。 この場合、中心の manager agent はユーザーとの会話を握り続けたまま、必要に応じて専門 agent を tool として呼びます。

たとえば、

  • booking expert
  • refund expert
  • research expert
  • code review expert

のような専門担当を tool として持たせ、必要になったら LLM が選びます。

この形は、最終回答を manager がまとめたいときに向いています。専門 agent は「呼ばれて結果を返す」だけで、会話の主導権は manager に残ります。

2. Handoffs

handoff は、別の専門 agent へ会話の主導権を渡す形です。 OpenAI Agents SDK の docs では、handoffs は専門領域ごとの agent に task を delegate するのに便利だと説明されています。

agents as tools が「呼び出して戻る」に近いのに対し、handoff は「担当を切り替える」に近いです。 LLM主導では、この handoff 先をどれにするかも、モデルが文脈を見て判断します。公式ガイドは、ルーティング自体がワークフローの本質で、以降のやり取りを専門 agent に任せたいときは handoff、会話を奪わせず限定的なサブタスクを処理させたいときは agents as tools、と使い分けを示しています。

LLM主導が向いている場面

手順を固定できない調査

調べてみて初めて次に見るべき資料や論点が分かるタイプ。LLM が状況を見て次の tool や specialist を選べる方が強い。

相談内容が幅広い

サポートや社内ヘルプデスクのように質問の種類が広い場面。細かい分岐を全部コードにするより LLM に triage させる方が自然。

創造的・探索的なタスク

新規事業案、設計レビュー、文章改善など途中で方向が変わる作業。コードで固定しすぎると窮屈になる。

例外が多い業務

条件分岐をコードにすると膨らみすぎる業務。LLM主導で大まかに判断させる価値がある。

落とし穴1: 選択肢を渡しすぎると誤選択が増える

LLM主導でいちばん多い失敗が、ツール・handoff・specialist を「便利そうだから」と片端から渡してしまうことです。選択肢が増えるほど判断は楽になりそうに見えますが、実際には誤選択と無駄な呼び出しが増えます。OpenAI Agents SDK の orchestration guide が最初に挙げる助言も「Invest in good prompts. Make it clear what tools are available, how to use them, and what parameters it must operate within(どのツールがあり、どう使い、どの範囲で動くべきかを明確にせよ)」です。選択肢の数と説明の質が、そのまま選択の質に効きます。

ツール数の目安

経験則として、1つのエージェントに渡すツールは 5〜8 個までに収めると、説明とユースケースを衝突なく書き分けられます。10 個を超えたあたりから「機能が似たツール」が混じり始め、20 個を超えると、人間が読んでも「どれを使うべきか」を即答できなくなります。人間が一覧を見て迷う構成は、LLM も同じように迷います。ツールが 20 個必要になったら、1つの巨大エージェントに全部持たせるのではなく、領域ごとにエージェントを分けて handoff でつなぐ、あるいはコード側で文脈に応じて渡す候補を絞る設計に切り替えるサインです。

「選択肢過多」のログ症状

選択肢過多は、トレースを見ると次のような症状で現れます。観測ツール(LangSmith、Langfuse、SDK 標準のトレースなど)で1リクエストの中身を開くと見分けがつきます。

同じツールの連打

同一の searchfile_search を、引数だけ少し変えて3回・4回と呼ぶ。1ステップで決められず「とりあえず叩いて様子を見る」状態。

ターン数の肥大

1依頼で通常3〜5ターンのところが10ターンを超え、最後に max_turns 超過で打ち切られる。SDK は上限を超えると MaxTurnsExceeded を投げる。

似たツールの取り違え

get_userget_customer のように説明が似たツールを、目的と違う方で呼ぶ。説明文の差が曖昧なほど起きやすい。

トークン消費の急増

ツール定義(スキーマ)は毎ターン system 側に載るため、ツールが多いほど入力トークンが膨らむ。1リクエストの入力トークンが想定の2〜3倍なら定義過多を疑う。

確認手順はシンプルです。失敗・遅延したリクエストのトレースを開き、(1) ツール呼び出しの回数と種類、(2) 同じツールの重複、(3) 最終ターン数を見ます。回避策は、渡すツールを 5〜8 個に絞る、説明文を「いつ使い・いつ使わないか」まで書く、機能が似たツールは統合するか名前と説明で差を際立たせる、max_turns を業務に合わせて明示設定する(例: 単純Q&Aなら 6、深い調査なら 15 など)、の順です。

落とし穴2: 境界をどこに引くか — コード主導と混ぜる

実務のエージェントは「全部 LLM 主導」か「全部コード主導」かの二択にはなりません。鍵は、どの操作だけをコードに落とすかの境界をはっきりさせることです。判断の自由は LLM に残しつつ、取り返しのつかない操作だけコードの関門を通します。

コードに落とすべき操作の見分け方

目安は「失敗したときに取り消せるか」「外部に影響が出るか」です。読み取り・検索・要約・下書き生成のような可逆で内部的な操作は LLM に任せて構いません。一方、次のような不可逆・対外的な操作は、LLM の流れ任せにせず、コード側の承認点に固定します。

  • 本番データベースへの書き込み・削除
  • 課金・返金・送金などの決済
  • メール送信・チャット投稿など外部への送信
  • 権限変更・公開設定の変更・デプロイ反映

境界の引き方の一例

たとえば返金サポートのエージェントを考えます。LLM主導の manager agent が会話を受け、「調べる・要約する・返金額を算出する」までは自由に tool を選んで進めます。ここまでは全部可逆なので LLM に任せます。問題は最後の「実際に返金を実行する」ステップです。

ここを LLM のツール呼び出しに直結させず、いったんコードに返す設計にします。具体的には、返金実行ツールを「即実行する関数」ではなく「返金提案(金額・対象・理由を含む構造化データ)を返すだけの関数」にします。LLM はこの構造化データを出力するところまでしか触れません。実際の決済 API を叩くのはアプリ側のコードで、そこに金額上限チェック(例: 1万円超は人間承認に回す)、二重実行防止、人間承認待ちのキューを置きます。

読み込み中...

この形なら、会話の柔軟さは LLM 主導のまま保ちつつ、お金が動く一点だけは決定的なコードで守れます。「どこに知能を置き、どこに関門を置くか」を分けるのが、ハイブリッド設計の核心です。

逆に注意したい場面

1. コストや回数を厳密に管理したい

LLM が自由に tool や sub-agent を選べるほど、呼び出し回数は読みにくくなります。 コスト上限が厳しいなら、コード側で回数や分岐を制御する、max_turns を低めに固定する、軽量モデルにサブタスクを寄せる、といった対策が安全です。

2. 承認フローが重要

本番反映、課金、外部送信、権限変更などは、前述のとおり LLM の流れ任せにしない方がよいです。 人間承認点はコード主導で置く方が明確です。

3. 同じ結果を再現したい

監査や業務フローでは、同じ入力ならだいたい同じ流れで動いてほしいことがあります。 LLM主導は柔軟ですが、そのぶん完全な再現性は持たせにくいです。再現性が要る区間だけコード主導にする切り分けが現実的です。

4. tool の選択肢が多すぎる

ツールや specialist が増えすぎると、LLM が何を使うべきか迷いやすくなります(落とし穴1参照)。 この場合は、ツール一覧を絞る、agent を分ける、コード側で候補を制限する、といった設計が必要です。

実務での設計ポイント

LLM主導にするなら、次を先に決めておくと安定しやすいです。

  • 使わせる tool や specialist を 5〜8 個に絞る
  • 各 tool の説明に「いつ使い・いつ使わないか」を書く
  • handoff 条件を instructions に明記する
  • 完了条件(何を達成すれば終わりか)を明確にする
  • 高リスク操作(書き込み・課金・送信・権限変更)はコード側の承認点で止める
  • max_turns を業務に合わせて設定し、超過時の挙動を決める
  • トレースを定期的に見て、連打・ターン肥大・取り違えを潰す

特に「何でもできる agent」にしすぎないことが大事です。 柔軟さは強みですが、曖昧さと選択肢過多を放置すると、コストと不安定さに変わります。

LLM主導オーケストレーションに関するよくある質問

Q. LLM主導が向いている業務は?

A. カスタマーサポート、リサーチ、文書作成支援、コード生成、Q&A など「毎回フローが違う・ユーザー入力で分岐が変わる」業務です。完全自動化より「人間と対話しながら進める」場面に強いです。

Q. ツールは何個まで渡してよいですか?

A. 1エージェントあたり 5〜8 個を目安にすると、説明とユースケースを衝突なく書き分けられます。10 個前後で機能が似たツールが混じり始め、20 個を超えると人間でも即答できず、LLM の誤選択も増えます。超えたら領域ごとにエージェントを分けるか、コード側で渡す候補を絞ります。

Q. 選択肢を渡しすぎているか、どう見分けますか?

A. トレースに「同じツールの連打」「ターン数の肥大と max_turns 超過」「似たツールの取り違え」「入力トークンの急増」が出たらサインです。失敗・遅延したリクエストのトレースを開き、ツール呼び出しの回数・重複・最終ターン数を確認します。

Q. なぜ予測しづらいのですか?

A. LLM がコンテキストプロンプトモデルバージョン・温度設定など複数要因で出力を変えるためです。同じ入力でも違う結果が出る確率があり、再現性とテスト難易度が高くなります。再現性が要る区間だけコード主導にすると緩和できます。

Q. コストは高いですか?

A. コード主導より高い傾向です。毎回判断するためトークン消費が増え、ツール定義が多いほど毎ターンの入力トークンも膨らみます。プロンプトキャッシュサブエージェントの軽量モデル化、max_turns の上限設定で抑えられます。

Q. ガードレールはどう設計しますか?

A. ツール許可リスト、危険操作の人間承認、コード側での出力検証、最大ステップ数(max_turns)、予算上限で多重防御します。「LLM が自由に判断 = 何でも許可」ではないので、書き込み・課金・送信・権限変更だけはコードの承認点に固定するのが定石です。

Q. オーケストレーターには何モデルを使いますか?

A. 上位の推論モデル(Claude Opus、GPT-5、Gemini Pro 系など)が定番です。「どのツールを使うべきかの判断」には推論力が要るためで、下位モデルだと判断ミスが増えます。一方、定型のサブタスクは軽量モデルに寄せてコストを抑えます。

Q. デバッグはどうしますか?

A. LangSmith、Langfuse、SDK 標準のトレースなどで「各ステップの入出力・ツール呼び出し・判断理由」を可視化します。「なぜそのツールを選んだか」がトレースできると、選択肢過多や説明文の曖昧さなど改善ポイントが見えます。

まとめ

LLM主導のオーケストレーションとは、AIエージェントが文脈を見て、どのツールや専門エージェントを使うかを判断する設計 です。 開いた調査、幅広い相談、探索的なタスクでは強い一方で、コスト、再現性、承認フロー、そして選択肢過多には注意が必要です。

大事なのは、

  • 柔軟に任せる部分(読み取り・検索・要約・下書き)
  • コードで固定する部分(書き込み・課金・送信・権限変更)
  • 人間が確認する部分(高額・不可逆な操作)

を分けることです。ツールは 5〜8 個に絞り、トレースで連打やターン肥大を監視し、お金や本番が動く一点だけコードの関門を通す。これがLLM主導を実務で安定させる勘所です。 対になる設計として、コード主導のオーケストレーションとは?AIエージェントの流れをコードで決める設計 もあわせて読むと、使い分けが見えやすくなります。


参考リンク

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

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