15
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OpenAI を UiPath から呼び出してみる

Last updated at Posted at 2023-03-29

OpenAI を UiPath から呼び出してみる

今話題のチャットGPT。UiPath の Integration Service でもコネクタのプレビュー版が出ています。
本記事では、前半 「HTTP要求」アクティビティをもちいたAPIの呼び出し方 、後半 Integration Service での実装例 を書きたいとおもいます。

コネクタの作成方法からチャットGPTに聞いてみる

OpenAI1.png
OpenAI2.png

素晴らしいですよね☀
APIを使う際は、サイトや仕様書を探すところで骨を折ることが多いので
この精度で導入手順を案内されただけで感動です(´Д⊂ヽ

API キーを取得してみる

OpenAI のサイト上でアカウント登録 ~ API キーを取得する手順
OpenAI3.JPG
「Product」画面の「Get started」ボタンをクリック
OpenAI4.JPG
アカウント登録が完了したら画面上部の「API reference」をクリック
OpenAI5.JPG
「Authentication」セクションの「API Keys(リンク)」をクリック
OpenAI6.JPG
「Create new secret key」をクリック
OpenAI7.JPG
API キーが生成されるのでメモ帳にコピーしましょう

【前半】API を使ってみよう ~ HTTP要求アクティビティによる実装例 ~

OpenAI の利用規約上、チャットGPTのサイト上から ロボを利用してデータの抽出・取得をおこなうことは禁止されています。
API を利用したデータ取得は許可されていますが、一般的には人が手動操作で可能なアクセスを越えての利用は許容されない認識のため、
以降にサンプルとして掲載するロボットでも繰り返し処理をもちいたアクセスはしません。

本記事を参考に OpenAI(API) の利用を検討される方はその点ご注意ください。

(iv) except as permitted through the API, use any automated or programmatic method to >extract data or output from the Services, including scraping, web harvesting, or web >data extraction;

それでは早速簡単そうな WebAPI(エンドポイント)を実行してみようとおもいます。

OpenAI9.JPG

モデル(※)の一覧取得のエンドポイント(以下、リクエスト例)

curl https://api.openai.com/v1/models \
  -H "Authorization: Bearer $OPENAI_API_KEY"

※機械学習済みのデータベースみたいなものです。AI の操作は、対象のモデルに対してパラメータを投げて、予測結果を受け取るのが基本です。

curl コマンドにおけるリクエスト例をみていただけばわかるとおもいますが、
このリクエストは ヘッダー情報に API キーを持たせてエンドポイントを GET メソッドで実行する だけです。

OpenAI10.JPG

  1. Studio の「パッケージを管理」より「UiPath.WebAPI.Activities」をインストール
  2. 「HTTP要求」アクティビティを配置
  3. プロパティの「ヘッダー」に以下を登録
      Name:"Authorization"
      Value:"Bearer "+{作成したAPIキー}
  4. プロパティの「本文形式」に「application/json」を、「受け入れ形式」に「JSON」を指定
  5. プロパティの「要求URL」に「https://api.openai.com/v1/models」を指定
  6. プロパティの「要求メソッド」に「GET」を指定

OpenAI10-2.JPG

実行すると、レスポンスのJSONデータを無事確認できます(´ω`)

OpenAI11.JPG

疎通は問題ないことが確認できたので、いよいよとチャットをば
チャットのエンドポイント(以下、リクエスト例)

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

ヘッダーオプションは本文形式が追加となるのみ。
本文パラメータでモデルとメッセージを投げるかたちですね。

OpenAI12.png

  1. 「HTTP要求」アクティビティを配置
  2. プロパティの「ヘッダー」に以下を登録
      Name:"Authorization"
      Value:"Bearer "+{作成したAPIキー}
  3. プロパティの「本文形式」に「application/json」を、「受け入れ形式」に「JSON」を指定
  4. プロパティの「要求URL」に「https://api.openai.com/v1/chat/completions」を指定
  5. プロパティの「要求メソッド」に「POST」を指定
  6. プロパティの「本文」に「"{""model"": ""gpt-3.5-turbo"",""messages"": [{""role"": ""user"", ""content"": """+チャット文+"""}]}"」を指定
     ※「チャット文」はあらかじめ作成した String 型の引数です。

OpenAI13.JPG

レスポンス返ってきましたー(*ノωノ) やっほーい
で、欲しいフィールドは「content」に入っているのですが、
「choices」フィールドの下の階層で、かつ、配列という。。。

OpenAI14.png

一度レスポンスをJSONオブジェクトに変換し、「choices」フィールドのJSON配列を再度オブジェクト変換します。
変換後のオブジェクトの最初の要素から「"message":」を除去したテキスト(※)を再度逆シリアル化
{"role":"assistant","content":"Hello there!How may I assist you today?"}

OpenAI15.png

さぁ やっとフィールド名を指定して値を取得できます。
(なお、LINQを使えば、上の様な面倒くさいことしなくとも値を抽出することは可能です。りんたろうさんのこちらの記事をご参照ください。
本記事の変数で書くなら
レスポンスのJオブジェクト.SelectToken("$..message.content")
とするだけで最初に逆シリアル化してつくったJオブジェクトから値取得可能です。)

OpenAI16.png

引数に「こんにちわ」をセットして実行した結果↑
ちゃんと日本語で返ってきたー、うれしー(*‘∀‘)

【後半】UiPath の OpenAI のコネクタ(※プレビュー版)

OpenAIコネクタ.JPG

Automation Cloud の Integration Service のカタログ上の「OpenAI」サービスをクリック

OpenAIコネクタ2.JPG

「コネクションを追加」をクリック

OpenAIコネクタ3.JPG

生成済みの API キーを入力し「接続」をクリック

OpenAIコネクタ4.JPG

無事に一覧上にコネクションが作成されます!

OpenAIコネクタ5.JPG

Studio で「OpenAI」パッケージをインストール

OpenAIコネクタ6.JPG

「Chat Completion」アクティビティの方から試していきます。
こちらは ChatGPT の3.5 のサービスに該当する模様。
コネクションが作成済みであれば、アクティビティを配置と同時に既定のコネクションが設定されます。
コネクションが複数ある際は、プルダウンで選び直しましょう。

OpenAIコネクタ7.JPG

入力欄に『目上の方向けに営業挨拶のメール本文例をください』を指定

OpenAIコネクタ8.JPG

詳細設定の出力プロパティに「チャットの応答文(変数)」を指定(オブジェクトが返ってくるので、「.Text」で応答文を取得しましょう)

OpenAIコネクタ9.JPG

おぉっ(´ω`)簡単ですねー

お次は「Text Completion」アクティビティの方から試していきます。

OpenAIコネクタ11.JPG

こちらは詳細設定でモデルを指定できるんですね
先ほど同様に入力文と出力プロパティを設定して実行

OpenAIコネクタ10.JPG

モデル毎に違う例文をくれそうですね。どのモデルが一番優秀なんだろう(笑)
OpenAI は APIの仕様が非常にシンプルなため、HTTP要求アクティビティと Integration Service で実装難易度の差があまり見えませんが、
Integration Service の場合、複雑な WebAPI のサービスでも同様の手順でロボットに組み込むことができるところが大きなメリットです☀

長々と書きましたが、最後までお読みいただきありがとうございましたm(__)m

続編記事

15
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?