特定ファイルに関する情報をChatGPTさんに質問したい？ UiPath Ask GPTアクティビティを使ってみよう

みなさん、ChatGPT使ってますか？
この前、おかんの口からChatGPTというワードが出てきてビックリした@ManabuTechです。
僕のおかんが知っているということは、おそらくほぼ全ての人類がChatGPTの存在を知っていると思われます、はいー。

今回は、PDFやテキストファイルの内容をChatGPTに簡単に教えてもらう方法を紹介します。
例えば、英文で書かれたライセンス規約のPDFファイルから、日本語で質問してChatGPTさんに回答してもらうことができます。

## ChatGPTをビジネスで使うにはまだ早い？

ChatGPTさんは非常に優秀で、最新のChatGPTでは弁護士試験の上位になれると言われています。
しかし、範囲を絞らないと質問に対して正確な答えを出すことは現在できません。

例えば、「プテキリオンザウルスについて教えて」と質問すると、即座に回答してくれます。素晴らしいスピードです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/8accd912-7e1f-2237-5fd1-a303b0e231b4.png)

しかし、残念なことに「プテキリオンザウルス」はいかにも実在しそうな恐竜なんですが、私が作った恐竜ですので、この恐竜の化石はどの博物館や研究施設に行っても見ることはできません。
ChatGPTさんは、真顔で6メートルだの海棲爬虫類だの大嘘をつくことがありますので、ビジネスシーンで使うことはまだ難しいでしょう。
ちなみに、Google先生は正直に知らないと言ってくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/eb4e5493-03c8-8922-74fe-4f603e5b9d37.png)

## ChatGPTに特定の文書に関する質問をするデモ

ChatGPTを利用してインターネットから正確な情報を取得することは現時点では難しいのですが、現在でも特定ファイルのテキスト情報に限定すれば、ある程度正確に回答を返すことができます。この使い方であれば、ビジネスでも使うことができると思われます。

![Snapshot_106.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/68d96399-6c1b-da74-12bd-d431158d4805.png)

![Snapshot_107.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/c3531ca3-dfb0-069e-8e33-6980477bec39.png)

![Snapshot_108.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/ff73fc4a-85d4-ca03-5427-5fba8c681a05.png)


::: note warn
ChatGPTは便利ですが質問の内容が学習に利用されているとも言われています。情報漏洩を懸念してイタリアはChatGPTの使用を禁止する声明を出しました。会社で使用する際は、ChatGPTを使ってもいいか事前に確認したほうがいいでしょう。
:::

ChatGPTのサイトにファイルのテキストをコピペしても行う方法もありますが、今回はUiPathというRPAツールを使い、特定ファイルからテキストを読み取りChatGPTに質問を投げる処理を自動化してみます。

UiPathは世界中で多くの企業に採用されていますが、個人利用であれば無料で使用できるCommunity版も用意されています。

今回、文書に関してChatGPTで質問するデモを3つ用意しました。
処理は簡単なのですが、色々なシーンで使えるレベルだと思います。
- 半定型文書（請求書）
- 非定型 日本語文書（童話：赤ずきん）
- 非定型 英語文書（UiPathセキュリティホワイトペーパー）

### デモ1.半定型文書

請求書の情報をChatGPTで読み込むデモです
（クリックするとデモ動画の再生が開始されます）
<iframe width="640" height="360" src="https://www.youtube.com/embed/qT7oH84Wzjg?start=116&end=227" title="特定ファイルに関する情報をChatGPTさんに質問したい？ UiPath Ask GPTアクティビティを使ってみよう" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<br><br>
請求書から読み取りたい場合も多いですよね。
どの程度情報を取得できるかやってみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/fec8a7ff-7044-6a05-a68d-c5f3db1134b3.png)
<br>
**質問1:**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/6db07313-fe60-186d-e865-3112d8236baf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/9492d766-50ea-7bd1-a783-6a9a8863d5b7.png)
素晴らしい、正解です！
<br>
**質問2:**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/cd57303c-77ae-ba06-d476-1ea0b4dceb7d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/32183372-9791-8c04-537d-51801a5f09f3.png)
惜しい、口座番号が抜けています。
<br>
**質問3:**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/40e6f6f4-06a8-4545-f7a3-0bddfd569a88.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/0eeb7d54-f8fe-0e15-b7c6-16f3be82fa71.png)
質問を訂正することで口座番号も含めて取得することができました。
AIに正確な回答を取得する質問を作るスキルが重要になってきますね。
<br>
**質問4:**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/815672fd-53d6-9b90-d69a-fe3707351ff0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/e143615a-33f8-10d9-403c-9e0352594200.png)
メールアドレスも難なく取得できました、素晴らしい。

### デモ2. 非定型 日本語文書

