Slackで動くChatGPTのチャットボットをGoogle Apps Script(GAS)でサクッと作ってみる
Slackで動くChatGPTのチャットボットを作りたい
本記事では、Slackで下記仕様を実現できるChatGPTのチャットボットをGoogle Apps Script(GAS)でサクッと作成していきます。
- botが所属するSlackのチャンネル内でメンションされると、スレッドで返信する
- botとのダイレクトメッセージの場合は、メンション無しでもスレッドで返信する
- botが参加しているスレッド内でのメッセージには、メンション無しでも(スレッド内の会話内容を読み取った上で)返信する
また、下記項目も自由に設定することができます。何でも明るく回答してくれる社内のアイドル的なbotを作ってみるのも良いかもしれません。
- botのアイコン、振る舞い(人格・役割など)の設定
- gpt-3.5-turboやgpt-3.5-turbo-16kなどのGPTモデル設定
今回のbotは、非エンジニアの方でも作成するのに1時間もかからないと思われます。このbotの作成を通して、多くの方がChatGPTへの理解を深められる良いきっかけを得られればと願います🙏
OpenAIのアカウントを作成し、APIキーを発行する
最初に、GPTのAPIを利用できるように、OpenAIのアカウントを作成する必要があります。
OpenAIのTOPページ(下記画面)右上にある「Sign up」ボタンを押下してください。
上記ボタン押下後に遷移する新規登録ページでアカウントを作成してログイン後にアクセスできるAPIキーの設定ページで「Create new secret key」ボタンを押下後、任意の名前を入力して下記画面内に発行された①secret keyを保管してください(後に利用します)
OpenAI側での設定はここまでです。新規アカウントを登録後、最初の3ヶ月は(一定の利用枠まで)無料でAPIを利用することができます。次はSlack側での設定を進めます。
Slack App(チャットボットアプリ)を作成する
利用ブラウザでSlackアカウントにログイン後、Slack Appsページにアクセスしてください。アクセス後、画面右側にある「Create New App」ボタンを押下してください。
上記のウィンドウが表示されたら、ウィンドウ内の「From Scratch」をクリックし、任意のApp Name(botの名前)を入力し、botを導入したいSlackのワークスペースを選択したら「Create App」ボタンを押下してください。
「Basic Information」ページに遷移後、「Permissions」ボタンを押下し「OAuth & Permissions」ページで以下のScopeを設定してください。
- app_mentions:read
- channels:history
- chat:write
- groups:history
- im:history
- mpim:history
- users:read
上記のようにScopeの設定が完了したら、同画面内の「Install to Workspace」ボタンを押下し、遷移後の画面で「許可する」ボタンを押下してください。
その後、再び「OAuth & Permissions」ページに戻り「OAuth Tokens for Your Workspace」下の②Bot User OAuth Tokenの値を保管してください(後に利用します)
チャットボットとのダイレクトメッセージを許可する
Slack Appの「App home」ページでAllow users to send Slash commands and messages from the messages tab
にチェックを入れてください。botへのDMができるようになります。
チャットボットのアイコン画像を設定する(任意)
Slack Appの「Basic Information」ページ内の「Display Information」でbotのアイコンを設定することができます。512×512px以上の正方形の画像を設定してください。
Slackの特定のチャンネルにチャットボットを追加する
botを導入したSlackのワークスペース内のApp画面で、botの名前(App name)を検索し、先ほど作成したアプリを選択してください。
下記のようにアプリが表示されたら、下記画面上部のbotの名前の右にあるトグル(下記画像で赤く囲っている箇所)を押下し、表示されたウィンドウ内のメンバーID③とチャンネルID④を保管してください(後に利用します)
その後、botを導入したいチャンネルの設定ウィンドウ内のインテグレーションタブで「アプリを追加する」ボタンを押下し、botを追加してください。
Slack側での設定は一旦ここまでです。次は、Google Apps Script側での設定を進めます。
Google Apps Scriptでチャットボットの機能を実装する
利用ブラウザで任意のGoogleアカウントにログイン後、Google Apps Scriptのダッシュボードで「新しいプロジェクトを作成」ボタンを押下し、新規プロジェクトファイルを開きます。
プロジェクト設定のスクリプトプロパティに各値を設定する
新規プロジェクトファイルが開かれた後、画面内サイドバーの「プロジェクトの設定」を押下します。
プロジェクトの設定画面が開かれた後、スクリプトプロパティにこれまでに取得した下記の値を設定してください。
プロパティ名 | 値 |
---|---|
OPENAI_SECRET_KEY | ①secret key |
BOT_AUTH_TOKEN | ②Bot User OAuth Token |
BOT_MEMBER_ID | ③メンバーID |
BOT_CHANNEL_ID | ④チャンネルID |
その後、エディタ画面に戻って下記のコードをそのまま全て貼り付けてください(本実装内容の説明は長くなるため、本記事では省かせていただきます)
利用するGPTモデルの設定
今回作成するbotのGPTモデルは「gpt-3.5-turbo」に設定しています。コード内のgptModel
の値を修正することで、他のモデルに変更することも可能です。
// 利用するGPTモデルを設定してください
- const gptModel = "gpt-3.5-turbo";
+ const gptModel = "gpt-3.5-turbo-16k";
設定できるモデルに関しては、下記公式docを参考にしてください。
チャットボットの振る舞いを設定する(任意)
コード内のcharacter
の値に下記のような内容を設定することで、botの振る舞いを自由に設定(チューニング)することができます。ぜひお試しください。
// アシスタントの振る舞いを設定してください(空でもOK)
- const character = ``;
+ const character = `
+ あなたはChatbotとして、愛嬌が魅力な人気アイドルのロールプレイを行います。
+ 以下の制約条件を厳密に守ってロールプレイを行ってください。
+
+ 制約条件:
+ * Chatbotの自身を示す一人称は、わたしです。
+ * Chatbotの名前は、かすみです。
+ * Chatbotの性別は、女性です。
+ * Chatbotの年齢は、20歳です。
+ * Chatbotは日本人です。基本的に日本語で話してください。
+ * Chatbotの出身は兵庫県です。通常の関西弁より柔らかな表現を心がけて話して下さい。
+ * Chatbotからのメッセージは、尊敬語や丁寧語、謙譲語などの敬語を使わず、同世代の友達に話しかけるような口調で話してください。
+ `;
ウェブアプリをデプロイする
上記設定が完了したらエディタ画面右上の「デプロイ」ボタンを押下し、種類の選択から「ウェブアプリ」を選択します。
その後に表示される画面で、アクセスできるユーザーを「全員」に選択し「デプロイ」ボタンを押下後、続いて表示される画面で「アクセスを承認」ボタンを押下してください。
任意のGoogleアカウントにログイン後、下記のような画面がポップアップが表示されたら「Advanced」をクリックし「Go to プロジェクト名」を選択後、「Allow」ボタンを押下してください。
ここまででデプロイは完了です。画面に表示されている⑤ウェブアプリURLをコピーしてください。
チャットボットのEvent Subscriptionsを設定する
ここまで完了したら、Slack App画面に戻って「Event Subscriptions」ページに移動してトグルをOnに変更し、Request URLに先ほどコピーした⑤ウェブアプリURLを貼り付けてください。
また、「Subscribe to bot events」に以下の値を登録してください。
- message.channels
- message.groups
- message.im
- message.mpim
最後に画面右下にある「Save Changes」ボタンを押下してください。
これでチャットボットの設定は完了です。おつかれさまでした🙏
Slackで実際にチャットボットを動かしてみる
botを追加したチャンネルでメンションを飛ばしてみてください。
スレッド内ではメンションを飛ばさずとも返信してくれるはずです。会話内容を考慮した上の内容を返してくれたりします。わりと会話が成り立ちますね。
スレッドの内容をいい感じに要約もしてくれます。長くて読み返すのが億劫なスレッドに対して要約を指示しても良いかもしれませんね。
また、botとのダイレクトメッセージではメンション無しで返信してくれます。ChatGPTを使う感覚で利用できるので楽ですね。
今回は以上になります。
ぜひ、ChatGPTのオリジナルチャットボットを作成してみてください🌟
Discussion