UiPathでGPTAPIを利用する方法

UiPathでGPTAPIを叩き、回答を得る方法をライブラリ使わずに実装し、勉強しようと思った際につまづいた点をメモ。
下記公式リファレンスどおりに、HTTPヘッダとデータをJSONで投げればいいのだけども…リクエストを作る方が大変だった

とりあえず一回動くフローを作りたい人の助けになれ!

messagesを作成する

UiPathで「HTTP要求」アクティビティを使うために、パッケージをインストールする。

まずは、下記の部分を示すJSONObjectを作ります。
格納用のJObject変数を一個作ります。ここではMESSAGE_JOBJECTとしました。

JOBJECT変数に代入します。公式のサンプル通りにする場合、
role:user
content:say this is a test!
を代入します。下記の写真は値を少し変えています。
左辺 変数名("role")、右辺 "system"
左辺 変数名("content")、右辺 "UiPathについて教えてください"

次に下記の部分を作ります。messagesに配列で渡すのですが、Uipathでは、Listを使います。

JObject型を持つList変数を用意します。ここではMESSAGES_LISTとしました。

List変数に先ほど作ったJObject変数を代入します。

Optionsを作る

次に、APIに投げるOPTIONのJSONを作ります。
下記の部分となります。

ここではDictionary変数を使います。
型は、<String,Object>とします。変数名はOPTIONSとしました。

初期値は以下としました。gpt3.5-turbo他を指定。

new Dictionary(Of String,Object) From {{"model","gpt-3.5-turbo"},{"max_tokens",512},{"temperature",1},{"messages",""}}

messgesに""を指定してますが、気持ち悪い場合は最初はなくてもよいです。後から代入します。
Dictionary変数のmessagesに先ほどのListを代入します。

作成したJObjectをもとに、逆シリアライズ化します。式は下記のとおり入力します。

Newtonsoft.Json.JsonConvert.SerializeObject(OPTIONS)

返り値はresとしました。
参照は.ToStringで行います。

ここまでで、リクエストデータが出来上がりました。
続いては、APIにリクエストを行います。

ヘッダを作る

ヘッダを準備し、リクエストを飛ばします。

「HTTP要求」アクティビティを準備します。

エンドポイントはURLを指定します。https://api.openai.com/v1/chat/completions

タイムアウト(ミリ秒)を指定します。デフォルト6000だと、レスポンス前にタイムアウトで終了してしまうので、伸ばします。
要求メソッド:POST
応答を次のとおりに受け入れる:JSON
に指定します。

ヘッダ部分を作ります。プロパティからヘッダーを選択し以下のコレクションを作ります。APIKEYは、OpenAIのサイトから入手した文字列を指定します。
Authorization/入力/String/"Bearer[半角スペース]APIKEY"
Content-type/入力/String/"application/json"

プロパティに以下を設定します。
本文:シリアライズ化したJSON文字列
本文形式:application/json
応答コンテンツは変数をhttp_resとしました。

これで実行すると、http_res変数にjson形式でレスポンスが返ってきます。

結論

真面目にデータ作るとめんどくさすぎる!!!!
Pythonのライブラリなどの楽さがよく分かる。
UipathにもGPTAPIのライブラリがあるので、慣れたらそっちを使おうと思います。


参考サイト等




この記事が気に入ったらサポートをしてみませんか?