SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SB C&S

【UiPath Agents】Agent Builder を使ったAIエージェントの作り方

AI
2025.06.03

みなさま、こんにちは。植木です。

前回の記事では、「Agent Builder」の概要や機能についてご紹介しました。

今回は、「Agent Builder」の実際の使い方を簡易的な業務フローに沿ってご説明します。

 

※他の記事はこちら


目次

1.今回のシナリオについて

2.業務シナリオの説明

3.資料の紹介

4.開発手順

4-1.注文システム照会RPAの作成

4-2. AIで参照可能な返金規定の設定

4-3.エスカレーション用アプリの作成

4-4.AIエージェントの作成

- プロンプト設定

- 引数設定

- ツール設定

- コンテキスト設定

- エスカレーション設定

4-5.テスト実行

4-6.パブリッシュ

Appendix①.ワークフローからAIエージェントを呼び出す

Appendix②.AIの判定がうまくいかない場合

Appendix③.「評価」の使い方

5.さいごに

 


1.今回のシナリオについて

今回は、Agent Builder を活用し、

顧客から届いた返品申請を確認して返金対応を行うシナリオを作成します。

ブログ内での説明をわかりやすくするため、通常の業務フローを大幅に簡略化しています。

この点についてはご了承ください。

 


2.業務シナリオの説明

今回作成する業務のフローは以下の通りです。

1.RPAが注文システムを照会し、該当の注文情報を取得する

2.AIエージェントが返金規定を参照して問題の有無を判断する

3.問題がある場合は、人が内容を確認し最終判断を行う(エスカレーション機能を利用)

 

01.png

 

■Before

従来であれば、注文システムの照会から規約確認まで、

人が一貫して作業を進めるため、以下のような課題がありました。

・注文システムの照会や規約確認に時間がかかり、担当者の負荷が高い

・人による判断のばらつきが発生しやすい

 

■After

しかし、RPAとAIエージェントを組み合わせることで、以下のような効率化が期待できます。

・注文システムからの情報取得をRPAで自動化し、作業時間を削減

・AIエージェントによる自動判断で、一定の基準に沿った判定を行い、ばらつきを減らす

・問題があるケースのみ人が最終確認するため、対応の優先度付けや工数配分が最適化される

 

以上のように、RPAとAIエージェントを使用することで、

担当者の負荷軽減と判断の標準化を両立することを実現します。

  


3.資料の紹介

本シナリオで使用する資料は以下の通りです。

本記事と同様の手順をお試しいただく際は、以下のファイルをダウンロードしてご利用ください。

※左クリックすると新規タブで開いてしまうため、

 「リンクを右クリック」⇒「名前を付けてリンク先を保存」の手順でダウンロードしてください

 

資料には返金の条件について記述があり、AIエージェントはこれを参照して、返金対象か判断します。

  


4.開発手順

 

4-1.注文システム照会RPAの作成

ここでは、注文番号をもとにシステムから注文日と商品一覧を取得するRPAを作成します。

※今回はブログ用のため、固定値を出力する簡易的なフローのみ作成します。

 

02.png

 

【手順】

1.UiPath Studio Web を開き、手動のオートメーションを新規作成します。

 

158.png

 

2.以下の通り引数を作成します。

【入力①】

名前: in_order_number

型: テキスト

目的: オートメーションがエージェントから注文日を受け取る

【出力①】

名前: out_item_list

型: DataTable

目的: オートメーションからエージェントに商品一覧を出力

【出力②】

名前: out_order_date

型: テキスト

目的: オートメーションからエージェントに注文日を出力

 

04.png

 

3.「テキストからデータテーブルを生成」アクティビティをフローに追加し、以下の通り設定。

 

■入力内容:

商品コード,商品名,数量,単価,小計
aa111,スマートフォン充電器,1,\1000,\1000
bb222,スマートフォン充電ケーブル 2m,1,\500,\500
cc333,ハンドクリーム,2,\1000,\2000

 

05.png

 

4.「変数の値を設定」アクティビティをフローに追加し、以下の通り設定。

  ※テスト用のため固定値を設定します

 

■設定する値: 2025/4/1

 

06.png

 