グリム童話の赤ずきんの情報をChatGPTで読み込むデモです
著作権フリーのため、[グリム童話の赤ずきん](https://www.aozora.gr.jp/cards/001091/card59835.html#download)を使用しています。
（クリックするとデモ動画の再生が開始されます）
<iframe width="640" height="360" src="https://www.youtube.com/embed/qT7oH84Wzjg?start=228&end=410" title="特定ファイルに関する情報をChatGPTさんに質問したい？ UiPath Ask GPTアクティビティを使ってみよう" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>


<br>
<br>

**質問1:**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/795b3d0a-8190-4c85-4299-90f81019afa0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/605887bb-b449-7eda-c309-65c87d9954e8.png)
正解です。ChatGPTさんにはちょっと簡単すぎたかもしれません。
<br>
**質問2:**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/c7d590b5-8d7f-b4bc-3a8d-2cbae29d4e7f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/015b7216-3639-fcc5-260e-ecb0642ad91b.png)
素晴らしい、翻訳者を取得できています！
<br>
**質問3:**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/aa3ecc1c-7f44-39dd-c596-57414dc11917.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/a41a7076-a385-d732-9591-e46b91c1988c.png)
作成日付の定義をどうするか微妙ですが、日付を取得できています。
<br>
**質問4:**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/19265173-068f-d8ef-fab5-adc104687dfc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/5d690478-b9d0-50ed-5b09-e40d181561ef.png)

:::note alert
UiPathのAskGPTアクティビティには文字数制限があるようで、要約されていませんでした。要約などの回答の文字数が多くな用途には利用できないようです。
:::

<br>

**質問5:**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/0a3d35eb-4529-fb2b-a185-615fe0bc398e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/84cc3562-51de-a1e5-1e44-45811c2a105f.png)
これは間違いですね。オオカミがなぜか赤ずきんちゃんを助けたとなっています。ツンデレおおかみと赤ずきんちゃんの恋愛が始まりそうな予感がしますが、ChatGPTの今後の精度向上に期待ですね。


### デモ3. 非定型 英語文書

[UiPathホワイトペーパー](https://www.uipath.com/hubfs/resources/images/products/UiPath-Automation-Cloud_Security_Whitepaper.pdf)の情報をChatGPTで読み込むデモです
（クリックするとデモ動画の再生が開始されます）

<iframe width="640" height="360" src="https://www.youtube.com/embed/qT7oH84Wzjg?start=3&end=116" title="特定ファイルに関する情報をChatGPTさんに質問したい？ UiPath Ask GPTアクティビティを使ってみよう" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<br><br>
UiPathホワイトペーパーは全文英語で書かれています。
英語が苦手な人は骨の折れる作業ですよね。ブラウザは簡単に翻訳かけられるのですが、PDFは手間だったりするので、情報が取得できれば利用シーンは多そうですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/a78b74eb-e04d-e369-6b47-def5f75be1c8.png)
<br>
**質問1:**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/2dbba1d0-ddab-6900-71d8-9e8b589de08f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/a1ef7f74-c66c-97fe-f030-c4b527f662ec.png)
30日間という回答が出ました。これは正解です。
エビデンスは怪しいですが、ログデータは30日保存されます。
<br>
**質問2:**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/8c206dda-48e7-2661-c056-cf9b6614c357.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/ae361391-4d81-9e52-7576-3e5ab67cf789.png)
回答が英語になっていますが、正解です。
<br>
**質問3:**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/ad8bb3cb-15d7-0169-44dc-c69f94c0c9ae.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/c4dd9a5b-e627-a043-27b2-28efa601bc7d.png)
回答が英語になっていますが正解です。
おそらく、質問に続けて日本語で教えてと付け加えると日本語で返してくれると思います。

## UiPath Studio 自動化処理の作り方

それでは、作り方を解説します。
今回のUiPathの「Ask GPT」を使用する方法は「APIって何ぞ？」というプログラミング経験の無い人でもAPI登録やHTTPリクエストなど難しい作業を行わなくても良いので、ご安心ください。
（クリックすると作成動画の再生が開始されます）

::: note warn
InternalLabs.OpenAI.ActivitiesはInternalLabs.GPT.Activitiesという名称になりました。動画内ではInternalLabs.OpenAI.Activitiesとなっていますのでご注意ください。
:::

<iframe width="640" height="360" src="https://www.youtube.com/embed/qT7oH84Wzjg?start=410" title="特定ファイルに関する情報をChatGPTさんに質問したい？ UiPath Ask GPTアクティビティを使ってみよう" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>


:::note info
作った自動化処理はGithubに格納していますので、ダウンロードすればみなさんのPCのUiPath Studio / Robotで動かすことができます。
https://github.com/manabutech-kyushu/uipath-ask-gpt
:::

基本的な作り方は動画で確認していただくとして、この記事では動画で解説できていなかった箇所を重点的に解説します。

### UiPath Studioの準備

ここでは、UiPath Studioがインストールされている状態からスタートします。

個人利用の場合は、無償で利用可能なCommunity版がUiPath公式サイトからダウンロードできます。企業で使用したい場合はトライアルを申請してください。
詳しいインストール方法はChatGPTさんに聞いてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/e786186f-9329-d13c-52f1-1f487dde193d.png)

UiPath トライアルの方法を解説したこちらの記事もおすすめです

https://qiita.com/MUCHIUCHI_OJISAN/items/c37f16eaeb08dfbc7a7d

### パッケージのインストール

