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

C&S ENGINEER VOICE

SB C&S

【UiPath】Integration Service のOpenAIコネクタを利用して、ChatGPTに質問を投げるロボットを作成してみた

RPA
2023.04.25

みなさまこんにちは。前田です。
今回は掲題の通り、Engineer Voice初!UiPathの記事を執筆しました。

ぜひこの記事を見ながら、一緒に触ってみて下さいね。


目次

1.はじめに
2.準備
3.Orchestoratorでのコネクションの追加
4.ロボットの作成
4-1.プロジェクトの作成
4-2.入力ダイアログの作成
4-3.終了判定と終了時の処理の作成
4-4.質問入力ダイアログの作成とモードの判定
4-5.Integration Service「コネクタ」を利用して、ChatGPTに接続
4-6.ChatGPTからの返答をメッセージボックスに表示する
5.完成したロボットを動かしてみよう
6.さいごに


1.はじめに


今まさに大流行中の、GPT-4を利用した
OpenAI社のAIチャットボットである「ChatGPT」を活用するために、
まずはUiPath Integration Serviceで提供されているコネクタを利用して、
簡単なロボットを作成していければと思います。

ChatGPTについての詳細は、以下記事(外部サイト)をご参考にしていただければと思います。
ChatGPTとは?始め方や使い方、料金も紹介【4月11日更新】

 

2.準備


・アカウント登録
実際にChatGPTを活用するためには、OpenAIのアカウントを作成する必要がありますので、まずは以下公式ページよりご登録下さい。
https://openai.com/blog/chatgpt

 

・API keyの準備
ChatGPTとUiPathとの接続には、OpenAIが用意しているAPIを利用します。
以下URLよりOpenAIのAPI公式サイトへログインします。
https://openai.com/product

 
ログインができたら、右上のアイコンより「View API keys」をクリックし、
「Create new secret key」を押下するとAPIキーが発行されます。

※注意点※
APIは有料となりますが、2023年4月時点では$5まで無料で利用できます。(シンプルな質問100回程度)
アカウントにクレジットカードを紐づけなければ、有料分は利用できず課金されませんので、無料で利用したい場合はクレジットカードの登録を行わないようにしてください。

 
3.Orchestoratorでのコネクションの追加


次に、UiPathの方で設定を行っていきます。
まずは、Orchestoratorにログインし、左メニューから「Integration Service」を選択します。
私用する対象のフォルダの「コネクタ」から「OpenAI」を選択し、右上の「コネクションを追加」を押下します。

01.PNG
OpenAIに接続するためのAPIキーの入力を求められますので、先ほど発行したAPIキーを入力し、「接続」を押下します。
たったこれだけで、UiPathからOpenAIに接続し、を呼び出せる準備は完了です。

あとは実際にロボットを作成し、APIでChatGPTを呼び出していきましょう!

 

4.ロボットの作成


では、実際にロボットを作成していきます。

 

4-1.プロジェクトの作成

まずはUiPath Studioを開いて、新しいプロジェクトを作成します。
今回はダイアログで入力した内容をChatGPTに投げ、終了が選択されればロボットを終了するという状態遷移のロボットを作りたいですので、
Mainの中のワークフローを削除し、アクティビティから「フローチャート」を作成します。

このフローチャートの中に、状態遷移で自動化したい内容を作りこんでいきます。

また、フローチャート全体で使用するための変数も作成しておきます。

今回は、


『modeType』 ...変数の型:String,  スコープ:フローチャート
『inputText』 ...変数の型:String,  スコープ:フローチャート
『answerText』...変数の型:String,  スコープ:フローチャート



上記の3つの変数を作成しておきましょう。
上から順に、
ChatGPTのモード選択値保存用、
ユーザー入力値保存用、
ChatGPTからのレスポンス保存用
となります。
02.PNG

 

 

4-2.入力ダイアログの作成


次に、フローチャートの中に入力ダイアログアクティビティを挿入します。
挿入したら、Startから線を伸ばして入力ダイアログアクティビティに接続します。
これで、開始したらすぐに入力ダイアログの表示に遷移させることができます。
線を繋げたら、次は入力ダイアログの設定に移ります。アクティビティをダブルクリックして、以下の様に設定していきます。