5.エクスプローラーを開きプロジェクトの名前を以下の通り変更

 

■プロジェクト名: order_info

 

07.png

 

6.パブリッシュを実行

 ※今回は個人テスト用として、「個人用ワークスペースフィード」にパブリッシュします

 

08.png

 

 

4-2. AIで参照可能な返金規定の設定

ここでは、AIエージェントが社内文書を参照できるように設定します。

 

09.png

 

AIエージェントが返金規定を参照できるようにするためには、

コンテキストグラウンディングを適切に設定する必要があります。

具体的には以下の手順に沿って作業を進めます。

1.ストレージバケットの作成

2.返金規定をストレージバケットへアップロード

3.インデックスを追加

 

手順の詳細は以下の記事をご参照ください。

【UiPath Assistant】Autopilot for Everyone の使い方(中編:活用ガイド①)

※2025年5月のアップデートでインデックスの作成方法が変更されました。

※本記事では概要手順のみ記載します。

 

【手順】(ストレージバケットとインデックスを新規作成する場合)

1.「3.資料の紹介」でダウンロードしたファイルをストレージバケットに格納

 

10.png

 

2.「Orchestrator」>「対象フォルダ」>「インデックス」の、「インデックスを追加」を選択

 

159.png

 

3.インデックス名、取り込み設定、

 データソース(「返金規定サンプル.pdf」を保存したストレージバケット)を設定し保存

 

160.png

 

 ※補足:すでにインデックス用に設定されているストレージバケットにPDFを追加した場合は

     対象インデックスの「⋮」から「今すぐ同期」を実行

 

100.png

 

4-3.エスカレーション用アプリの作成

ここでは、担当者の確認が必要なケースが発生したときにエスカレーションできるようにするため、

UiPath Apps を利用してアプリケーションを作成します。

 

12.png

 

※Apps の使い方をご存じの方やアプリの作成がうまくいかない方は、

 以下のリンク先から作成済みのアプリをダウンロードしてご利用ください。

 ◆記事内リンク:【補足:Appsファイルのダウンロード】

 

【手順】

1.UiPath Apps を開き、「新しいアプリを作成」をクリック

 

13.png

 

2.任意の名前を付けて「作成」をクリック

 ※ここでは、「refund_confirm」とします。

 

14.png

 

3.「空のページ」を選択し、「選択」ボタンをクリック

 

15.png

 

4.コントロールを追加の右にある「下矢印」をクリックし、「アクション」を選択。

 ポップアップが表示されるので、「続行」をクリック

 

16.png

 

5.※重要:引数名に数字やアルファベット以外の文字が含まれていると、

   AIエージェントから呼び出す際にエラーが発生するため、

   下図のように日本語になっている箇所は最初に削除する

17.png

 

6.「結果を追加」をクリックし、アルファベットで以下の名前を設定

 

  名前: submit

 

19.png

 

7.下図の入出力に該当する引数を作成します。

 

20.png

 

「入力プロパティを追加」をクリックし、「Text」を選択し、以下の名前を設定

 

 名前: in_date_result (注文日の確認結果)

 

18.png

 

8.その他の入力引数も同様の手順で下図のように作成

 

 【入力】

 名前:in_ordered_products_result  型:Text(System.String) (注文商品の確認結果)

 名前:in_refund_policy_result  型:Text(System.String) (返金規定の確認結果)

 名前:in_AI_judge_reason  型:Text(System.String) (AIの判定理由)

 

 【出力】

 名前:out_staff_judge_result  型:Text(System.String) (担当者の確認結果)

 

21.png

 

9.「Main Page」に戻り、「コントロールを追加」の「入力」の「テキストボックス」を追加

 

22.png

 

10.「既定のテキスト」の設定ボタンから「アクション」>「in_date_result」を選択

 ※アクションのプロパティで設定した引数を選択します

 

23.png

 

11.ラベルを「日付の確認結果」に変更

 

24.png

 

12.同様の手順で、他の項目のテキストボックスも以下のように作成

 

 ・注文商品の確認結果

 ・返金規定の確認結果

 ・AIの判定理由

 

25.png

 