UiPath Studio上部のパッケージを管理よりパッケージを追加します。
必要なパッケージは2つです。

|パッケージ |取得元  |概要  |
|---|---|---|
|InternalLabs.GPT.Activities|マーケットプレース  |ChatGPTへのアクセス  |
|UiPath.PDF.Activities|オフィシャル|PDFファイルからテキスト情報取得  |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/cfcaf60e-09de-c456-95b1-ca304a047f6c.png)

::: note warn
今回使用した「Ask GPTアクティビティ」はMarketplaceのInternalLabチームにより公開されているものです。
UiPathが公式に作成してサポートしているものではありませんので、ご注意ください。
:::

::: note info
今回使用したPDFは文字情報が入っているものを使用しています。
文字情報が入っていないPDFファイルや画像ファイルからもOCRアクティビティを使用することによって対応可能です。
UiPath 日本語対応のOCRはDocument Understandingが必要になります。
:::

### 使用するアクティビティ

UiPath Studioではアクティビティと言われる部品を組み合わせて自動化処理を作っていきます。

|アクティビティ |概要 |
|---|---|
|ファイルを参照|PDFファイルの読み込み画面|
|PDFのテキストを読み込み|PDFからテキスト情報を読み込む|
|入力ダイアログ|質問の入力画面|
|ASK GPT|ChatGPTに質問を投げて回答をもらう|
|入力ダイアログ|回答の表示画面|
|繰り返し（後判定）|ある条件の時に処理を繰り返す|

::: note info
回答をウィンドウに表示していますが、Excelなどのファイルに書き出すこともできます。
フォルダに格納された複数のPDFファイルに質問をして、Excelファイルにまとめることもできます。
:::

### AskGPTアクティビティについて

AskGPTアクティビティはUiPathマーケットプレースで公開されているInternalLabs.GPT.Activitiesパッケージをインストールすると使えるようになります。
UiPathにはファイルからテキストを読み取る色々な方法が用意されているので、簡単にテキスト情報を取得できます。
取得したテキストと質問をAskGPTに設定するとChatGPTが回答を返してくれます。
![Snapshot_113.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/0a86910b-bf99-48b2-cf35-b7a14c9f5052.png)

::: note info
UiPath AskGPTアクティビティはAzure上に構築されたOpenAIリソースを利用しています。
OpenAIに情報が送信されないため、自動化で使用したテキスト情報が再学習に使用されるリスクはありません。
:::

::: note warn
InternalLabs.GPT.Activitiesは公式にサポートされているものではありませんのでご注意ください。現在、デモやPoCなどに無料で利用することができます。将来的にUiPath公式のアクティビティに統合される予定です。
:::

### 文字列連結処理

今回の自動化処理で一番難しい回答を表示する入力ダイアログの文字列連結について解説します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/e2860eb7-61e1-9312-2041-3b78211122c7.png)

アクティビティ間で情報を受け渡すために変数というデータを入れる箱を作って情報をやり取りします。
UiPath Studioはローコードツールですが、難しいことを使用とするとこの変数を理解する必要があります。

Ask GPTアクティビティは、複数の質問を一気に受け付けることができるようになっています。
入力のQuestion ListがStringのList型で質問を複数格納することができます。
出力のResponse ListはDictionary(String,String)のList型で、回答、質問、エビデンスをChatGPTさんが格納してくれます。今回は回答リストという名前で変数を作っています。

|取得したい内容 |書き方 |
|---|---|
|1つ目の質問|回答リスト(0)("question")|
|1つ目の質問の回答|回答リスト(0)("answer")|
|1つ目の質問のエビデンス|回答リスト(0)("evidence")|

一括で質問を投げる時は、2つ目の質問は回答リスト(1)("question")のように数字が増えていきます。繰り返し処理などで作る必要がありますが、今回は質問を1つずつ行うため、0固定で取り出しています。

プログラミング経験の無い方は何を言っているか分からない、いわゆるポルナレフ状態におちいると思いますが、そんな時は素数を数えて落ち着き、おまじないと思って入力ラベルに次の文字列をコピペしてください。UiPath Studioで業務を自動化していくうちに分かってきます。（たぶん）

```
"質問：" + 回答リスト(0)("question") + Environment.NewLine + "回答：" + 回答リスト(0)("answer") + Environment.NewLine + "エビデンス：" + 回答リスト(0)("evidence") + Environment.NewLine + Environment.NewLine + "続けて質問する？"
```

## 気づき

実際に触ってみて、今回のデモのようにフォーマットが決まっていない非定型文書である契約書などから情報を取得する場合には非常に有用だと思いました。
しかし、フォームのような定型文書、請求書のような半定型文書から情報を読み取る場合は、UiPathが用意しているDocumentUnderstanding機能を使った方が精度は高くなると思います。

UiPathをあまり触ったことが無かった人も、使い倒している方も、ChatGPTを業務に組み込んで効率化を検討してみてはいかがでしょうか？

励みになりますので、内容が面白かった人はいいね・フォローお願いします！

UiPathでExcelとChatGPTを連携させて住所から市区町村などに分割するデモを作成しました。

https://qiita.com/ManabuTech/items/9e10fd59636174ba810c