ワークフローとは
Workflow / エージェントワークフロー / AI Workflow
あらかじめ定義された固定の手順に沿ってLLMやツールを呼び出す、定型的な処理の流れ
ひとことで言うと
あらかじめ決めた手順どおりに、AIやツールを順番に動かす処理の流れ。
概要
エージェント文脈でのワークフローとは、あらかじめ人間が定義した固定の手順・分岐に沿って、LLMの呼び出しやツールの実行を順番にこなしていく定型的な処理の流れ。 どの行動を次に取るかをLLM自身がその場で判断しながら進める「自律的なエージェント」と対比される概念で、処理の経路が事前にコード上で決まっているため動作の予測可能性や再現性が高い。 複雑な自律的判断を要さないタスクでは、ワークフロー型の設計の方が単純で信頼性が高いとされる。 エージェントが自律的に判断すべき部分と、固定のワークフローとして流れを固定すべき部分を見極めて組み合わせるハイブリッドな設計も、実運用のシステムでは広く採用されている。
背景
自律的なエージェントは柔軟な反面、行動の予測が難しくデバッグや検証が難しいという課題がある。 定型的な処理で十分なタスクにまで自律的なエージェントを使うと、不必要な複雑さやコスト、予測不可能性を招くことがあるため、手順が事前に分かっているタスクにはあえて自律性を抑えたワークフロー型の設計を選ぶという考え方が整理されるようになった。
アーキテクチャ
定型的な処理ステップ(プロンプトの実行、条件分岐、並列処理、ツール呼び出し等)をあらかじめコードやワークフロー定義として組み立てておき、実行時にはその手順に沿って各ステップを順番にこなす。 ステップの中でLLM呼び出しを使う場合もあるが、次にどのステップへ進むかという制御フロー自体は、LLMの自律判断ではなく事前に定義された条件によって決まる。
ワークフロー
タスクの手順・分岐をコードやワークフロー定義として事前に設計 → 各ステップでLLM呼び出しやツールを実行 → あらかじめ定義された条件に従い次のステップへ遷移 → 全ステップ完了後に最終結果を出力する。
コード例
条件分岐を含む固定手順のワークフローの例
def run_workflow(input_text: str, llm) -> str:
summary = llm.complete(f"要約してください: {input_text}")
if len(summary) > 200:
summary = llm.complete(f"次をさらに短く要約してください: {summary}")
translated = llm.complete(f"次を英語に翻訳してください: {summary}")
return translated利点
- 処理の経路が事前に決まっているため、動作の予測可能性・再現性・デバッグのしやすさが高い
- 自律的な判断ループを都度回す必要がなく、単純なタスクではコスト・レイテンシを抑えやすい
- 各ステップの入出力が明確なため、単体テストや監視の仕組みを組み込みやすい
欠点
- 事前に想定していない状況や例外的な入力への柔軟な対応が難しい
- タスクの手順が複雑・可変になるほど、ワークフローの定義自体が複雑になりメンテナンスコストが増える
- 手順自体を人間があらかじめ設計しておく必要があり、想定していなかった種類のタスクには別途手順を追加しなければならない
比較
関連用語
よくある質問
ワークフローとエージェントはどちらを使うべき?
タスクの手順があらかじめ明確で予測可能な場合はワークフロー、状況に応じた柔軟な判断が必要な場合はエージェントが適するとされ、実務では両者を組み合わせることも多い。