公開:2026年1月14日

23分で読めます

フローを理解する:マルチエージェントワークフロー

GitLab Duo Agent Platformのフローを詳しく解説。基本フロー、カスタムユーザー定義ワークフローの作成、フローオーケストレーションパターンについて学びます。

8部構成ガイド「GitLab Duo Agent Platformを始める」のパート4へようこそ。開発ライフサイクル内でのAIエージェントとワークフローの構築・デプロイをマスターします。最初の対話から完全カスタマイズ可能なプロダクション対応の自動化ワークフローまで、段階的なチュートリアルに従ってください。

この記事の内容:

🎯 今すぐGitLab Duo Agent Platformをお試しください!

フローの紹介

フローは、1つ以上のエージェントが協働する組み合わせです。複雑な問題を解決するために複数ステップのワークフローを調整し、GitLabプラットフォームコンピュート上で実行されます。

フローの主な特徴:

  • マルチエージェントオーケストレーション: 複数の専門エージェントを組み合わせ
  • ビルトイン: プラットフォームコンピュート上で実行、追加環境不要
  • イベント駆動: メンション、割り当て、レビュアーとしての割り当てでトリガー
  • 非同期: 作業を続けながらバックグラウンドで実行
  • 完全なワークフロー: 分析から実装までエンドツーエンドのタスクを処理

フローは、情報収集から意思決定、変更の実行、結果の提供まで、すべて自動で行う自律的なワークフローです。あなたは他の作業に集中できます。

フロー vs. エージェント: 違いを理解する

エージェントはあなたと対話的に作業します。フローはあなたのために自律的に作業します。

側面エージェントフロー
インタラクション対話型チャット自律的な実行
使用タイミング質問、ガイダンス、対話的なタスク実行自律的な複数ステップワークフロー
ユーザーの関与アクティブな会話トリガーと結果のレビュー
実行時間リアルタイム応答バックグラウンド処理
複雑さ単一エージェントタスクマルチエージェントオーケストレーション

フロータイプの概要

タイプインターフェースメンテナーユースケース
基本フローUIアクション、IDEインターフェースGitLabソフトウェア開発、イシュー内のデベロッパー、CI/CDパイプライン修正、GitLab CI/CDへの変換、コードレビュー、SAST誤検知判定
カスタムフローメンション、割り当て、レビュアー割り当て自分例: 大規模な移行/最新化、リリース自動化、依存関係更新管理

基本フロー

基本フローは、GitLabが作成・保守するプロダクション対応のワークフローです。専用のUIコントロールまたはIDEインターフェースからアクセスできます。

現在利用可能な基本フロー

フロー利用可能な場所アクセス方法最適な用途
ソフトウェア開発フローIDE(VS Code、JetBrains、Visual Studio)IDEのFlowsタブ機能実装、複雑なリファクタリング、複数ファイルの変更
デベロッパーフローGitLab Web UIイシューの「Duoでマージリクエストを生成」ボタン明確に定義された機能、明確な手順のあるバグ修正
CI/CDパイプライン修復フローGitLab Web UI失敗したパイプラインインターフェースパイプラインデバッグ、CI/CD設定の問題
GitLab CI/CD変換フローGitLab Web UIJenkinsfileの「Convert to GitLab CI/CD」ボタンJenkinsからGitLab CI/CDへの移行
コードレビューフローGitLab Web UIMRでレビュアーとして割り当てAIネイティブ分析とフィードバックによる自動コードレビュー
SAST誤検出判定フローGitLab Web UIセキュリティスキャン結果SAST検出結果の誤検知を自動的に特定してフィルタリング

カスタムフロー

カスタムフローは、チームの特定のニーズに合わせて作成するYAML定義のワークフローです。GitLab Runnerで実行され、GitLabイベントによってトリガーできます。

🎯 今すぐ試す:カスタムフローのインタラクティブデモ — カスタムフローの作成と設定方法を探索します。

カスタムフローを作成する理由

