メインコンテンツまでスキップ

ワークフローで活用する(基礎編)

本ページでは、ワークフローでNext Designのモデルデータを横断的に取得・更新するための設定方法と利用方法を解説します。
手順の実現には、Agentiqs上のツール Next Design Functions を使用します。

Next Design Functions とは

Next Design Functionsは、Next Designのモデルデータにアクセスするためのツールです。
ワークフローで、モデルの検索・取得・更新などの操作を実行できます。

今回のゴール

Next Design Functionsを使ったワークフローの構築方法を学び、以下のことができる状態を目指します。

  • Next Design Functionsを使ったワークフローの基本的な作り方がわかる
  • モデル横断で情報を取得し、AIエージェントに作業を依頼できる

処理の流れ

本ページでは、以下の流れで解説します。

  1. Next Design Functionsの基本設定
  2. Next Design Functionsの機能確認
  3. モデル横断で検索してAIエージェントに作業を依頼するワークフローの作成

事前準備

本ページのチュートリアルを実施するには、以下の環境が必要です。

項目要件
AgentiqsV1.1 以上
Next DesignV4 以上
サンプルデータ組込みソフト開発サンプル
サンプルデータについて

組込みソフト開発サンプルは、サンプルデータの「Next Designサンプルデータ」に格納されています。
環境構築の手順はサンプルデータの環境構築方法を参照してください。
本チュートリアルと同じ操作を実施したい場合にご利用ください。

1. Next Design Functionsの基本設定

まず、Next Design Functionsをツールとして追加します。

  1. [ツール] - [新規作成]から[Next Design Functions]を選択します。

2. Next Design Functionsの機能を確認する

ワークフローを作成する前に、Next Design Functionsで利用できる機能を確認しましょう。

  1. まっさらなワークフローに、左側ツールボックスより"ツール実行"をドラッグ&ドロップで配置します。

  2. [ツール名](下図①)で作成したNext Design Functionsを選択します。

  3. [関数名]のドロップダウンリスト(下図②)から、利用できる機能を選択します。

    ヒント

    ワークフローで利用する関数は、ここで表示される一覧から選択します。
    事前に「ツール一覧 - Next Design Functions」から可能な操作を確認しておくと、ワークフロー設計がスムーズになります。

3. ワークフローを作成する

ここでは、以下のワークフローを作成します。

  1. 組込みソフト開発サンプルの指定したクラスからT.B.D.となっているモデルを探索する。
  2. AIエージェントにT.B.D.の内容の更新を依頼する。
本チュートリアルについて

Next Design ワークフローの使い方の一例を学ぶためのサンプルケースです。
実運用では、メタモデル構造に従い、実現したいユースケースに沿ってワークフローを構築してください。

ワークフローの処理の流れ

  1. 対象の親モデルをモデルパスで指定
  2. 親モデル配下のソフトウェア要求モデルを探索
  3. 各モデルの情報を取得し、T.B.D.のモデルのみを抽出
  4. AIエージェントに内容の更新を依頼

事前準備:AIエージェントを作成する

ワークフローの画面を開く前に、今回のワークフローで利用するAIエージェントを作成します。

  1. [エージェント]タブ - [新規作成]から、ギャラリーにある[NextDesignモデル編集]を選択します。

  2. システムプロンプトに以下の内容を記載します。

    【目的】
    - NextDesign上のSoftwareRequirementモデルを点検し、TBD等の未確定記述を自律的に補完して更新する。

