はじめに
ChatGPTがバズってる最近、UiPathのような自動化ツールとの連携でより便利に使える方法も増えて来てます。スプレッドシートとの連携や、VS Codeのアドオン機能としてさまざまな連携方法がある中、UiPath Studioではどのように連携するのか、具体的なワークフローの設定方法までをまとめてみたいと思います。
連携の概要
ChatGPTのAPIですが、現在はWaiting Listとして公開されていません。ですので直接的にAPIをStudioから叩くことは出来ないのですが、ChatGPTを提供しているOpen AIは似たような言語モデルを複数持っています。今回はChatGPTのエンジンと限りなく近い、text-davinci-003
を利用することにします。ChatGPTのエンジンと今回のダビンチの違いは以下を参照ください。
今回の連携は、このOpen AIのCreate completionモデルのAPIをStudioから叩くまでをやってみたいと思います。
ワークフローの設定方法
ワークフロー自体は、以下のステップで今回は作成していきます。
Open AIにSign Upして、APIを取得
以下のリンクより、Sign Upをします。
https://openai.com/api/
サイトへログイン後、プロフィールアイコンからAPI管理を開き、秘密鍵を作成し、コピーします。一度閉じると二度と秘密鍵を確認できないので、コピーした鍵を上書きしないように気を付ける必要があります。
Studioにてダイアログ(質問のInput Form)を作成
今回はこのようなダイアログに質問を記載できるフォームを作成します。そこで取得した値は、Questionとして定義した変数に格納し、後述するパラメーターに追加します。
APIのパラメータ設定
JsonInputDataとして、APIを叩くのに必要なパラメータをこちらに記載しています。
APIの各種パラメータは以下を参照してください。
@"{
" + "\n" +
@"""model"": ""text-davinci-003"",
" + "\n" +
@"""prompt"": ""Q: " + Question + @"?\nA:"",
" + "\n" +
@"""temperature"": 0,
" + "\n" +
@"""max_tokens"": 3000,
" + "\n" +
@"""top_p"": 1,
" + "\n" +
@"""frequency_penalty"": 0.0,
" + "\n" +
@"""presence_penalty"": 0.0,
" + "\n" +
@"""stop"" :""\n""
" + "\n" +
@"}"
またHTTP Requestアクティビティはこのように記載しています。
AuthはBearer認証のため、Bearer {API_KEY}
のように記載する必要があるのがポイントです。
レスポンスを加工して表示
最後に、レスポンスのJSONをデシリアライズして、返答部分のテキストを抽出します。
レスポンスはこのようになっており、JsonObjectOutput.SelectToken("$.choices.[0].text").ToString()
という式で返答部分のみ抽出しています。
おわりに
このように比較的簡単に、ChatGPT風の言語モデルを使い、APIを叩くことができるようになります。ループ処理を施すことで連続的にAPIを叩くようにしたり、UiPath Appsを用いてよりUIをリッチにすることも可能です。また例えば、社内用のワークフローとしてこちらを社員に提供し、投げられた質問を保存することで、社員がどのように利用しているのか、セキュリティ的な使い方は問題ないのか、などを分析する事も可能だと思います。今回は言語モデルで試してみましたが、次回は画像生成モデルなどを試してみたいと思います。