AIアシスタントとの対話で類似バグを素早く特定し、バグ登録もアクションさせてみた！

# はじめに

本ブログで利用するAutopilot for Everyoneは、セキュアな環境で、すぐに利用可能なUiPathの最先端AIアシスタントです。
エンジニアの作業もチャット形式の対話でロボットに直接指示。RAGが実装されており、独自の情報を扱いながら、一連の作業をスムーズにこなせます。本ブログでは一例として過去のバグ情報をもとに、類似バグを素早く特定し、更にバグ登録もアクションさせてます。起票者も、更にバグ対応者も作業効率化する、そんなイメージで構築してみました。実際に体験してみると、この様な様々なアイデアと活用でレガシーな現場が一変しそう、そんな期待感です。

<iframe width="560" height="315" src="https://www.youtube.com/embed/5yfh30BooGg?si=3jvHoYDHwLebjtnm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

では、以下、構築手順を解説します。

# ❶指定テナントのAutopilot for Everyone利用設定


## AI Trust LayerのAnthropicモデル有効化のポリシー準備

***【手順】***
1. 「Automation Ops」>「ガバナンス」>「+製品ポリシーを追加」
   ①「ポリシー名」入力
   ②「AI Trust Layer」選択
   ③「追加」クリック
   
2. 「モデル」タブ選択
   ①「Anthropic」をON
   ②「保存」クリック

::: note info
上記は、新規でポリシーを作成する手順です。既にAnthropicモデルを有効化したAI Trust Layerののポリシーがあり、そのポリシーを利用する場合はスキップしてください。また、既存のAI Trust Layerのポリシーを変更して利用する場合は、Anthropicモデルの有効化する操作のみでOKです。
:::


## Autopilot for Everyone利用テナントにポリシー割り当て

***【手順】***
1. 「Automation Ops」>「ガバナンス」>「デプロイ」タブ選択
   ①Autopilot for Everyoneを利用するテナントの編集アイコンをクリック
   ②AI Trust Layerの製品ポリシーに前述で作成したポリシーを設定
   ③「保存」クリック

::: note info
Autopilot for Everyoneの利用はテナントごとで設定します。
:::

## 対象テナントにDocument Understanding追加

***【手順】***
1.「管理」>Autopilot for Everyoneを利用するテナントを選択>「サービス」>「+サービスを追加」
   ①「Document Understanding」をON
   ②「追加」クリック

::: note info
Document Understandingを利用しなくてもAutopilot for Everyoneをインストールするには必要の様です。Document Understandingが既に割り当てられているテナントの場合はスキップしてください。
:::

## 対象テナントにAIユニット割り当て
***【手順】***
1.「管理」>「ライセンス」>「ロボットとサービス」タブ選択
   ①Autopilot for Everyone利用テナントの「ライセンスの割り当てを編集」アイコンをクリック
   ②AIユニットの個数を入力
   ③「保存」クリック

::: note info
無料枠以上を使用する場合はAIユニットを割り当てます。上限は下記に記載されています。

https://docs.uipath.com/ja/autopilot/other/latest/overview/licensing

:::


## 対象テナントにAutopilot for Everyoneをインストール

***【手順】***
1. 「管理」>「AI Trust Layer」>「Autopilot for everyone」タブを選択
   ①Autopilot for Everyoneを利用するテナントを選択
   ②「Autopilot for Everyoneをインストール」クリック

**以上でAutopilot for Everyoneを利用するテナントの設定が完了です。**

# Autopilot for Everyoneの利用者を割り当て
Autopilot for Everyone利用者は、「Autopilot」フォルダへのアクセス権が必要です。

1.「Orchestrator」>テナントメニュー「フォルダー」>「Autopilot」フォルダー>「アカウント/グループ/外部アプリ割り当て」
   ①「アカウント、グループ、または外部アプリ」で利用者を入力
   ②「アカウントのロール」でAutomation User等を選択
   ③「割り当て」クリック

# ❷ステップ1：AIアシスタントでバグ情報回答サポート