03.PNG
【設定内容】
ダイアログのタイトル:任意
入力ラベル:"モードを選んでください。
Text:GPT3.5以前
Chat:GPT3.5以降"
入力の種類:【複数選択】
入力オプション:"Text;Chat;終了"
入力した値:modeType

 

「入力した値」に指定されている変数『modeType』は先ほど作成した変数で、
「ユーザーがダイアログで'Text', 'Chat', '終了'のどれを選んだか」を保存しておくための変数となります。

 

 

4-3.終了判定と終了時の処理の作成

それでは、次に、先ほどのダイアログ上で「終了」が選択された場合の処理を作成していきます。
ダイアログ上で「終了」が選択された場合、ロボットを終了させ、終了することがわかりやすいように、「ロボットを終了します」というメッセージボックスを出して終了するように作成していきましょう。

まずは「終了」が選択されたかどうかをの判定を行うために、「フロー条件分岐」アクティビティを挿入します。
このアクティビティでは、If文のように、「XXがYYの場合」という条件を挿入し、合致する・しないで後続処理を分岐してあげることができます。

今回は、変数『modeType』に"終了"が入っているかどうか、を判定したいですので、
「フロー条件分岐」アクティビティのプロパティ、「条件」に以下を入力します。
04.PNG
【設定内容】
条件:modeType = "終了"

 

これで、『modeType』に"終了"が入っていればTrueに、それ以外の値が入っていればFalseの方に遷移するように作成ができました。 05.PNG

 

では次に、終了時の処理を作成していきましょう。
「メッセージボックス」アクティビティを挿入し、判定がTrueだった場合は終了となりますので、Trueの方の線とアクティビティを繋げます。
06.PNG

 

そして、「メッセージボックス」アクティビティのプロパティには以下を設定します。
07.PNG
【設定内容】
テキスト:"ロボットを終了します。"

 

これで、終了時の条件判定と処理の作成は完了です。

 

 

4-4.質問入力ダイアログの作成とモードの判定


続いて、ChatGPTに質問する内容を入力してもらうためのダイアログを作成しましょう。
「入力ダイアログ」アクティビティを挿入し、ダブルクリックをしたら以下の様に設定します。
08.PNG
【設定内容】
ダイアログのタイトル:任意
入力ラベル:"質問を入力してください。"
入力の種類:テキストボックス
入力した値:inputText

 

これで、『inputText』に、入力された質問内容が格納されるように入力ダイアログの設定ができました。

 

続いて、フローチャートに戻り、先ほどのフロー条件分岐から入力ダイアログに矢印をつなぎます。
『modeType』に入っている値が"終了"かどうかという条件で判定していますので、
質問を行うためには『modeType』に入っている値が"終了"以外でないといけないため、"False"の方の矢印と繋いであげます。
以下画像のようになっていればOKです。
09.PNG

上記が作成できましたら、今度は更にモードの判定を行う必要があります。
『modeType』の値が"Text"なのか"Chat"なのかでChatGPTに投げるアクティビティが異なるためです。

 

では早速、「フロー条件分岐」アクティビティを挿入し、オプションを設定していきましょう。
先ほどと同様に、『modeType』を元の値として判定していきます。
10.PNG
【設定内容】
条件:modeType = "Text"
表示名:任意(画像では「モード判定」)

 

設定ができたら、前に挿入した入力ダイアログと矢印をつなげます。
11.PNG

次はいよいよIntegration Serviceの「コネクタ」を利用して、ChatGPTに接続する部分を作成していきます。

 

 

4-5.Integration Service「コネクタ」を利用して、ChatGPTに接続


まず、上部ツールバー内「パッケージを管理」をクリックし(①)、「パッケージを管理」ウィンドウを開きます。
そして、左側メニュー「オフィシャル」を選択し(②)、検索窓に「OpenAI」を入力します。(③)
執筆時点ではOpenAIのアクティビティはプレリリースですので、「フィルタ」ボタンより「プレリリースを含む」にチェックを入れます。(④)
「OpenAI」が出てきたら選択して(⑤)、「インストール」ボタンを押下し(⑥)、保存ボタンを押下します。(⑦)

12.PNG

