3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LLM 時代の RPA 開発_UiPathのAI を無料で試す

Posted at

はじめに

2025年に入り、さまざまなLLMが登場し、自動化のレベルが一段引き上げられたと感じています。
そんな中で、UiPath が提供しているさまざまな AI 機能を実際に試してみよう、という趣旨の記事になります。
なお、本記事での検証はすべて 無料版(Community License)で使用できる範囲 に限定しています。

UiPath Studio Autopilot で自動RPAを生成する

UiPath Studio の Autopilot では、自然言語で指示を出すことで、いい感じに RPA を実装してくれるようです。

まずは手始めにプロジェクトを作成し、以下の処理を Autopilot に実装してもらいましょう。

  1. CSV ファイルを読み込む
  2. 読み込んだテーブルをフィルタする
  3. フィルタした結果を新たな CSV として作成する

プロジェクト画面から「Autopilot で生成」をクリックします。
image.png

コメント部分が編集状態になるので、自動化してほしい内容を入力し、生成をクリックする。
image.png

生成された内容をプレビューとして確認できる。生成までは40~50秒ほどで十分実用的な速度でした。確認をクリックすることでアクティビティが生成されます。
image.png

生成されたアクティビティはこのようになります。
image.png

実行したところエラーになってしまいます。(このぐらいは、、という気持ち)
image.png

せっかくなので、エラーの修正を AI させる

先程発生したエラーをそのまま Autopilot に投げ込みます。右側のメニューから AI (gemini?) っぽいアイコンをクリックします。(因みに2025年12月時点では、この機能は Preview だそうです。)
image.png

エラーをコピペし、ポストします。
image.png

Agent, Edit の双方のモードで試しましたが、スマートに修正作業はまだできないようです。
image.png

私が確認したところ、テストデータを作成する際に改行コードが認識されておらず、/nがそのまま文字列としてテストデータを作成してしまっているのが原因でした。

"No.,商品名,カテゴリ/n1,青森産 りんご,果実/n2,愛媛産 みかん,果実/n3,北海道産 じゃがいも,野菜/n4,千葉産 にんじん,野菜"

ということで、AI になんとかしてもらいましょう。式エディタから指示だすこともできるようです。出力はこちら。この生成はめちゃくちゃ早かったです。(実装は冗長ですが、、)
image.png

これで実行は問題なくいきました。

気になったこと

  • 生成時のアクティビティに検証エラーが含まれる
  • アクティビティ名が長く、見切れてしまう

image.png

  • 生成される変数名がデフォルトの命名規則に違反している
    • (この辺りはプロンプトの設定でなんとかなるかしら?)
    • 例)データテーブルの変数名の場合は再現性がない
      • dt1
      • 〇〇DataTable

他の題材でも色々試す

  • Webのスクレイピング
    • プロンプト
      • 気象庁の24時間降水量一覧表から表データを抽出してほしい
    • 結果
      • いまいち
      • ほぼ空のアクティビティが生成された
  • OCR
    • プロンプト
      • PDFの表を抽出してExcelしてほしい
    • 結果
      • お題を悪かったのか、アクティビティが2つできただけなので、良し悪し分からず
      • 何故か変数が作成されなかった
  • DataTable操作
    • プロンプト
      • データテーブルの差分を出してほしい。2つの引数を用意し、以下のように差分を出力してほしい
    • 結果
      • 少し手直しすれば、実運用でも使えるレベル
      • ここまで指示したが、引数は作成されず
Webのスクレイピング

image.png

PDF操作

image.png

DataTable操作 プレビュー ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552182/37d34f24-457c-4b15-bd57-54f8527b5745.png)

コード化されたワークフローで Autopilot に頑張ってもらう

コード化されたワークフロー(coded workflow)はただの C# なので、かなり期待できそう。
コード化されたワークフローを作成し、Ctrl+Shift+G で Autopilot を呼び出せます。
image.png

生成するコードは前節で記載したDataTable操作のプロンプトにした。生成は1分未満で完了し、引数部分のみ修正すれば動作できるレベルだった。(別に他のLLMでも、という声が聞こえそうですが、)
気になる点は日本語の変数が採用されている。加えてプロンプトへコピペする際に改行があると、2行目以降はコピペされない。

生成されたコード
using System;
using System.Collections.Generic;
using System.Data;
using UiPath.Activities.System.Jobs.Coded;
using UiPath.CodedWorkflows;
using UiPath.Core;
using UiPath.Core.Activities.Storage;
using UiPath.Excel;
using UiPath.Excel.Activities;
using UiPath.Excel.Activities.API;
using UiPath.Excel.Activities.API.Models;
using UiPath.Orchestrator.Client.Models;

namespace testaiuipath
{
    public class クフロ : CodedWorkflow
    {
        [Workflow]
        public void Execute()
        {
            var 出力 = 入力1.Clone();

            // 入力1の各行をループ処理します。
            foreach (System.Data.DataRow 1 in 入力1.Rows)
            {
                // 入力1の行と同じIDを持つ行を入力2から探します。
                var 2 = 入力2.AsEnumerable().FirstOrDefault(r => r["id"].ToString() == 1["id"].ToString());

                // 対応する行が入力2に存在する場合
                if (2 != null)
                {
                    // 出力テーブルに新しい行を作成します。
                    var 新しい行 = 出力.NewRow();
                    // IDはそのまま設定します。
                    新しい行["id"] = 1["id"];
                    var 差分あり = false;

                    // 各列の値を比較します。
                    foreach (System.Data.DataColumn  in 入力1.Columns)
                    {
                        // "id"列は比較対象外とします。
                        if (.ColumnName == "id")
                        {
                            continue;
                        }

                        // 行1と行2で同じ列名の値が異なる場合
                        if (!object.Equals(1[.ColumnName], 2[.ColumnName]))
                        {
                            // 新しい行に、入力2の値を設定します。
                            新しい行[.ColumnName] = 2[.ColumnName];
                            差分あり = true;
                        }
                        else
                        {
                            // 値が同じ場合は、DBNull.Value(空)を設定します。
                            新しい行[.ColumnName] = System.DBNull.Value;
                        }
                    }

                    // 差分があった行のみ出力テーブルに追加します。
                    // 今回の要件では全行出力するため、この条件は不要ですが、
                    // 差分がある行だけを出力したい場合は if (差分あり) { ... } のように使えます。
                    出力.Rows.Add(新しい行);
                }
            }

            // 差分が含まれたデータテーブルを返します。
            return 出力;

        }
    }
}

UiPath Studio Autopilot の感想

ここまでいろいろ検証してみた結果、自然言語からの RPA 実装は まだ発展途上 という印象でした。
あくまで主観ですが、RPA エンジニア目線でのまとめは以下の通りです
(※ 市民開発者目線ではありません)

  • アクティビティの実装 / 修正
    • まだ実運用レベルには達していない
  • 式エディタの実装 / 修正
    • 生成が速く、実用的
  • コード化されたワークフロー
    • もう一声という印象はあるが、十分に実践投入できるレベル

さいごに

記事作成の当初予定は、Studio 以外の AI も検証するつもりでしたが、執筆のタイミングで風邪をひいてしまい断念しました。時間でき次第もう少し検証したいと思います

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?