カスタムフローは、チームのワークフローに固有の反復的な複数ステップタスクを自動化します。一般的な目的に使用される基本フローとは異なり、カスタムフローは組織のプロセス、ツール、要件に合わせて調整されます。

一般的なユースケース:

  • 自動コードレビュー: 複数段階のレビュープロセス(セキュリティスキャン → 品質チェック → スタイル検証)
  • コンプライアンスチェック: 各MRで規制要件、ライセンスコンプライアンス、セキュリティポリシーを確認
  • ドキュメント生成: コード変更に基づいてAPIドキュメント、READMEファイル、変更ログを自動更新
  • 依存関係管理: 週次セキュリティスキャン、自動更新、脆弱性レポート
  • カスタムテスト: 技術スタック用の特殊なテストスイートまたは統合テスト

実例

フィンテック企業は、すべてのマージリクエストで実行されるコンプライアンスフローを作成します。@compliance-flowでトリガーされると、フローは次のステップを実行します。

  1. セキュリティエージェントがPCI-DSS違反のコードをスキャンし、露出した機密データをチェックします。
  2. コードレビューエージェントが変更がセキュアコーディング標準とベストプラクティスに従っていることを確認します。
  3. ドキュメントエージェントがAPI変更に更新されたドキュメントが含まれているかチェックします。
  4. サマリーエージェントが検出結果を集約し、合格/不合格ステータスのコンプライアンスレポートを投稿します。

コンプライアンスレビュー全体が5〜10分で自動的に実行され、すべてのマージリクエストで一貫したチェックが提供されます。

カスタムフローのトリガー方法

カスタムフローは複数の方法でトリガーできます。

1. イシュー/MRでのメンション: コメントでフローをメンションしてトリガーします。ドキュメント生成フローの例:

      @doc-generator Generate API documentation for this feature

    

2. イシューまたはMRへのフローの割り当て: 次のいずれかを使用してフローを割り当てます。

  • GitLab UI: イシュー/MRの「アサイン」ボタンをクリックしてフローを選択
  • コマンド: コメントで/assignコマンドを使用。例:
      /assign @doc-generator

    

3. レビュアーとしてのフローの割り当て: 次のいずれかを使用してマージリクエストにレビュアーとしてフローを割り当てます。

  • GitLab UI: マージリクエストの「レビュアーをアサインする」ボタンをクリックしてフローを選択
  • コマンド:コメントで/assign_reviewerコマンドを使用。例:
      /assign_reviewer @doc-reviewer

    

これらの方法のいずれかにより、フローが自動的にトリガーされ、タスクを実行します。

カスタムフローの作成方法

カスタムフローは、プロジェクトの自動化 → フロー → 新しいフロー、または検索 → AIカタログ → フロー → 新しいフローからGitLab UIを通じて作成されます。コンポーネント、プロンプト、ルーティング、実行フローを指定するYAML設定を使用してフローを定義します。YAMLスキーマにより、エージェントの動作とオーケストレーションを正確に制御できる洗練されたマルチエージェントワークフローを作成できます。

カスタムフローの主要要素:

  • コンポーネント: ワークフロー内のエージェントとステップを定義
  • プロンプト: AIモデルの動作と指示を設定
  • ルーター: コンポーネント間のフローを制御
  • ツールセット: エージェントが使用できるGitLab APIツールを指定

カスタムフローYAMLの例

背景: この例は、旅行予約プラットフォームの機能実装フローを示しています。デベロッパーが機能要件を含むイシューを作成すると、このフローをトリガーして、要件の分析、コードベースのレビュー、ソリューションの実装、マージリクエストの作成まで、すべて手動介入なしで自動的に実行できます。 YAML設定は次のとおりです。

      version: "v1"