## ストレージバケットにバグ情報ファイルをアップロードする

***【手順】***
1. 「Orchestrator」>アップロードするフォルダーを選ぶ>「ストレージバケット」>「+ストレージバケットを追加」>「新しいストレージバケットを作成」
   ①任意の名前を入力
   ②「追加」クリック
2. バケットを選択>「新しいファイルをアップロード」
   ①アップロード先ファイルのフルパスを設定
   ②「アップロード」クリック

※ お試しなので、ここではUiPathのリリースノート(2023.10.0～2024.10.8)に記載されているバグ修正情報を抽出し、デモ用に少しだけ情報を付加しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/9e4c58d5-2673-1687-d97c-7024c16728e5.png)

## コンテキストグランディングでインデックスを作成する

***【手順】***
1. 「管理」>「AI Trust Layer」>「コンテキストグランディング」タブ>対象のテナント選択>ストレージバケットののフォルダー選択>「新規追加」
   ①任意の「インデックス名」を入力
   ②任意で「説明」を入力
   ③「ストレージバケット」を選択
   ④「Orchestratorのフォルダー」を選択
   ⑤格納したファイルの「ストレージバケット」を選択
   ⑥「ファイルの種類」を選択
   ⑦「今すぐ同期」クリック

## コンテキストグランディングのインデックスを有効化する

***【手順】***
1. 「管理」>「AI Trust Layer」>「Autopilot for everyone」タブ
   ①対象の「テナント」を選択
   ②「コンテキストグランディング」クリック
   ③「インデックスを有効化」クリック
     ・インデックス作成した「Orchestratorのフォルダー」を選択
     ・作成した「インデックス名」を選択
     ・「Autopilotのための説明」を入力（例えば「過去のバグ情報」など）
     ・「有効化」クリック

## （任意）スターティングプロンプトを設定する
AssistantでAutopilot開始時のプロンプトメニューを入れておくことができます。必須ではありません。

***【手順】***
1. 「管理」>「AI Trust Layer」>「Autopilot for everyone」タブ
   ①「テナント」を選択
   ②「開始プロンプト」クリック
   ③スターティングプロンプトを格納する「Orchestratorのフォルダー」を選択
   ④「+新規作成」クリック
     ・「部署」を入力（例えば、"品質"）
     ・「カテゴリ」を入力（例えば、"分析"）
     ・「ユーザーに表示されるプロンプト」を入力（例えば、"類似バグを探す"）
     ・「AIに送信されるプロンプト」を入力（例えば、"下記のバグと類似のバグはありますか？")
     ・（任意）「注目のプロンプトとして表示」
     ・（任意）「プロンプトとともにファイルのアップロードを必須にする」
     ・「保存」クリック
   ⑤「変更を保存」クリック

::: note info
ユーザーがアクセス権を持たないプロセスに関連するスターティングプロンプトを登録しても、そのプロセスは実行できません。プロセスが存在するフォルダにスターティングプロンプトを格納することをお勧めします。そうすることにより、ユーザーが実行できるプロセスに関連するスターティングプロンプトのみ表示される様になります。
:::

## 【実演】AIアシスタントで過去の類似バグを問合せしてみる
Assistantを立ち上げて過去の類似バグを問合せしてみます。

<iframe width="560" height="315" src="https://www.youtube.com/embed/0weWygKgPlI?si=89rxNB-bsIgyq7NQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

問合せ内容、"下記のバグと類似のバグはありますか？ブレークポイントでメッセージをログアクティビティで止めた時、ローカルパネルの値が表示されない時がある。"に対して、非常に似ているバグと関連する可能性のある別のバグの2件を見つけてくれました。
まさしく、AIアシスタントって感じですね。

::: note info
ここまではロボットを動かさないのでAutomation ExpressユーザーのAssistantでも利用可能です。つまり、Automation Expressライセンスを割り当てた最大100名が利用できます。
:::

