Agent Mentor Learn
エージェントワークフローの設計: 単発の会話からマルチステップ自動化へ · 第 2 回 / 全 6 回

レッスン2: ワークフローの構成要素: ステップ、状態、分岐、ループ

学習目標:

  • ワークフローの4つの核となる構成要素をマスターする
  • ステップ間の依存関係とデータの受け渡しを理解する
  • ワークフローの実行フローチャートを設計する方法を学ぶ

前提: レッスン1: 会話からワークフローへ | 次: レッスン3 >>

ワークフローは魔法ではなく、組み合わせである

前回のレッスンで、ワークフローが数十のエージェントを調整して複雑なタスクを完了できることを見ました。しかし、ワークフロースクリプトを開いてみると、それは単なる普通のコードです: 関数、ループ、条件分岐。

ワークフローの力は、4つのシンプルな構成要素を組み合わせることから生まれます:

  1. ステップ — 作業の基本単位
  2. 状態 — ステップ間で共有されるデータ
  3. 分岐 — 条件に基づいて異なるパスを選択する
  4. ループ — 同様の操作を繰り返す

この4つの構成要素を理解すれば、どんな複雑さのワークフローでも設計できます。1

構成要素1: ステップ

ステップはワークフローのアトミックな操作です。 各ステップはエージェント呼び出しか、決定論的な関数のどちらかです。2

エージェントステップ vs 関数ステップ

エージェントステップを使うべき場合:

  • 曖昧な入力を理解する必要がある場合(自然言語、非構造化データ)
  • 創造的なコンテンツを生成する必要がある場合(ドキュメント、コード、説明)
  • 判断を下す必要がある場合(このコードにセキュリティ問題があるか?)

関数ステップを使うべき場合:

  • データ変換(フィルタ、ソート、フォーマット)
  • 数学演算(統計、集計)
  • 条件チェック(if-elseロジック)
  • ファイル操作(読み取り、書き込み、移動)

ベストプラクティス: エージェントステップは推論し、関数ステップは計算する。LLMに単純な配列フィルタや数値の加算をさせないでください — 遅く、高コストで、信頼性が低くなります。2

ステップの入力/出力契約

すべてのステップは明確な入力/出力契約を持つべきです:

明確な契約により、ワークフローは理解しやすく、デバッグしやすくなります。 ステップ5が失敗したとき、ステップ4の出力が間違った形式だったからだとすぐにわかります。3

構成要素2: 状態

状態はステップ間で共有されるデータです。 これはワークフローのメモリのようなもので、中間結果と実行の進捗を保持します。4

2種類の状態

ワークフロー状態:

  • 現在のタスクに関するすべての情報: どのステップにいるか、各ステップの結果、次のステップが何を必要とするか
  • スクリプト変数または外部データベースに保存される
  • ステップ間で受け渡されるが、セッションをまたがない

セッション状態:

  • ユーザーの会話履歴と設定
  • エージェント自身が管理するもので、ワークフローは気にする必要がない4

状態管理パターン

パターン1: スクリプト変数(短いワークフローに適している)

パターン2: 状態オブジェクト(中程度の複雑さに適している)

パターン3: 外部ストレージ(長時間実行されるワークフローに適している)

チェックポイント: 重要なステップの後に状態を保存することで、ワークフローは最初からやり直すのではなく、失敗した時点から再開できます。5

構成要素3: 分岐

分岐は条件に基づいて異なる実行パスを選択します。6

シンプルな分岐

エージェントの判断に基づく分岐

エラーハンドリング分岐

構成要素4: ループ

ループは多くの類似したオブジェクトに対して同じ操作を実行できます。 これがワークフローの力の中核です。6

順次ループ

並列ループ

ここで、limit = 5が並行数の上限です: Promise.allで100個すべてを一度に実行するのではなく、最大5個ずつ実行します。そうしないと、接続やファイルハンドルが多すぎて開いてしまいます。

累積を伴うループ

条件付き終了を伴うループ

構成要素を組み合わせる: 完全なワークフロー

