グラフエンジニアリング(Graph Engineering)は、1つのAIモデルの回答品質だけを高めるのではなく、複数のタスクやツールをどのような順序と条件で実行するかを設計するアプローチである。複雑な業務をノードと接続関係で表現すれば、各段階の入力・出力、失敗原因、再試行経路、人による承認ポイントを分けて管理できる。
ただし、この表現はまだ業界全体で合意された単一の標準用語ではない。エージェントワークフロー設計、グラフベースのオーケストレーション、マルチエージェント制御を包括する実務的な概念として理解するのが正確である。
AIエンジニアリングでグラフが登場した背景
AIアプリケーションにおける設計上の関心は、次のように拡張してきた。これは、すべての組織が同様にたどる公式な発展段階というより、相互に補完し合う設計レイヤーである。
| レイヤー | 核心となる問い | 主な設計対象 |
|---|---|---|
| プロンプトエンジニアリング | モデルにどのように指示するか? | 指示文、例、出力形式 |
| コンテキストエンジニアリング | 判断に必要な情報を何で構成するか? | 検索結果、メモリ、ツール結果、システムルール |
| ループエンジニアリング | 計画・実行・検証・修正をどのように繰り返すか? | 反復条件、評価基準、終了条件 |
| グラフエンジニアリング | 複数のタスクと判断主体をどの経路でつなぐか? | ノード、遷移、状態、分岐、並列化、承認 |
プロンプトとコンテキストは、グラフ内でも引き続き必要である。ループもグラフの循環エッジとして表現できる。したがって、グラフエンジニアリングは先行する手法を廃棄する技術ではなく、それらを実行構造の中に配置する上位レベルの設計観点に近い。
グラフエンジニアリングの構成要素
ノード
ノード(Node)は、1つの明確な責任を持つタスク単位である。LLMの呼び出しだけでなく、データベース照会、検索APIの呼び出し、形式検証、計算、ユーザー承認の待機といった通常のコードもノードになり得る。
優れたノードは入力と出力が明確で、独立してテストできる。市場調査のように範囲の広い名前より、指定業界の最新資料の収集、出典の重複除去、主張ごとの根拠確認のように責任を絞るほうがデバッグに有利である。
エッジ
エッジ(Edge)は、あるノードから次のノードへ移動する遷移である。常に同じ次の段階へ移動する固定エッジ、状態を確認して経路を選択する条件付きエッジ、複数のタスクを同時に開始する分岐エッジがある。
状態
状態(State)は、グラフの実行中に共有されるデータである。ユーザーのリクエスト、中間成果物、検索元、エラーコード、承認結果、反復回数などが含まれ得る。
状態は単なる会話履歴とは異なる。どのフィールドが必須なのか、誰が変更できるのか、並列結果をどのように統合するのか、機密情報をいつ削除するのかを、スキーマとルールで定義しなければならない。
条件
条件(Condition)は、次の経路を選択するルールである。出典が3件以上あるかのような決定的条件は、コードで判定できる。一方、根拠が結論を十分に裏付けているかのように意味判断が必要な条件には、モデルによる評価や人によるレビューが必要な場合がある。
単一エージェントより制御しやすい理由
1つのエージェントに調査、分析、作成、検証をすべて任せると、結果が誤っていたときに原因を切り分けにくい。計画の誤りなのか、検索漏れなのか、ツール呼び出しの失敗なのか、根拠のない生成なのかが、1つの実行記録に混在するためである。
タスクをグラフに分解すると、次の項目を段階ごとに管理できる。
- ノードごとに許可されたツールとデータへのアクセス権限を制限する。
- 中間成果物を保存し、独立して評価する。
- 失敗したノードだけを再実行し、コストと時間を削減する。
- 重要な外部操作の直前に人の承認を得る。
- 実行経路、遅延時間、トークン使用量、エラーを追跡する。
しかし、ノードを多く分ければ自動的に信頼性が高まるわけではない。状態の受け渡しが不正確だったり、評価基準が曖昧だったりすると、エラーが複数の段階にわたって増幅される可能性がある。
代表的なグラフ活用パターン
ルーターパターン
ルーターは、リクエストの種類やリスクの度合いに応じて異なる経路を選択する。たとえば、返金に関する問い合わせはポリシー検索ノードへ、技術的な障害は診断ノードへ送ることができる。
ルーティング基準が単純なキーワードやアカウント状態であれば、コードが適している。文脈を解釈する必要がある場合はモデル分類を使用できるが、信頼度が低いときにデフォルト経路や人によるレビューへ送る安全策が必要である。
並列実行パターン
相互に依存しないタスクを同時に実行した後、集約ノードで結合する。市場、顧客、競合他社の調査を並列で実行する方式が代表的である。
並列化は遅延時間を短縮できるが、呼び出し回数と瞬間的なコストは増加する。結果が同じ状態フィールドを同時に変更する場合は、競合解決ルールとマージ順序も定めなければならない。
生成者・評価者パターン
生成者が草案を作成し、評価者が基準に従って合格、修正、または再作成を決定する。評価結果が生成者に戻るため、グラフ内にループが形成される。
評価者もLLMであれば、誤った判定をする可能性がある。可能な項目は、スキーマ検査、テスト実行、引用URLの確認といった決定的な検証で補完し、最大反復回数を設定して無限ループを防がなければならない。
ユーザー承認パターン
外部システムの変更、メッセージ送信、決済、デプロイのように、元に戻すことが難しい、または責任の重い操作の前に実行を中断し、人の判断を待つ。承認画面には最終結果だけを表示するより、実行する操作、使用するデータ、予想される影響、元に戻す方法を併せて提示するほうが安全である。
管理者・専門家パターン
管理者ノードがタスクを分解し、検索、分析、作成などの専門ノードに割り当てた後、結果を取りまとめる。役割分担は有用だが、エージェント数を増やすこと自体が目標になってはならない。固定された手順には、明示的なワークフローのほうが予測可能な場合がある。
AI、コード、人の役割を分ける原則
| タスクの性質 | 優先手段 | 例 |
|---|---|---|
| 結果が同一であるべき明確なルール | 通常のコード | 件数計算、日付比較、JSONスキーマ検査 |
| 自然言語の意味と曖昧さを扱う判断 | AIモデル | 意図分類、要約、草案作成、定性評価 |
| 責任・倫理・高リスクの判断が必要な決定 | 人 | 外部送信の承認、例外の許可、高リスク措置の承認 |
ルールが明確であるにもかかわらずLLMを使用すると、コスト、遅延、非決定性が不必要に増加する。反対に、すべての判断をコードのルールに固定すると、表現が多様な実際の入力を処理しにくい。優れたグラフは3つの手段の長所を組み合わせ、それぞれの境界で入力と出力を検証する。