- はじめに
- 開発
- デプロイして実行する
- 例
- 参照
最初のワークフロー
2 つの API 呼び出し、1 つの意思決定を行う AI エージェント、2 つのブランチを含む受注ワークフローを構築し、テストして、コーディング エージェントを使用するかキャンバスにデプロイします。
このチュートリアルでは、Maestro Automate受注ワークフローを構築します。と説明する。このワークフローでは、新しい注文ごとに在庫と顧客の信用がチェックされ、AI エージェントが注文を受け入れるかどうかを判断してから、注文を作成するか、営業担当者に通知します。
チュートリアルの所要時間は約 15 分です。株式および信用調査では、dummyjson.com無料のサンプル API であるため、アカウントや別のアプリの API キーは必要ありません。最後の 2 つの手順は、顧客関係管理 (CRM) と Slack の代わりとなるスクリプトであるため、ワークフローはこれらのアプリに接続せずに実行されます。上のスクリーンショットは、 Notify sales rep を Slack コネクタとして示しています。これは実際のワークフローにおける動作です。
ワークフローは次の 2 つの方法で構築できます。いずれかを選択すると、ページの残りの部分があなたの選択に従います。
- コーディング エージェントを使用する場合: ワークフローの説明を入力すると、エージェントが構築します。
- キャンバス上で手動で: 各ノードを自分で追加および設定します。
開始する前に
- UiPath アカウント。登録 作成 方法について説明しています。
- UiPath CLI とスキルを持つコーディング エージェント。コーディング エージェントを設定するには 、3 つのステップで準備を整えます。
- VS Code と UiPath Maestro 拡張機能を使用して、ワークフローをキャンバス上に表示します。VS Code でビルドする インストール 方法について説明しています。
1. ワークフローを構築する
-
プロジェクトの空のフォルダーを作成し、VS Code で開きます。
-
そのフォルダーでコーディング エージェントを起動します。たとえば、Claude Code の場合は、VS Code ターミナルで
claudeを実行します。 -
このプロンプトを貼り付けます。
Create a Maestro Automate project named OrderIntake with a workflow that does exactly this. Don't add, remove, or rename nodes. 1. Rename the Manual trigger to "New order", set its ID to newOrder, and add two input arguments: productId (number) and customerId (string). 2. Add an HTTP Request node "Check stock" (ID checkStock), GET, with the URL as an expression: "https://dummyjson.com/products/" + $vars.newOrder.output.productId 3. Add an HTTP Request node "Check credit" (ID checkCredit), GET https://dummyjson.com/users/1 4. Add an Autonomous Agent node "Review order" (ID reviewOrder) with the default model. System prompt: "You review new customer orders. Accept an order only if the product has stock greater than 0 and the customer record is present. Otherwise reject it. Always give a short reason." Give the agent the response body of Check stock as the product, and the response body of Check credit as the customer. Output variables: accepted (boolean) and reason (string). 5. Add a Decision node "Accepted?" (ID accepted) with the condition $vars.reviewOrder.output.accepted 6. On True, add a Script node "Create order in CRM" (ID createOrderInCrm): return { orderCreated: true, productId: $vars.newOrder.output.productId }; 7. On False, add a Script node "Notify sales rep" (ID notifySalesRep): return { notified: true, reason: $vars.reviewOrder.output.reason }; The order is: New order → Check stock → Check credit → Review order → Accepted? → True: Create order in CRM, False: Notify sales rep. dummyjson.com is a public sample API, so these URLs work as they are. Then validate the workflow and fix any problems.Create a Maestro Automate project named OrderIntake with a workflow that does exactly this. Don't add, remove, or rename nodes. 1. Rename the Manual trigger to "New order", set its ID to newOrder, and add two input arguments: productId (number) and customerId (string). 2. Add an HTTP Request node "Check stock" (ID checkStock), GET, with the URL as an expression: "https://dummyjson.com/products/" + $vars.newOrder.output.productId 3. Add an HTTP Request node "Check credit" (ID checkCredit), GET https://dummyjson.com/users/1 4. Add an Autonomous Agent node "Review order" (ID reviewOrder) with the default model. System prompt: "You review new customer orders. Accept an order only if the product has stock greater than 0 and the customer record is present. Otherwise reject it. Always give a short reason." Give the agent the response body of Check stock as the product, and the response body of Check credit as the customer. Output variables: accepted (boolean) and reason (string). 5. Add a Decision node "Accepted?" (ID accepted) with the condition $vars.reviewOrder.output.accepted 6. On True, add a Script node "Create order in CRM" (ID createOrderInCrm): return { orderCreated: true, productId: $vars.newOrder.output.productId }; 7. On False, add a Script node "Notify sales rep" (ID notifySalesRep): return { notified: true, reason: $vars.reviewOrder.output.reason }; The order is: New order → Check stock → Check credit → Review order → Accepted? → True: Create order in CRM, False: Notify sales rep. dummyjson.com is a public sample API, so these URLs work as they are. Then validate the workflow and fix any problems.エージェントがプロジェクトを作成し、ノードを追加して、ワークフローを検証します。途中で質問をするかもしれません。プロンプトから回答してください。
-
エージェントが完了したら、エクスプローラーから
.flowファイルを開きます。フロー キャンバス上で開きます。 -
結果を確認する:
- キャンバスは、このページの上部にあるワークフローと一致します。
- 警告アイコンを表示したノードがなく、[ 問題] パネルは空です。
- 下部のツールバーに Maestro Automate が表示されます。[Maestro Orchestrate] と表示されている場合は、それを選択して [Maestro Automate] を選択します。
一致しない場合は、何が違うのかをエージェントに伝えます。たとえば、「小切手のクレジットがありません。[在庫を確認] と [注文確認] の間に追加してください。」
結果: キャンバスがこのページの上部にあるワークフローと一致します。
プロジェクトを作成します
構築する場所を選ばずに Maestro Automate プロジェクトを作成します。
| 構築する場所 | プロジェクトの作成方法 |
|---|---|
| VS コード | アクティビティ バーに UiPath アイコンが表示されている [UiPath Maestro] ビューを開きます。[新規作成] を選択し、[新しいプロジェクト] リストで [Maestro Automate] を選択します。 |
| Studio Web | [新規作成] の横の矢印を選択し、[Maestro Automate] の下の [フロー] を選択します。 |
| デスクトップ版の Studio | ソリューションを開きます。[エクスプローラー] で [プロジェクトを追加] を選択し、[ソリューションに追加] で [Maestro Automate] を選択します。 |
プロジェクトがフロー キャンバス上で開き、 すでに [手動トリガー ] が表示されます。下部のツールバーに、構築モードとして Maestro automate が表示されています。
各ツールには、Maestro Orchestrate 用のプロジェクト (VS Code の Maestro Orchestrate、Studio Web の Maestro Orchestrate の Flow、デスクトップ版の Studio の Maestro Flow) も含まれています。必ず Maestro Automate 用の 1 つを選択してください。
トリガーから始める
ワークフローを構築するときに最初に答えるべき質問は、ワークフローがどのように始まるかです。トリガーとは、すべての実行を開始するステップです。このワークフローはオンデマンドで開始されるため、最も簡単にテストできるため、既にキャンバスにある [手動トリガー ] を使用します。
- 手動トリガーの名前をダブルクリックし、「New order」と入力します。すべてのノードの名前を同じ方法で変更します。
- [ 詳細設定 ] タブで、その ID を
newOrderに設定します。後のステップの式では、この ID が使用されます。 - [ パラメーター] タブで、[ 入力引数を追加] を 2 回選択して注文の詳細を追加します。
productId型の number です。customerId、 型の String。
結果: ワークフローは開始するたびに製品 ID と顧客 ID を受け入れます。
在庫を確認する
注文に関する最初の質問は、製品の在庫があるかどうかです。HTTP 要求ノードは、アプリがデータを交換するために使用するインターフェイスである API を呼び出して、別のシステムに要求します。
-
[新しい注文] の出力ハンドルの + を選択し、「HTTP 要求」を検索して選択します。
-
ノードの名前を Check stock に変更し、[ 詳細設定 ] タブでその ID を
checkStockに設定します。 -
[ パラメーター] タブで、[ 認証 ] を [ 手動認証 ] に設定し、[ 方法 ] を [
GET] のままにします。 -
[URL] フィールドを式モードに切り替えて、先頭に
=が表示されるようにして、「」と入力します。"https://dummyjson.com/products/" + $vars.newOrder.output.productId"https://dummyjson.com/products/" + $vars.newOrder.output.productIdWeb アドレスは引用符で囲まれ、
$vars.newOrder.output.productIdはトリガーの末尾に製品 ID を追加します。$vars部分は、入力する代わりに { } Insert を使用して追加できます。入力中に編集者から
productId提案がある場合は、名前を入力する代わりにEnterで提案を受け入れます。そうしないと、提案は 2 回入力されます。
$vars は、以前のノードの出力を保持します。式によって $vars.<node ID>.outputと読み取られます。式モードのフィールドは JavaScript であるため、Web アドレスなどのテキストは引用符で囲まれます。変数とデータ フローは 、ノード間でデータがどのように移動するかを記述します。
これまでに持っているものをテストしてみる
- キャンバスの下部のツールバーで [デバッグを実行] (▶) を選択し、[productId] に「
1」、[customerId] に「c-100」と入力して、実行を開始します。Studio Web で、[ 保存してデバッグ] で開始します。 - キャンバスの下のパネルの [ 変数 ] タブで、[ 在庫を確認] を展開します。その [出力] には、 に設定された
codeが200で、製品のデータがbodyで表示され、stockも含まれます。
[ 在庫の確認 ] が失敗した場合は、 実行トレース でそのストックを選択してエラーを確認します。最も一般的な原因は、Web アドレスを引用符で囲まない URL 式です。
結果: ワークフローはすでに API から実際のデータを読み取っています。ノードを追加するたびに、同じ方法で再度実行できます。
顧客の信用を確認する
- Check stock の出力ハンドルの + を選択し、別の HTTP 要求を追加して、名前を Check credit に変更し、ID を
checkCreditに設定します。 - [メソッド] を [
GET] に設定したまま、[URL] に「https://dummyjson.com/users/1」と入力します。
このチュートリアルでは、サンプル ユーザー レコードが顧客の信用記録の代わりになります。
エージェントに判断を任せる
エージェントとは、ユーザーが指示とツールを与える AI モデルです。決まったルールに従うのではなく、データを読み取って決定します。
-
Check credit の発信ハンドルで + を選択し、[エージェント] カテゴリを開いて [自律型エージェント] を選択します。
-
ノードの名前を 「Review order」に変更し、ID を「
reviewOrder」に設定します。 -
[ モデル ] を既定のモデルに設定したままにします。
-
[システム プロンプト] にエージェントの指示を入力します。
You review new customer orders. Accept an order only if the product has stock greater than 0 and the customer record is present. Otherwise reject it. Always give a short reason.You review new customer orders. Accept an order only if the product has stock greater than 0 and the customer record is present. Otherwise reject it. Always give a short reason. -
[ユーザー プロンプト] に「
Product:」と入力し、{ } Insert で$vars.checkStock.output.bodyを追加してから「Customer:」と入力し、同じ方法で$vars.checkCredit.output.bodyを追加します。挿入された各値は、プロンプトにチップとして表示されます。 -
[ 出力] で、[ 出力変数を追加] を 2 回選択します。
accepted、Boolean 型のreason、 型の String。
結果: エージェントは、次のノードが読み取ることができる accepted と reasonを返します。
判断の分岐
-
[レビュー順序] の出力ハンドルで [+] を選択し、[コントロール] カテゴリを開いて [判断] を選択します。名前を 「Accepted?」 に変更します。ID を
acceptedに設定します。 -
条件に「」
$vars.reviewOrder.output.acceptedと入力します。判断ノードは、 True ハンドルと False ハンドルを取得します。 -
True ハンドルで、Create order in CRM という名前のスクリプト ノードを追加します。ID は
createOrderInCrmで、次のコードを入力します。return { orderCreated: true, productId: $vars.newOrder.output.productId };return { orderCreated: true, productId: $vars.newOrder.output.productId }; -
False ハンドルに、Notify sales rep という名前で ID
notifySalesRepのスクリプト ノードを追加し、次のコードを入力します。return { notified: true, reason: $vars.reviewOrder.output.reason };return { notified: true, reason: $vars.reviewOrder.output.reason };
実際のワークフローでは、 CRM で注文を作成 と 営業担当者に通知 することは、CRM や Slack などのアプリへの既製のコネクタです。[コネクタ] にすべてのコネクタのリストが表示されます。
結果: キャンバスがこのページの上部にあるワークフローと一致し、どのノードにも警告アイコンが表示されません。
2. テストする
テストでは、サンプル データを使用してキャンバス上でワークフローを実行します。
- エージェントに「productId が 1 で、customerId が c-100 のワークフローをデバッグしてください」と依頼します。
- エージェントがワークフローを実行し、結果を報告します。各ノードが完了し、サンプル製品の在庫があるため、実行は [CRM で注文を作成] への True パスをたどる必要があります。
- レポートでエージェントの判断を確認します。「製品の在庫があり、顧客レコードが存在する」などの簡単な理由で、
acceptedがtrueです。
自分で実行を表示するには、代わりにキャンバスの下部のツールバーで [ デバッグを実行 ] (▶) を選択し、[ キャンバス] タブの [手動 ] の手順を実行します。
-
キャンバスの下部のツールバーで [ デバッグを実行 ] (▶) を選択します。ダイアログが表示され、トリガーの入力の値を尋ねられます。
-
productId に
1、customerId にc-100」と入力して、実行を開始します。Studio Web では、ダイアログは [デバッグ設定] で表示され、[ 保存してデバッグ] で実行を開始します。Studio Web では、値は次回の実行のために保存されます。
-
実行が完了するまで待ちます。各ノードに緑色のチェック マークが表示され、サンプル製品の在庫があるため、実行は CRM で注文を作成するための True パスをたどります。
-
実行トレースで、[順序の確認] を展開し、[エージェントの出力] を選択します。[ 結果 ] タブには、エージェントの判断、
accepted: true、およびその理由が表示されます。
[注文自体を 確認 ] を選択して、エージェントが受け取ったデータ ([ 在庫を確認 ] の完全な製品レコードと [ クレジットを確認] のユーザー レコード) を確認します。
ノードに障害が発生した場合は、 実行トレース でそのノードを選択してエラーを確認します。「デバッグの基本」では、デバッグ ツールについて詳しく説明しています。
結果: ワークフローがトリガーから分岐まで実行され、エージェントの決定がトレースに表示されます。
3. デプロイして実行する
これまでのところ、ワークフローはテストとしてのみ実行されています。デプロイすると、キャンバスなしで実行されるライブ ワークフローになります。各実行は、プランの月間実行にカウントされます。
-
エージェントに依頼します。
Deploy this workflow, then start one run with productId 1 and customerId c-100, and tell me where I can see the run.Deploy this workflow, then start one run with productId 1 and customerId c-100, and tell me where I can see the run.エージェントがプロジェクトをパッケージ化してデプロイし、それらの入力を使用して実行を開始します。
-
実行が終了する時間ができたら、「実行は終了しましたか?最終的な状況と、どの分岐を取ったか教えてください。」
エージェントは、実行が成功し、CRM で順序を作成するための True パスをたどったことを報告します。
- ワークフローをデプロイします。
- Studio Web: [ デプロイ] を選択し、 デプロイが成功するまで待ちます。
- VS Code またはデスクトップ版の Studio: 「 ワークフローをデプロイする」の手順に従います。
- [ ジョブを開始] を開きます。
- Studio Web: 成功画面で [ ジョブを開始] を選択します。
- VS Code またはデスクトップ版の Studio: Orchestrator で [ ソリューション] を選択し、デプロイ先のフォルダーを選択して、ソリューションを選択します。そのパネルで [ジョブを 開始] を選択します。
- [入力] で、[productId] に「
1」と入力し、[customerId] に「c-100」と入力して、[開始] を選択します。 - 実行を続けるには、製品起動ツール、ページの左上にあるグリッド アイコンを選択して、[ Maestro] を選択します。
- [ フロー インスタンス] を選択し、ワークフローの名前を選択します。
- 実行を選択して、実行した各ステップをキャンバスに確認します。
結果: ワークフローがデプロイされ、その最初の実行が CRM で順序を作成するための True パスをたどりました。
学習内容
- トリガー: すべてのワークフローは 1 つから始まり、入力引数は各実行の開始時に使用するデータを保持します。
- HTTP 要求: ノードが別のシステムの API を呼び出し、応答を後のノードで利用できるようにします。
- 式:
$vars.<node ID>.output前のノードの出力を読み取ります。 - エージェント: エージェントはデータを読み取って決定し、定義した出力変数を返します。
- 判断: 1 つの条件によって、各実行が 2 つのパスのいずれかに送信されます。
- テスト: デバッグ実行では、すべてのノードが何を受け取り、何を返したかが表示されます。
- コーディング エージェント: エージェントは説明から同じワークフローを構築でき、ユーザーはそれをキャンバスで確認します。
- デプロイ中: デプロイされたワークフローがキャンバスなしで実行され、各実行がステータスとともに一覧表示されます。
次のステップ
- 評価: 一連のサンプル注文に対してエージェントの判断を確認します。トレース エントリにある [評価に追加] ボタンを使用すると、素早く開始できます。
- ワークフローをデプロイする: ユーザーがいなくてもワークフローを実行します。
- コネクタ: 2 つのスクリプトを実際のアプリに置き換えます。
- ノードの参照: すべてのノードとその設定方法
- コミュニティ: 質問したり、他のビルダーとワークフローを共有したりできます。