4つの構成要素を組み合わせて、「マイクロサービスヘルスチェック」ワークフローを設計してみましょう:

mermaid
graph TD    A[開始] --> B[すべてのサービスをリスト]    B --> C{10個以上のサービス?}    C -->|はい| D[すべてのサービスを並列チェック]    C -->|いいえ| E[すべてのサービスを順次チェック]    D --> F[結果を収集]    E --> F    F --> G{失敗したサービスがある?}    G -->|はい| H[アラートレポートを生成]    G -->|いいえ| I[ヘルスレポートを生成]    H --> J[通知を送信]    I --> K[終了]    J --> K

対応するスクリプト:

このワークフローは4つの構成要素すべてを使用しています:

  • ステップ: listServicescheckServiceHealthagent()呼び出し
  • 状態: 合計数と健全/不健全リストを保持するstateオブジェクト
  • 分岐: サービス数に基づく並列 vs 順次、健全性ステータスに基づくレポートタイプ
  • ループ: map並列ループ、for順次ループ

ワークフロー設計の考え方

エンドポイントから逆算する:

  1. 最終的な出力は何か?(レポート、デプロイされたサービス、クリーンアップされたコード)
  2. 最後のステップが必要とする入力は何か?(集計データ、検証済み結果)
  3. その入力はどこから来るか?(前のステップの出力)
  4. 開始地点(ユーザー入力またはファイルシステム)に到達するまで繰り返す

並列化の機会を見つける:

  • 複数のステップが互いに依存していない場合、それらは並列で実行できる
  • 「各Xに対してYを実行」は通常並列化できる
  • 並列化により、各5分の10タスクを50分から5分に短縮できる

依存関係を明示的にする:


次: レッスン3: 複雑なタスクをワークフローに分解する — 複雑なタスクを体系的にワークフローステップに分解する戦略

Footnotes

  1. MindStudio: Five Claude Code Agentic Workflow Patterns — https://www.mindstudio.ai/blog/claude-code-agentic-workflow-patterns

  2. Mae Capozzi: Building a Multi-Agent Orchestrator — https://maecapozzi.com/blog/building-a-multi-agent-orchestrator 2

  3. AWS Marketplace: Agent Orchestration — https://aws.amazon.com/marketplace/build-learn/ai-agent-learning-series/agent-orchestration

  4. MindStudio: Workflow State vs. Session State — https://www.mindstudio.ai/blog/workflow-state-vs-session-state-ai-agents 2

  5. MachineLearningMastery: 5 Architectural Patterns for Persistent Memory and State in AI Agents — https://machinelearningmastery.com/5-architectural-patterns-for-persistent-memory-and-state-in-ai-agents/

  6. Alex Op: Claude Code Workflows and Deterministic Orchestration — https://alexop.dev/posts/claude-code-workflows-deterministic-orchestration/ 2

練習

01

タスク: 「バッチ画像処理」ワークフローを設計してください。入力は50枚の画像で、以下を行う必要があります: (1) 800x600にリサイズ、(2) ウォーターマークを追加、(3) WebP形式に変換。

レベル1: シンプルなワークフローを設計する

要件:

  • フローチャートを描く(テキスト説明でも可、例: A → B → C)
  • どのステップが関数を使い、どのステップがエージェントを使うかを述べる
  • どこで並列実行できるかを述べる
  • 疑似コードのコア部分(ループと分岐)を書く
完了基準 · ローカルでチェック
02

「コードベース移行」ワークフローは以下を行う必要があります: (1) 200ファイルをスキャンして移行が必要なAPI呼び出しを見つける、(2) すべてのファイルを並列で移行、(3) テストを実行、(4) テストが失敗した場合、すべての変更をロールバック。

レベル2: 状態管理のニーズを特定する

質問:

  1. このワークフローはどのような状態を保存する必要がありますか? 少なくとも3つの状態フィールドをリストしてください。
  2. どのステップの後にチェックポイントを設定すべきですか? その理由は?
  3. ステップ3(テスト実行)が失敗した場合、ワークフローが正しくロールバックするためにどのような状態情報が必要ですか?
完了基準 · ローカルでチェック