これで、Integration Serviceで接続しておいたコネクションを使って、ChatGPTを呼び出す準備ができました。

 

次に、さっそくインストールしたアクティビティパッケージを利用していきます。
中身を見てみると、「Generate Chat Completion」アクティビティと「Generate Text Completion」アクティビティが存在することがわかります。
これが先ほどモードの入力で選択した、「Chat」と「Text」それぞれに対応するアクティビティとなります。
13.PNG

 

では、それぞれのアクティビティを挿入していきましょう。

 

まずは、「Generate Chat Completion」アクティビティから挿入します。
挿入してダブルクリックすると、しばらく読み込みが走ったのち、コネクションが表示されます。
先に3で作成していたOpenAIのコネクションを選択します。
そして、詳細オプションを表示して、APIにどんなパラメーターを渡すかを設定していきます。

APIのパラメータの詳細については、執筆現在UiPath公式ではアクセスできないようになっているようです。(4/20時点)

しかしながら、設定する内容はとても簡単です!
もちろん、Tokenの上限なども設定できるのですが、今回は最もシンプルな設定で行きたいと思います。

 

以下の通り設定します。

14.png
 
【設定内容】
コネクション:3で作成したもの
※今回の場合、Orchestorator上ではこのように表示されています。
15.PNG

Prompt:inputText
『出力』
Top Generated Text(出力):answerText

 

これだけで、ダイアログで入力した内容をChatGPTに投げ、answerTextの中に結果を格納してくれるアクティビティを設定することができます。 

 

設定が完了しましたら、モード判定のフロー条件分岐から、矢印をつなぎます。
条件には「modeType」が「Text」かを設定しましたので、Falseの方から「Generate Chat Completion」アクティビティに矢印をつないで、以下の様になります。
 16.png

 


同様に、「Generate Text Completion」アクティビティも挿入し、設定していきます。

 

設定内容は以下になります。
17.png
【設定内容】
コネクション:3で作成したもの
Prompt:inputText
『オプション』
Model:任意
『出力』
Top Generated Text(出力):answerText

 


設定内容は「Generate Chat Completion」とほぼ変わりありませんが、
Textの方では使用するModelを選択することができます。

GPTのModelの差異については最速のモデルがada、高品質のモデルがdavinci、などの違いがありますが、詳しくは各自お調べ頂ければと思います。

 

設定が完了しましたら、こちらもモード判定のフロー条件分岐から、矢印をつなぎます。
条件には「modeType」が「Text」かを設定しましたので、Trueの方から「Generate Text Completion」アクティビティに矢印をつないで、以下の様になります。

18.PNG

 

  

4-6.ChatGPTからの返答をメッセージボックスに表示する

最後に、4-5で返ってきたChatGPTの回答をメッセージボックスに表示しましょう。

「メッセージボックス」アクティビティを挿入し、『answerText』を表示させます。
設定内容は以下です。
19.PNG
【設定内容】
テキスト:answerText

 

最後に、「Generate Chat Completion」と「Generate Text Completion」のどちらも終わった後に回答を表示させる必要がありますので、
両方のアクティビティから「メッセージボックス」アクティビティに矢印をつなぎます。
そして、「メッセージボックス」アクティビティが終わると、最初の入力ダイアログに戻るように矢印をつなぎます。


20.PNG

   

これでロボットは完成です!実際に動かしてみましょう。

 

 

5.完成したロボットを動かしてみよう

今回は、UiPathについてTextのModeで質問してみます。
質問内容は「UiPathを使ってどんな業務を自動化すると効果的ですか?」にしてみます。

以下画像は実際に動かした際の動きになります。(GIF画像)

実行.gif

ちゃんと動いて回答を返してくれていますね!
前提条件などを質問に入れたり、やりとりを数回すると、より色々な回答を返してくれるそうなので、私も色々と試してみたいと思います。

6.さいごに

いかがだったでしょうか?
今回はChatGPTとの接続でしたが、Integration Serviceはたくさんのサービスとのコネクタが用意されています。
簡単に他のサービスとUiPathロボットとの接続が可能になりますので、
ぜひ他のサービスでも利用してみて下さいね!

 

著者紹介

先端技術推進統括部
RPAビジネス推進部
前田 由委