UiPathでGPTAPIを利用する方法
UiPathでGPTAPIを叩き、回答を得る方法をライブラリ使わずに実装し、勉強しようと思った際につまづいた点をメモ。
下記公式リファレンスどおりに、HTTPヘッダとデータをJSONで投げればいいのだけども…リクエストを作る方が大変だった
とりあえず一回動くフローを作りたい人の助けになれ!
messagesを作成する
![](https://assets.st-note.com/img/1688884475413-vPOmrxAGkF.png?width=800)
UiPathで「HTTP要求」アクティビティを使うために、パッケージをインストールする。
![](https://assets.st-note.com/img/1688885022771-Rl9j3BKin0.png?width=800)
まずは、下記の部分を示すJSONObjectを作ります。
格納用のJObject変数を一個作ります。ここではMESSAGE_JOBJECTとしました。
![](https://assets.st-note.com/img/1688885163237-DVVfl6RzIN.png?width=800)
![](https://assets.st-note.com/img/1688885443222-MBINHberR7.png)
JOBJECT変数に代入します。公式のサンプル通りにする場合、
role:user
content:say this is a test!
を代入します。下記の写真は値を少し変えています。
左辺 変数名("role")、右辺 "system"
左辺 変数名("content")、右辺 "UiPathについて教えてください"
![](https://assets.st-note.com/img/1688885633711-YSMEI3BmkH.png)
次に下記の部分を作ります。messagesに配列で渡すのですが、Uipathでは、Listを使います。
![](https://assets.st-note.com/img/1688885907217-l73RZqJytW.png?width=800)
JObject型を持つList変数を用意します。ここではMESSAGES_LISTとしました。
![](https://assets.st-note.com/img/1688886175703-oFExYNbP0D.png?width=800)
List変数に先ほど作ったJObject変数を代入します。
![](https://assets.st-note.com/img/1688886283286-cEZTAhhhMc.png)
Optionsを作る
次に、APIに投げるOPTIONのJSONを作ります。
下記の部分となります。
![](https://assets.st-note.com/img/1688886468545-7Oc8H73aB4.png?width=800)
ここではDictionary変数を使います。
型は、<String,Object>とします。変数名はOPTIONSとしました。
![](https://assets.st-note.com/img/1688886672362-QkxAWaY6SE.png?width=800)
初期値は以下としました。gpt3.5-turbo他を指定。
new Dictionary(Of String,Object) From {{"model","gpt-3.5-turbo"},{"max_tokens",512},{"temperature",1},{"messages",""}}
messgesに""を指定してますが、気持ち悪い場合は最初はなくてもよいです。後から代入します。
Dictionary変数のmessagesに先ほどのListを代入します。
![](https://assets.st-note.com/img/1688886933922-VjW3ev5f3j.png?width=800)
作成したJObjectをもとに、逆シリアライズ化します。式は下記のとおり入力します。
![](https://assets.st-note.com/img/1688887122204-y7jvWjqUtj.png)
Newtonsoft.Json.JsonConvert.SerializeObject(OPTIONS)
返り値はresとしました。
参照は.ToStringで行います。
![](https://assets.st-note.com/img/1688887405885-XAT7KnDBlm.png?width=800)
ここまでで、リクエストデータが出来上がりました。
続いては、APIにリクエストを行います。
ヘッダを作る
ヘッダを準備し、リクエストを飛ばします。
![](https://assets.st-note.com/img/1688887819549-3Cp43IqYvG.png?width=800)
「HTTP要求」アクティビティを準備します。
![](https://assets.st-note.com/img/1688887575936-bfY4iaQxsv.png)
エンドポイントはURLを指定します。https://api.openai.com/v1/chat/completions
タイムアウト(ミリ秒)を指定します。デフォルト6000だと、レスポンス前にタイムアウトで終了してしまうので、伸ばします。
要求メソッド:POST
応答を次のとおりに受け入れる:JSON
に指定します。
![](https://assets.st-note.com/img/1688887714365-esjhAimBEs.png)
ヘッダ部分を作ります。プロパティからヘッダーを選択し以下のコレクションを作ります。APIKEYは、OpenAIのサイトから入手した文字列を指定します。
Authorization/入力/String/"Bearer[半角スペース]APIKEY"
Content-type/入力/String/"application/json"
![](https://assets.st-note.com/img/1688888102831-J4FUB7HhPu.png?width=800)
プロパティに以下を設定します。
本文:シリアライズ化したJSON文字列
本文形式:application/json
応答コンテンツは変数をhttp_resとしました。
![](https://assets.st-note.com/img/1688888433733-5B23btjDot.png)
これで実行すると、http_res変数にjson形式でレスポンスが返ってきます。
結論
真面目にデータ作るとめんどくさすぎる!!!!
Pythonのライブラリなどの楽さがよく分かる。
UipathにもGPTAPIのライブラリがあるので、慣れたらそっちを使おうと思います。
参考サイト等
この記事が気に入ったらサポートをしてみませんか?