# ❸ステップ2：AIアシスタントでバグ登録もサポート
AIアシスタントからバグ登録も出来る様にしてみます。

## バグ登録のワークフローを作成し、プロセスを作成する
バグ登録に必要な情報は引数で受け取ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/38aa0096-3aec-6729-432f-107b4536023d.png)

::: note info
ワークフローを組めば、Redmine、Jira、Backlogなど、現場で使っている、様々なバグ管理ツールに連携可能だと思います。仮にオンプレのRedmineであってもオンプレで実行されているロボットであれば登録できます。他のAIエージェントと比べてUiPathは、アクション対象が非常に広いと言えそうです。
:::

## オートメーションのプロパティを設定する

***【手順】***
1. 「管理」>「AI Trust Layer」>「Autopilot for everyone」タブ
   ①「テナント」を選択
   ②「オートメーションのプロパティ」クリック
   ③「Orchestratorのフォルダー」でフォルダーを選択
   ④「オートメーション」で作成したプロセスを選択
   ⑤「オートメーションのプロンプトの説明」を入力（例えば、"バグ登録する際に利用するプロセス"）
   ⑥「Autopilot向けに有効化」をON
   ⑦引数毎に「編集」アイコンをクリック
     ・表示名を入力
     ・ユーザー向けの説明を入力
     ・Autopilot向けの説明を入力
     ・「保存」クリック
   ⑧「変更を保存」クリック
::: note info
類似バグ情報が引き渡される様に、下記の用に引数のプロンプトを記載します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/957b19a8-5630-fcfa-3d3a-1e1af61d2689.png)
:::

## 【実演】AIアシスタントで類似バグ問合せとバグ登録の連動
Assistantを立ち上げて過去の類似バグを問合せた上で、そのバグ番号をコメントに記載、バグ登録させます。

<iframe width="560" height="315" src="https://www.youtube.com/embed/5yfh30BooGg?si=3jvHoYDHwLebjtnm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

類似バグの情報の記載に加え、類似バグの対応者にアサインします。
新規のバグであっても、更なるプロンプトの工夫や開発者情報を格納すれば、過去のバグ情報や、その他の情報から適任者を推測し、アサインすると言ったことも可能だと思います。特に大規模体制のプロジェクトでは、だれにアサインすべきか把握が大変なので、その恩恵が得られやすいかなと思いました。

::: note info
スターティングプロンプトの「プロンプトとともにファイルのアップロードを必須にする」を有効にするとPDF等のバグ票からでも情報を与えることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/5eef744e-f7da-2b3e-2f42-b9d7b395bd5d.png)

:::


# ❹バグ情報をアップデートする場合の2つの方法

## 手動でアップデートする
ストレージバケットのバグ情報を追加した後、下記の操作を行います。

***【手順】***
1. 「管理」>「AI Trust Layer」>「コンテキストグランディング」タブ
   ①ストレージバケットのテナント選択
   ②ストレージバケットののフォルダー選択
   ③対象のインデックスの三点リーダーから「今すぐ同期」を選択

## ロボットで自動アップデートさせる
自動でアップデートするプロセスを作成します。

***【処理】***
1. 追加のバグ情報をCSVやExcelに出力
1. 「ストレージ ファイルをアップロード」アクティビティで追加バグ情報をアップロード
1. 「コンテキスト グラウンディングのインデックスを更新」アクティビティで更新

::: note info
Assistantからプロセス実行しても良いですが、Unattended Robotで定期的にアップデート情報があるかチェックし、自動更新すると言った方法が運用上、手間なく便利です。
:::

# おわりに
ここで紹介したのは、ほんの一例です。生成AIを活用したテスト自動化も加わることで、開発現場はこれからますます大きく変化していくでしょう。

https://qiita.com/Jun96427231/items/8edc9fcc754396dbe2fb


AIエージェントがトレンドとなっている今、AIを活用するマインドセットの必要性はますます高まってます。より本格的なAIエージェント開発ツール「Agent Builder」を使った活用についても、今後、発信していきたいと思います。