environment: ambient
components:
  - name: "implement_feature"
    type: AgentComponent
    prompt_id: "implementation_prompt"
    inputs:
      - from: "context:goal"
        as: "user_goal"
      - from: "context:project_id"
        as: "project_id"
    toolset:
      - "get_issue"
      - "get_repository_file"
      - "list_repository_tree"
      - "find_files"
      - "blob_search"
      - "create_file"
      - "create_commit"
      - "create_merge_request"
      - "create_issue_note"
    ui_log_events:
      - "on_agent_final_answer"
      - "on_tool_execution_success"
      - "on_tool_execution_failed"

prompts:
  - name: "Cheapflights Feature Implementation(Cheapflights機能実装)"
    prompt_id: "implementation_prompt"
    unit_primitives: []
    prompt_template:
      system: |
        You are an expert full-stack developer specializing in travel booking platforms, specifically Cheapflights(あなたは旅行予約プラットフォーム、特にCheapflightsを専門とするエキスパートフルスタックデベロッパーです).

        Your task is to(あなたのタスクは以下のとおりです):
        1. Extract the issue IID from the goal (look for "Issue IID: XX")
        2. Use get_issue with project_id={{project_id}} and issue_iid to retrieve issue details
        3. Analyze the requirements for the flight search feature
        4. Review the existing codebase using list_repository_tree, find_files, and get_repository_file
        5. Design and implement the solution following Cheapflights best practices
        6. Create all necessary code files using create_file (call multiple times for multiple files)
        7. Commit the changes using create_commit
        8. Create a merge request using create_merge_request
        9. Post a summary comment to the issue using create_issue_note with the MR link

        1. ゴールからイシューIIDを抽出する(「Issue IID: XX」を探す)
        2. project_id={{project_id}}とissue_iidを使用してget_issueでイシューの詳細を取得
        3. フライト検索機能の要件を分析
        4. list_repository_tree、find_files、get_repository_fileを使用して既存のコードベースをレビュー
        5. Cheapflightsのベストプラクティスに従ってソリューションを設計・実装
        6. create_fileを使用して必要なコードファイルをすべて作成(複数ファイルの場合は複数回呼び出し)
        7. create_commitを使用して変更をコミット
        8. create_merge_requestを使用してマージリクエストを作成
        9. create_issue_noteを使用してMRリンク付きの概要コメントをイシューに投稿

        Cheapflights Domain Expertise(Cheapflightsドメインの専門知識):
        - Flight search and booking systems (Amadeus, Sabre, Skyscanner APIs)
        - Fare comparison and pricing strategies
        - Real-time availability and inventory management
        - Travel industry UX patterns
        - Performance optimization for high-traffic flight searches

        - フライト検索・予約システム(Amadeus、Sabre、Skyscanner API)
        - 運賃比較と価格戦略
        - リアルタイムの空席状況と在庫管理
        - 旅行業界のUXパターン
        - 高トラフィックのフライト検索のためのパフォーマンス最適化

        Code Standards(コーディング基準):
        - Clean, maintainable code (TypeScript/JavaScript/Python/React)
        - Proper state management for React components
        - RESTful API endpoints with comprehensive error handling
        - Mobile-first responsive design
        - Proper timezone handling (use moment-timezone or date-fns-tz)
        - WCAG 2.1 accessibility compliance

        - クリーンで保守性の高いコード(TypeScript/JavaScript/Python/React)
        - Reactコンポーネントの適切な状態管理
        - 包括的なエラーハンドリングを備えたRESTful APIエンドポイント
        - モバイルファーストのレスポンシブデザイン
        - 適切なタイムゾーン処理(moment-timezoneまたはdate-fns-tzを使用)
        - WCAG 2.1アクセシビリティ準拠

        Flight-Specific Best Practices(フライト固有のベストプラクティス):
        - Accurate fare calculations (base fare + taxes + fees + surcharges)
        - Flight duration calculations across timezones
        - Search filter logic (price range, number of stops, airlines, departure/arrival times)
        - Sort algorithms (best value, fastest, cheapest)
        - Handle edge cases: date line crossing, daylight saving time, red-eye flights
        - Currency amounts use proper decimal handling (avoid floating point errors)
        - Dates use ISO 8601 format
        - Flight codes follow IATA standards (3-letter airport codes)

        - 正確な運賃計算(基本運賃 + 税金 + 手数料 + 追加料金)
        - タイムゾーンをまたぐフライト時間の計算
        - 検索フィルターロジック(価格帯、経由便数、航空会社、出発/到着時刻)
        - ソートアルゴリズム(ベストバリュー、最速、最安値)
        - エッジケースの処理: 日付変更線の通過、サマータイム、深夜便
        - 通貨金額は適切な小数処理を使用(浮動小数点エラーを回避)
        - 日付はISO 8601形式を使用
        - フライトコードはIATA標準に従う(3文字の空港コード)

        Implementation Requirements(実装要件):
        - No TODOs or placeholder comments
        - All functions must be fully implemented
        - Include proper TypeScript types or Python type hints
        - Add JSDoc/docstring comments for all functions
        - Comprehensive error handling and input validation
        - Basic unit tests for critical functions
        - Performance considerations for handling large result sets

        - To-Doやプレースホルダーコメントは不可
        - すべての関数を完全に実装
        - 適切なTypeScript型またはPython型ヒントを含める
        - すべての関数にJSDoc/docstringコメントを追加
        - 包括的なエラーハンドリングと入力検証
        - 重要な関数の基本的な単体テスト
        - 大規模な結果セットを処理するためのパフォーマンス考慮

        CRITICAL - Your final comment on the issue MUST include(重要 - イシューへの最終コメントには以下を必ず含める):
        - Implementation Summary: Brief description of what was implemented
        - Files Created/Modified: List of all files with descriptions
        - Key Features: Bullet points of main functionality
        - Technical Approach: Brief explanation of architecture/patterns used
        - Testing Notes: How to test the implementation
        - Merge Request Link: Direct link to the created MR (format: [View Merge Request](MR_URL))

        - 実装概要: 実装内容の簡潔な説明
        - 作成/変更されたファイル: すべてのファイルのリストと説明
        - 主要機能: 主な機能の箇条書き
        - 技術的アプローチ: アーキテクチャ/パターンの簡潔な説明
        - テストに関する注意事項: 実装のテスト方法
        - マージリクエストリンク: 作成されたMRへの直接リンク(形式: [マージリクエストを見る](MR_URL))

        IMPORTANT TOOL USAGE(重要なツールの使用方法):
        - Extract the issue IID from the goal first (e.g., "Issue IID: 12" means issue_iid=12)
        - Use get_issue with project_id={{project_id}} and issue_iid=<extracted_iid>
        - Create multiple files by calling create_file multiple times (once per file)
        - Use create_commit to commit all files together with a descriptive commit message
        - Use create_merge_request to create the MR and capture the MR URL from the response
        - Use create_issue_note with project_id={{project_id}}, noteable_id=<issue_iid>, and body=<your complete summary with MR link>
        - Make sure to include the MR link in the comment body so users can easily access it

        - まずゴールからイシューIIDを抽出(例: 「Issue IID: 12」はissue_iid=12を意味する)
        - project_id={{project_id}}とissue_iid=<抽出したiid>でget_issueを使用
        - create_fileを複数回呼び出して複数のファイルを作成(ファイルごとに1回)
        - create_commitを使用して、わかりやすいコミットメッセージですべてのファイルを一緒にコミット
        - create_merge_requestを使用してMRを作成し、レスポンスからMR URLを取得
        - project_id={{project_id}}、noteable_id=<issue_iid>、body=<MRリンクを含む完全な概要>でcreate_issue_noteを使用
        - ユーザーが簡単にアクセスできるように、コメント本文にMRリンクを必ず含める

      user: |
        Goal: {{user_goal}}
        Project ID: {{project_id}}

        Please complete the following steps(以下の手順を完了してください):
        1. Extract the issue IID and retrieve full issue details
        2. Analyze the requirements thoroughly
        3. Review the existing codebase structure and patterns
        4. Implement the feature with production-ready code
        5. Create all necessary files (components, APIs, tests, documentation)
        6. Commit all changes with a clear commit message
        7. Create a merge request
        8. Post a detailed summary comment to the issue including the MR link

        1. イシューIIDを抽出し、イシューの詳細を取得
        2. 要件を徹底的に分析
        3. 既存のコードベース構造とパターンをレビュー
        4. 本番環境対応のコードで機能を実装
        5. 必要なすべてのファイルを作成(コンポーネント、API、テスト、ドキュメント)
        6. 明確なコミットメッセージですべての変更をコミット
        7. マージリクエストを作成
        8. MRリンクを含む詳細な概要コメントをイシューに投稿

      placeholder: history
    params:
      timeout: 300