13.「コントロールを追加」の「入力」の「ボタン」を追加し、

  テキストを「返金対象」に変更

 

26.png

 

14.同様の手順で「返金対象外」のボタンを作成

  ※返金対象と間違えないように任意のスタイルに変更

 

27.png

 

15.「返金対象ボタン」を選択し、「イベント」>「ルールを作成」をクリック

 

28.png

 

16.「アクションを送信」を選択

 

29.png

 

17.アクションの結果に「Submit」を選択

 

30.png

 

18.「アクションのプロパティの上書き」をクリックし、

  以下の手順で出力引数に「返金対象」と設定  

 

31.png

 

19.同様の手順で、「返金対象外ボタン」もクリック時のイベントを作成

 

32.png

 

20.右上の「パブリッシュ」をクリックし、「パブリッシュ」⇒「今すぐデプロイ」を順番に選択

 

33.png

 

21.任意のフォルダを選択し、「アプリをデプロイ」をクリック

  ※個人でテストする場合は「個人用ワークスペース」で大丈夫です

 

34.png

 

22.先ほどパブリッシュしたアプリを選択し、「デプロイ」をクリック

 

35.png

 

【補足:Appsファイルのダウンロード】

以下のファイルをダウンロードして、Appsにインポートしてご利用いただくことも可能です。

※ファイル名を右クリックして保存してください

■Appsファイル:Refund_confirm.uiapp

 

■インポート手順

1.Appsを開き、「新しいアプリを作成」をクリックし、「ファイルからインポート」を選択

 

114.png

 

2.ダウンロードした「Refund_confirm.uiapp」を選択し「作成」をクリック

 

115.png

 

3.前段の手順20~22の方法で、パブリッシュおよびデプロイを実行

 

 

4-4.AIエージェントの作成

ここでは、注文システム照会RPAを実行し、規約の照会を行い、

問題があればエスカレーションまで自動で行うAIエージェントを作成します。

 

48.png

 

