はじめに
OpenAIが提供する対話型言語モデル「ChatGPT」が話題になっています。ChatGPTはREST APIを提供しているため、WorkatoでもREST APIでChatGPTを利用することが可能です。
また、WorkatoにはWorkbot for Slackをはじめとした、チャットボットをノーコードで簡単に構築できるコネクタが用意されており、Workatoの強みの1つでもあります。
今回は、Workbot for SlackとChatGPTを組み合わせて、簡単なAIチャットボットを実装してみました。
手順
【1】ChatGPTの準備
1.ChatGPTへログインする
以下のURLへアクセスし、ChatGPTへログインします。アカウントが無い場合は、「Sign up」をクリックし、サインアップを進めます。
2.APIキーの取得
以下のURLへアクセスし、OpenAIのAPIキーを発行します。
【2】Workatoコネクションの追加
Workato上で、必要なコネクションの追加を行います。
1.「Slackコネクタ」のコネクションを追加
Slackのイベントを取得するための「Slackコネクタ」コネクションを追加します。
以下の記事を参考にSlackカスタムアプリの追加ならびに、Workato上への「Slackコネクタ」コネクションの追加を進めます。
なお、Slackチャンネル上に投稿されたメッセージを取得するため、 message.channels
あるいは message.groups
をBot User Eventに追加する必要があります。また、投稿されたメッセージを取得したいチャンネル上へボットユーザーの追加も必要となります。上記とあわせて、それぞれ対応を進めます。
2.「Workbot for Slackコネクタ」のコネクションを追加
Slackに対するメッセージ投稿のための「Workbot for Slackコネクタ」コネクションを追加します。
3.「HTTPコネクタ」のコネクションを追加
ChatGPTへ接続するためのコネクションを追加します。
以下を参考に設定のうえ、「Connect」をクリックします。
項目 | 値 |
---|---|
Connection name | 任意の名称 |
Location | 任意のプロジェクトまたはフォルダ |
Connection type | Cloud |
Authentication type | Header auth |
Header authorization | Key: Authorization, Value: Bearer <OpenAIのAPIキー> |
Base URL | https://api.openai.com/v1/ |
Use custom TLS/SSL certificate settings | No |
【3】Workatoレシピの作成
Workato上でレシピを作成します。
トリガー
Slackコネクタをトリガーに追加し、「New event」を選択します。
アクション
Step2 (HTTPコネクタ)
HTTPコネクタを追加し、次の通り設定します。
Request name
任意の名称
Request
Method
POST
Request URL
completions
Request content type
JSON
Request body
{
"model": "text-davinci-003",
"prompt": "<Text | Step1>",
"max_tokens": 2048
}
<Text | Step1 > (データピル)の箇所は、Step1のEvent > Textを追加します。(以下参照)
Response
Response content type
JSON
Encoding
UTF-8
Response schema
「Use JSON」をクリックし、以下のJSONを貼付してスキーマを生成します。
{
"id": "xxxxxxxxxxxxxxxxxxxxxx",
"object": "text_completion",
"created": 1670220225,
"model": "text-davinci-003",
"choices": [
{
"text": "test",
"index": 0,
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 16,
"completion_tokens": 138,
"total_tokens": 154
}
}
Step3 (Workbot for Slack)
Workbot for Slackコネクタを追加し、次の通り設定します。
Action
「Post message」を選択します。
Setup
Channel name / DM
Step 1の Event > Channel
を追加します。
Notification text
Step2の Response > Choices > Text
を追加します。
【4】Slackへボットユーザーを追加
以下のユーザーをボットユーザーを追加します。
Slackカスタムアプリのボットユーザー
「【2】Workatoコネクションの追加」の手順内で作成されたアプリのボットユーザー
(Event subscription でSlack上のイベントを取得する際に使用)
「Workbot」ボットユーザー
(チャンネルへメッセージを投稿する際に使用)
【5】トリガーの調整
Slack:Workbot ボットユーザーのIDを取得
1)workbotアプリを右クリックし、「アプリの詳細を表示する」をクリックします。
2)メンバーIDを確認します。(後続の手順で使用します)
Workato:レシピ編集
1)レシピ編集画面でトリガーを選択し、「Set trigger condition」を有効化します。
2)以下の通りトリガーの設定を行います。
Trigger data
Condition
does not equal
Value
上記「Slack:Workbot ボットユーザーのIDを取得」で確認したメンバーIDを追加します。
【6】Workatoレシピのスタート
以上を設定が完了後、レシピをスタートします。
動作結果
Slackチャンネルへメッセージを投稿すると、Workato(Workbot)がChatGPTへ問合せを行い、その結果がメッセージとして返されます。(メッセージが返されるまで、10~20秒程度かかります)なお、選択されたモデルにより、出力される結果は異なります。
参考