routers:
  - from: "implement_feature"
    to: "end"

flow:
  entry_point: "implement_feature"

    

このフローの機能: このフローは、AIエージェントがイシュー要件の分析、コードベースのレビュー、ドメイン知識に基づく本番環境対応コードの作成、詳細なサマリー付きマージリクエストの作成まで、機能実装を自動で行います。

完全なドキュメントと例については、以下を参照してください。

フローの実行

フローはGitLabプラットフォームコンピュート上で実行されます。イベント(メンション、割り当て、ボタンクリック)によってトリガーされると、セッションが作成され、フローが実行を開始します。

利用可能な環境変数

フローは、トリガーとGitLabオブジェクトに関するコンテキストを提供する環境変数にアクセスできます。

  • AI_FLOW_CONTEXT — MR差分、イシュー説明、コメント、ディスカッションスレッドを含むJSON形式のコンテキスト
  • AI_FLOW_INPUT — フローをトリガーしたユーザーのプロンプトまたはコメントテキスト
  • AI_FLOW_EVENT — フローをトリガーしたイベントタイプ(mentionassignassign_reviewer)

これらの変数により、フローは何がトリガーしたかを理解し、関連するGitLabデータにアクセスしてタスクを実行できます。

マルチエージェントフロー

カスタムフローには、順次連携する複数のエージェントコンポーネントを含めることができます。フローのYAML設定は次を定義します。

  • コンポーネント: 1つ以上のエージェント(AgentComponent)または決定論的ステップ
  • ルーター: コンポーネント間のフローを定義(例: コンポーネントAからコンポーネントBから終了へ)
  • プロンプト: 各エージェントの動作とモデルを設定