ワークフローの作成

  1. ワークフロー編集画面を開き変数を設定する。

    ワークフロー編集画面から[ワークフロー設定] - [入出力パラメータ]を開き、ワークフローで利用する変数を設定します。

    パラメータの設定項目

    ワークフローで利用する変数を初期値と共に設定します。

    プロパティ必須設定項目詳細説明
    変数名parentModelPath後から判別できる、わかりやすい名前にしてください
    説明操作対象の親モデルのパス変数の任意の説明を追加して下さい
    デフォルト値※サンプルデータを利用する場合
    組込みソフト開発/ソフトウェア要求分析/先進運転システムソフト開発/ADAS ECU制御ソフトウェア/アダプティブクルーズコントロール
    入力しておくことで、ワークフロー実行時に毎回入力する手間を省きます
  2. 親モデルを指定する。

    モデルパスを指定して、今回対象とする親モデルを取得します。
    左側ツールボックスから"ツール実行"をドラッグ&ドロップで初めのステップとして配置し、プロパティを設定してください。

    プロパティの設定項目

    モデルパスを指定して親モデルを取得し、変数に格納します。

    プロパティ必須設定項目詳細説明
    タイトル要求モデル一覧取得後から判別できる、わかりやすい名前にしてください。
    説明親モデルパスからSoftwareRequirementを再帰的に取得する
    ツール名Next Design Functions
    関数名パス指定モデル取得モデルパスを指定してモデルを取得する関数を選択します。
    modelPath{{ parentModelPath }}対象とする親モデルのパスを指定します。
    includeFieldsfalsefalseの場合は基本情報のみを取得します。
    結果格納先parentModel実行結果を変数に格納します。
  3. ソフトウェア要求モデルを探索する。

    親モデル配下にあるすべてのソフトウェア要求モデルを探索します。
    "ツール実行"をドラッグ&ドロップで配置し、プロパティを設定してください。

    プロパティの設定項目

    親モデル配下から指定クラスのモデルを探索し、一覧を取得します。

    プロパティ必須設定項目詳細説明
    タイトルSoftwareRequirement検索後から判別できる、わかりやすい名前にしてください。
    説明親モデル配下からSoftwareRequirementクラスのモデルを再帰的に検索する
    ツール名Next Design Functions
    関数名クラス指定子要素検索指定クラスのモデルを探索する関数を選択します。
    parentId{{ parentModel.Id }}手順2で取得した親モデルのIDを指定します。
    classNameSoftwareRequirement探索対象のクラス名を指定します。
    recursivetruetrueの場合、全子孫要素を再帰的に検索します。
    結果格納先requirementIds実行結果を変数に格納します。
  4. ループ処理を設定する。

    手順3で取得したソフトウェア要求モデルに対して、ループ処理を設定します。
    "ループ処理"をドラッグ&ドロップで配置し、プロパティを設定してください。

    プロパティの設定項目

    前のステップで取得したソフトウェア要求モデル一覧(sw_req_list)から1つずつモデルを取得します。

    プロパティ必須設定項目詳細説明
    タイトル要求モデルループ後から判別できる、わかりやすい名前にしてください。
    説明各SoftwareRequirementを確認しTBDなら自律的にAIが補完・更新する
    反復対象{{ requirementIds }}ループ対象のリストデータを渡します。(手順3の出力)
    アイテム変数reqIdループ内で利用する変数名です。(次ステップで利用)
    並列度11の場合は逐次実行になります。
    最大実行回数5000回数が多いと時間がかかるため、デバッグ時は2~5回を指定してください。
    繰り返し方法Listリスト形式で繰り返します。
  5. モデル情報を取得する。

    対象のソフトウェア要求モデルの情報を取得します。
    "ツール実行"をループの子要素にドラッグ&ドロップで配置し、プロパティを設定してください。

    プロパティの設定項目

    ループ中の各ソフトウェア要求モデルの詳細情報を取得します。

    プロパティ必須設定項目詳細説明
    タイトル要求詳細取得後から判別できる、わかりやすい名前にしてください。
    説明対象要求モデルの全フィールド値を取得する
    ツール名Next Design Functions
    関数名モデル取得モデルの詳細情報を取得する関数を選択します。
    modelId{{ reqId }}手順4で設定したアイテム変数を指定します。
    includeFieldstruetrueの場合、モデルの全フィールド値を含めて取得します。
    結果格納先reqModel実行結果を変数に格納します。
  6. T.B.D.モデルのみを抽出する。

    今回はモデル名が T.B.D. のモデルのみを対象とするため、条件分岐を設定します。
    "IF"をループの子要素にドラッグ&ドロップで配置し、プロパティを設定してください。

    プロパティの設定項目

    モデル名が T.B.D. であるかを判定します。

    プロパティ必須設定項目詳細説明
    タイトルTBD判定後から判別できる、わかりやすい名前にしてください。
    説明モデル名にT.B.D.が含まれる場合のみAIエージェントを呼び出す
    条件式{{ string.contains reqModel.Name "T.B.D." }}モデル名にT.B.D.が含まれるかを判定する条件を指定します。
  7. AIエージェントに更新を依頼する。

    手順6の条件分岐で true となった場合に、AIエージェントを呼び出してモデル内容の更新を依頼します。
    "AIエージェント呼び出し"を条件分岐のtrue側にドラッグ&ドロップで配置し、プロパティを設定してください。

    プロパティの設定項目

    T.B.D.のモデルに対して、AIエージェントが内容を補完・更新します。

    プロパティ必須設定項目詳細説明
    タイトルAIエージェント呼び出し後から判別できる、わかりやすい名前にしてください。
    説明TBDと判定されたモデルをAIが自律的に補完・更新する
    エージェント名NextDesign 要求モデル更新アシスタント事前準備で作成したAIエージェントを選択します。
    ユーザーメッセージ以下のSoftwareRequirementモデルを確認し、モデル情報を更新してください。{{ reqModel | to_json }}AIエージェントへの指示を記載します。
    結果格納先aiResultAIエージェントの実行結果を変数に格納します。

これでワークフローの作成は完了です。

実行結果を確認する

組込みソフト開発サンプルでワークフローを実行し、結果を確認してください。

  • 手順3の出力:ソフトウェア要求モデルの一覧が正しく取得されていること
  • 手順5の出力:各モデルの情報が正しく取得されていること
  • 手順6の分岐:T.B.D.のモデルのみがtrue側に分岐していること
  • 手順7の出力:AIエージェントがモデル内容を補完・更新していること
ワークフローの応用

本チュートリアルではT.B.D.のモデルを対象にしましたが、条件分岐の条件式を変更することで、さまざまなモデルを対象にできます。
また、AIエージェントへのプロンプトを変更することで、レビューや要約など異なる作業を依頼することも可能です。

補足

メタモデル構造に合わせた設計

本チュートリアルはサンプルケースです。
実運用でワークフローを構築する際は、対象プロジェクトのメタモデル構造を確認し、適切なクラス名やモデルパスを指定してください。

デバッグ時のループ回数

ワークフローのデバッグ時は、ループの最大実行回数を2~5回に設定することを推奨します。
回数が多いと処理時間が長くなり、トークンの消費量も増加します。
動作確認後に、本番用の回数に変更してください。