【手順】

    1.「Studio Web」を開き、「新規作成」をクリック

     

    101.png

     

    2.「エージェント」を選択

     

    102.png

     

    3.エージェントの詳細を入力して、Autopilot で作成する方法もありますが、

     今回は手動で作成をするため「×」ボタンをクリック

     

    103.png

     

    ◆プロンプト設定

    【手順】

    1.システムプロンプトに以下の役割と手順を入力

     ※プロンプトに "{{引数名}}" を設定すると、引数の値をプロンプト内で使用できます。

     ※プロンプトで使う引数は後段で説明します。

    ========================

    # 役割:
    あなたは返金対応を行うエージェントです。以下の手順を順番に実行します。条件にマッチするときのみエスカレーションを行います。

    # 手順
    1. 注文番号をもとにツール「order_info」を実行し、注文日と製品一覧を取得します。
    2. 注文日と「{{in_order_date}}」の日付が一致しているか確認します。
    3. 製品一覧に製品名「{{in_product_name}}」が含まれているか確認します。
    4. コンテキスト「返金規定」の「1. 返金対象と条件」を参照して、返品理由「{{in_return_reason}}」が「返金対象」か「返金対象外」か判定します。
    5. 以下の条件のいずれかにマッチするとき、エスカレーションします。

    #条件 
    1. 注文日と「{{in_order_date}}」の日付が不一致
    2. 製品一覧に製品名「{{in_product_name}}」が含まれていない
    3. 判定結果が「返金対象外」

    ========================

     

    157.png

     

    2.ユーザープロンプトに以下のプロンプトを入力

    ========================

    注文番号:{{in_order_number}}

    ========================

     

    105.png

     

    ◆引数設定

    【手順】

    1.データマネージャを開き、入力引数の「プロパティを追加」をクリック

     ※2025年5月現在、環境によって表示エラーが発生しますが、機能に問題はありません。

     

    106.png

     

    2.以下の通り引数を設定

     

     名前: in_order_date  型: String

      説明: 注文日

     

    107.png

     

    3.同様の手順で、以下の入力引数も作成

     

     名前: in_product_name  型: String

      説明: 製品名

     名前: in_return_reason  型: String

      説明: 返品理由

     名前: in_order_number  型: String

      説明: 注文番号

     

    108.png

     

    ■補足:引数の型を変更する場合は、以下のように引数の型のマークボタンをクリックします

     

    113.png

     

    ※注:2025年5月現在、引数の説明(description)の設定が
       正常に保存されないケースが確認されています。
       本事象が発生した際は、以下の手順を参考に
       JSONコードの "description" を直接編集してください。

     

    4.引数はJSON形式でまとめて設定することもできます。

     「出力」をクリックし、「<>(エディターボタン)」をクリック

     

    109.png

     

    5.既存のJSONコードを削除し、以下のコードを貼り付け

    =================================

    {
      "type": "object",
      "properties": {
        "out_order_number": {
          "type": "string",
          "description": "注文番号"
        },
        "out_order_date": {
          "type": "string",
          "description": "注文日"
        },
        "out_product_name": {
          "type": "string",
          "description": "製品名"
        },
        "out_return_reason": {
          "type": "string",
          "description": "返品理由"
        },
        "product_list": {
          "type": "array",
          "description": "ツール「order_info」から取得した製品一覧",
          "properties": {},
          "items": {
            "type": "object",
            "properties": {},
            "required": []
          },
          "required": []
        },
        "AI_judge_result": {
          "type": "string",
          "description": "AIによる判定結果"
        },
        "AI_judge_reason": {
          "type": "string",
          "description": "返金対象か返金対象外かの判定理由"
        },
        "escalation_result": {
          "type": "string",
          "description": "エスカレーションの結果"
        },
        "date_check_result": {
          "type": "string",
          "description": "日付の判定結果"
        },
        "product_list_check_result": {
          "type": "string",
          "description": "製品一覧に含まれるか確認した結果"
        }
      }
    }

    =================================

     
    111.png
     
     
    ■補足:コードにエラーがあると、以下のように赤いマークが付きます。
        この状態でエディターを閉じると編集内容が保存されないためご注意ください。
     
    112.png
     

    ◆ツール設定

    【手順】

    1.「ツールを追加」をクリック

     

    116.png

     

    2.「プロセス」タブを選択し、「開発手順 4-1」 でパブリッシュしたプロセスを選択

     

    117.png

     

    3.説明(空白の場合「N/A」になっている箇所)と入力引数の説明を以下の通り設定

     

     ・説明: 注文番号をもとに注文書の情報を取得する

     

    118.png

      

     ・入力引数(in_order_number)の説明: 注文番号

     

    161.png

     

    ◆コンテキスト設定

    【手順】

    1.「コンテキストを追加」をクリック

     

    120.png

     

    2.「返金規定サンプル.pdf」を参照しているインデックスを選択

     

    121.png

     

    3.コンテキストの説明を以下の通り設定

     

      説明: 返金規定

     

    122.png

      

    ◆エスカレーション設定

    【手順】

    1.「エスカレーションを追加」をクリック

     

    124.png

     

    2.「プロンプト」に以下の内容を入力し、

      「アプリ」に前段でパブリッシュしたAppsのアプリケーションを設定し、

      割当先を自身のアカウントに設定

     

     プロンプト: 返金対象外の条件にマッチしたとき担当者に確認依頼を行う

     

    125.png

     

    3.アプリの入力引数の説明を、以下の通り設定

     

     ・in_date_result: 日付の確認結果

     ・in_ordered_products_result: 注文商品の確認結果

     ・in_refund_policy_result: 返金規定の確認結果

     ・in_AI_judge_reason: AIの判定理由

     

    126.png

     

    4-5.テスト実行

    想定通りに実行されるか、エスカレーションが必要なケースと不要なケースでテストを行います。

     

    • エスカレーションが必要なケース

    【手順】

    1.「クラウドでテスト」をクリックし、入力引数に以下の値を設定し実行

     

     ・in_order_date: 2025/4/1

     ・in_product_name: ハンドクリーム

     ・in_return_reason: 開封済みです。間違えて注文しました。

     ・in_order_number: A1234

     

    127.png

     

    2.実行しエスカレーションされることを確認

     

    128.png

      

    • エスカレーションが不要なケース

    【手順】

    1.上記と同様の手順で、入力引数に以下の値を設定し実行

     ( "in_return_reason" の値のみ変更します)

     

     ・in_order_date: 2025/4/1

     ・in_product_name: ハンドクリーム

     ・in_return_reason: 未開封です。間違えて注文しました。

     in_order_number: A1234

     

    129.png

     

    2.実行し結果を確認

    ※2025年5月時点では、AIの精度の問題でエスカレーションが発生するケースが多々あります。

     その際は、アクションセンターを開き「返金対象」ボタンを選択してください。

     

    4-6.パブリッシュ

    実行結果の確認後、ワークフロー内で呼び出せるようにするためパブリッシュします。

     

    【手順】

    1.フォルダ名とエージェント名を以下の通りに変更

     

     ・フォルダ名: Refund_test

     ・エージェント名: Refund Agent

     

    130.png

     

    2.「パブリッシュ」をクリックし、

     今回はテストのため「個人用ワークスペースフィード」を選択し、パブリッシュを実行

     

    131.png

     

    3.Orchestrator の「ソリューション」タブ内に追加されていることを確認し、

     「▷(デプロイの実行ボタン)」をクリック

     

    132.png

     

    4.「続行」をクリック

     

    133.png

     

    5.「検証」をクリック

     

    134.png

     

    5.エラーの有無を確認し、エラーがなければ「デプロイ」をクリック

     

    135.png

     

    ※エラーがある場合は、テキストに従いエラーを解消する

     

    136.png

     

    6.更新ボタンをクリックし、ステータスが成功になったことを確認した後、

     「⋮」をクリックし「デプロイをアクティブ化」をクリック

     

    137.png

     

    7.青文字のリンクをクリックし、アプリをアクティブ化

     

    138.png

     

    8.指定の文字を入力し、デプロイをアクティブ化

     

    139.png

     

    9.更新ボタンをクリックし、「アクティブ」になることを確認

     

    140.png

     

    また、「My Workspace」の配下に、「Solution Folder」が追加されていることを確認

     

    141.png

     

    Appendix①.ワークフローからAIエージェントを呼び出す

    UiPath Studio, Studio Web のフローの中でAIエージェントを呼び出す方法について補足します。

     

    【Studio Web の場合】

    「ジョブを実行」アクティビティをフローに追加し、

    AIエージェントをパブリッシュしたフォルダを選択し、

    エージェントを選択し、 引数の設定を行う

     

    143.png

      

    【Studio の場合】

    2025年5月現在、直接エージェントを呼び出すアクティビティがないため、

    Studio Web でエージェントを呼び出すプロセスを作成・パブリッシュし、

    Studio からは、そのプロセスを呼び出すように設定します。

     

    144.png

     

    Appendix②.AIの判定がうまくいかないケースの対処方法

    AIによるエスカレーションの判定が安定しない場合、2種類の対処方法があります。

     

    【方法①】:Autopilot による改善提案

    2025年5月現在はプレビュー機能ですが、

    Autopilot による改善を行うことでエージェントが詳細に定義され、動作が安定することがあります。

     

    147.png

     

    ■改善案による修正結果

    ※改善提案は実行するたびに変化するため、画像の通りにならない点はご注意ください。

     

    148.png

     

    【方法②】:エージェントの分割

    Agentの役割を分割することで安定することがあります。

    現在のAIモデルではプロンプトに記載された手順や条件が多いと判定が安定しないケースが多いため、

    そのような場面ではAIエージェントを分割して作成し、なるべくプロンプトを短くすることが効果的です。

     

    【例】

    1.以下の通り2種類のAIエージェントを作成します。

     ・エージェント①:情報収集を行う

     ・エージェント②:与えられた情報を基に判定を行う

     

    71.png

     

    【手順】

    1.対象のソリューション(本記事では"Refund_test")をダウンロード

     

    149.png

     

    2.新規作成の右側の「▼」ボタンをクリックし、「インポート」を選択し、

     先ほどダウンロードした「Refund_test.uis」をインポート

     

    150.png

     

    3.複製されたソリューションを開き、エージェントを以下の通り設定します

     

     ① エスカレーションを削除

     

     ② システムプロンプトを以下の通り修正

    ========================

    # 役割:
    あなたは返金対応を行うエージェントです。以下の手順を順番に実行します。
    # 手順
    1. 注文番号をもとにツール「order_info」を実行し、注文日と製品一覧を取得します。
    2. 注文日と「{{in_order_date}}」の日付が一致しているか確認します。
    3. 製品一覧に製品名「{{in_product_name}}」が含まれているか確認します。
    4. コンテキスト「返金規定」の「1. 返金対象と条件」を参照して、返品理由「{{in_return_reason}}」が「返金対象」か「返金対象外」か判定します。

    ========================

     

    151.png

     

    4.任意のフォルダにパブリッシュし、

     「デプロイ」と「デプロイのアクティブ化」を行う

     

    152.png

     

    5.同様の手順で再度複製を行い、エージェントを以下の通り設定します。

     

     ① ツール、コンテキストを削除

     

     ② システムプロンプトを以下の通り修正

    ========================

    # 役割:
    以下の条件のいずれかにマッチするとき、エスカレーションを行います。

    #条件 
    ・AIの判定結果が「返金対象外」
    ・日付の確認結果が「不一致」
    ・製品一覧に含まれるか確認した結果が「含まれていない」

    ========================

     

     ③ ユーザープロンプトを以下の通り修正

    ========================

    ・AIの判定結果:{{AI_judge_result}}
    ・日付の確認結果:{{date_check_result}}
    ・製品一覧に含まれるか確認した結果:{{product_list_check_result}}

    ========================

     

    153.png

     

     

     ④ 入力引数を以下のコードに置き換え

    ========================

    {
      "type": "object",
      "properties": {
        "AI_judge_result": {
          "type": "string",
          "description": "AIの判定結果"
        },
        "AI_judge_reason": {
          "type": "string",
          "description": "AIの判定理由"
        },
        "date_check_result": {
          "type": "string",
          "description": "日付の確認結果"
        },
        "product_list_check_result": {
          "type": "string",
          "description": "製品一覧に含まれるか確認した結果"
        }
      },
      "required": []
    }

    ========================

     

     ⑤ 出力引数を以下のコードに置き換え

    ========================

    {
      "type": "object",
      "properties": {
        "escalation_result": {
          "type": "string",
          "description": "エスカレーションの結果"
        }
      },
      "required": []
    }
    ========================
     
    154.png

     

    6.任意のフォルダにパブリッシュし、

     「デプロイ」と「デプロイのアクティブ化」を行う

     

    155.png

     

    7.Studio Web で新規ワークフローを作成し、2つのエージェントを順番に呼び出すように設定

     

     ※下図はイメージです

    156.png

     

     

    Appendix③.評価セットの使い方

    「評価」は、プロンプトやコンテキストの修正後に、

    複数の入力パターンをまとめてテストできる便利な機能です。

    入力情報と期待される出力結果のセットを登録し、

    一括テストが可能なため効率的に動作確認が行えます。 

     

    【手順】

    1.「クラウドでテスト」を行うと、「評価セットに追加」を選択できるようになります。

     また、テストの履歴がすべて表示されます。

     ここから、評価セットに追加するものを選択し、「既定のセットに追加」をクリックします。

    145.png

     

    2.評価セットの既定のセットの「詳細を表示」をクリックします。

     追加したセットに問題がなければ、「セットを評価」をクリックすると、

     現在のエージェントの設定で複数のケースがまとめてテストされます。

     

     ※評価セットで行うテストでは、エスカレーションは行われません。

    146.png

     


    5.さいごに

    本記事では、Agent Builder を活用した開発手順について詳しくご紹介しました。

    業務に合わせた独自のAIエージェントを構築することで、

    従来のRPAでは難しかった例外対応やラストワンマイルの自動化を実現できるだけでなく、

    これまで対応が難しかった業務領域へのアプローチや新たな可能性を切り拓くことが期待できます。

    業務効率化と生産性向上を実現するツールとして、ぜひ Agent Builder をお役立ていただければ幸いです。

    他のおすすめ記事はこちら

    著者紹介


    植木 真