たとえば、コードレビューフローには、セキュリティエージェント、次に品質エージェント、次に承認エージェントがあり、ルーターがそれらを順番に接続します。

フロー実行の監視

プロジェクトで実行中のフローを表示するには:

  1. 自動化セッションに移動します。
  2. 任意のセッションを選択して詳細を表示します。
  3. 詳細タブにCI/CDジョブログへのリンクが表示されます。

セッションには、ステップバイステップの進行状況、ツール呼び出し、推論、意思決定プロセスを含む詳細情報が表示されます。

フローを使用するタイミング

  • 複雑な複数ステップのタスク
  • バックグラウンド自動化
  • イベント駆動ワークフロー
  • 複数ファイルの変更
  • 時間がかかるタスク
  • 自動レビュー/チェック

次のステップ

フローの概念、作成方法、エージェントとの使い分けを理解しました。次に、パート5: AIカタログで組織全体でエージェントとフローを検索、作成、共有する方法を学びます。AIカタログを活用して、利用可能なフローとエージェントの閲覧、プロジェクトへの追加、独自コンテンツの公開を行います。

関連リンク


次へ: パート5: AIカタログ

前へ: パート3: エージェントを理解する

ご意見をお寄せください

このブログ記事を楽しんでいただけましたか?ご質問やフィードバックがあればお知らせください。GitLabコミュニティフォーラムで新しいトピックを作成してあなたの声を届けましょう。

フィードバックを共有する

より優れたソフトウェアをより速く提供

インテリジェントなDevSecOpsプラットフォームで

チームの可能性を広げましょう。