🤖ChatGPT APIを使って情シスのヘルプデスク業務を楽にする
2023年3月6日 月曜日 | 情シス
レキサスの情シスを担当しているツネです。
集中してノリノリでコード書いている最中に上司から問い合わせが発生し、作業が中断、Google ChatでWindows11の設定済みVPNの接続方法を伝える必要があったんです。ひとり情シスあるあるですよね〜
私のマシンはmacなので、Windowsの操作を伝えるにあたって以下の手順が必要になりました。
- Parallels DesktopでWindow 11を起動
- MDMまたは手作業でユーザと同等のVPNプロファイルを設定
- 手順を確認しながら画面をスクショを1〜3回取得
- Google ChatでVPN接続手順を記載、スクショも添えて説明
正直、しんどい。そろそろ昇給査定の時期ということもあり、上司に向かって「ググってください」とは簡単に言えないわけですよ。
でも楽して上司(ユーザ)に操作方法を伝えられるようにしたい!
そんなとき、3月1日に提供が開始されたChatGPT API model gpt-3.5-turboの存在が頭をよぎります。
すでにAPIをSlack botに実装した方もいらっしゃる。
早速Chat Completion APIを使ってSlack Botを作ってみたやつを記事に。
楽しい!Promptはもっと工夫しても良いかも#zenn #チャトる
OpenAIのChat Completion APIを使って、ChatGPTライクに会話ができるSlackBotを作る|ryo_kawamata https://t.co/Hhq4v32ni8— Kawamata Ryo (@KawamataRyo) March 1, 2023
ということで、私も自身の情シスのヘルプデスクが楽に、かつユーザにわかりやすい説明ができるようにChatGPT APIを使ってGoogle Chat Botを作ってみることにしました。
ChatGPTでChatGPT APIを使った、Google Chat Bot を作ってもらう
私のプログラミング性能はポンコツ、かつ、自分の手を動かさずにbotを完成させたいので、まずはChatGPTにbot作成を依頼してみます。
「ChatGPT API を使った、Google Chat Bot を作ってください。」
残念ながら最初の依頼ではGoogle Apps ScriptかつOpen AIのChatGPT APIを使ったソースコードは出てきませんでした。
指示を具体的にして、もう一度頼んでみます。
「OpenAIのChatGPT APIを使用したGoogle Chat Botのサンプルソースコードを教えてください。サンプルコードは、Google Apps Scriptを使用してください。」
結果は以下の通り
はい、Google Chat Botのサンプルコードを提供することができます。Google Apps Scriptを使用して、ChatGPT APIとGoogle Chat APIを利用して、Chat Botを作成する方法を説明します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
function onMessage(event) { var message = event.message.text; var space = event.space.name; var sender = event.user.displayName; // ChatGPT APIを使用して応答を生成する var response = generateResponse(message); // Google Chat APIを使用して、応答を送信する var cards = [buildTextCard(response)]; var message = { cards: cards }; sendMessage(space, message); } function generateResponse(message) { // ChatGPT APIを使用して、入力されたメッセージに応答を生成する var apiUrl = 'https://api.openai.com/v1/engines/davinci-codex/completions'; var prompt = message; var maxTokens = 150; var n = 1; var temperature = 0.7; var headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + getApiKey() }; var data = { 'prompt': prompt, 'max_tokens': maxTokens, 'n': n, 'temperature': temperature }; var options = { 'method': 'post', 'headers': headers, 'payload': JSON.stringify(data) }; var response = UrlFetchApp.fetch(apiUrl, options); var jsonResponse = JSON.parse(response.getContentText()); var text = jsonResponse.choices[0].text; return text; } function buildTextCard(text) { // Google Chat APIのTextCardを構築する var card = CardService.newTextCardBuilder() .setText(text) .build(); return card; } function sendMessage(space, message) { // Google Chat APIを使用して、メッセージを送信する var url = 'https://chat.googleapis.com/v1/spaces/' + space + '/messages'; var token = getChatToken(); var headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token }; var options = { 'method': 'post', 'headers': headers, 'payload': JSON.stringify(message) }; var response = UrlFetchApp.fetch(url, options); } function getApiKey() { // ChatGPT APIのAPIキーを取得する var scriptProperties = PropertiesService.getScriptProperties(); var apiKey = scriptProperties.getProperty('CHAT_GPT_API_KEY'); return apiKey; } function getChatToken() { // Google Chat APIのトークンを取得する var scriptProperties = PropertiesService.getScriptProperties(); var chatToken = scriptProperties.getProperty('GOOGLE_CHAT_TOKEN'); return chatToken; |
このサンプルコードでは、Google Apps Scriptを使用して、Google Chat Botを作成しています。このコードは、Google Chatのイベントをトリガーにして、ChatGPT APIを使用して応答を生成し、Google Chat APIを使用して、応答を送信することができます。
このコードを使用するには、ChatGPT APIのAPIキーとGoogle Chat APIの
ChatGPTからの返答はそれっぽいコードが表示され、途中で途切れてしまいました。なお、以前Google Chat Botを作ったことがありますがCardServiceというのは見たことがありません。
GPT-3.5-turboモデルを使ったChat Completion APIを期待していたのですが、そちらは何度指示しても表示されることはありませんでした。
ChatGPTの限界を感じたところで、このソースコードをベースに動くように修正してきます。
ChatGPTが作ってれた Google Apps Scriptを手直し
Googel Chatはmarkdownにも一部対応しており、ChatGPTもmarkdownで応答も可能なのでGoogle Chatへの応答をカードタイプからテキストフォーマットに変更します。
またGPT-3.5-turboモデル、Chat Completion APIを使うようにaptUrlやパラメータを変更します。
そして、できた修正後のコードがこちら。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
function onMessage(event) { var message = event.message.text; if (event.message.slashCommand) { // 設定画面で決めたSlachコマンドを判定 switch (event.message.slashCommand.commandId) { case 1: //chatgpt // ChatGPT APIを使用して応答を生成する var response = generateResponse(message.replace("/chatgpt ","")); } } // 応答を送信する return message = { text: response }; } function generateResponse(message) { // ChatGPT APIを使用して、入力されたメッセージに応答を生成する var apiUrl = 'https://api.openai.com/v1/chat/completions'; var headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + getApiKey() }; var data = { "model": "gpt-3.5-turbo", "messages": [{ "role": "user", "content": message }] }; var options = { 'method': 'post', 'headers': headers, 'payload': JSON.stringify(data) }; var response = UrlFetchApp.fetch(apiUrl, options); var jsonResponse = JSON.parse(response.getContentText()); var text = jsonResponse.choices[0].message.content; return text; } function getApiKey() { // ChatGPT APIのAPIキーを取得する var scriptProperties = PropertiesService.getScriptProperties(); var apiKey = scriptProperties.getProperty('CHAT_GPT_API_KEY'); return apiKey; } |
このGoogle Apps Scriptの準備ができたらGoogle Cloud コンソール にて以下を行います。
・プロジェクト作成
・Chat APIの有効化
・OAuth の設定
・Chat APIの構成設定
・/chatgpt のスラッシュコマンド追加
詳細は公式ドキュメントを参照ください。
結果
では実際にbotを動かしてみましょう。
Google Chatのスペース「アプリの統合」から先程作ったbotを追加します。
スラッシュコマンド /chatgpt を使って、会話してみます。
動いた!!!
よし、それでは実際にChatGPTに「Windows11の設定済みVPNの接続方法」を書いてもらい、ヘルプデスク時の説明する時間を減らしましょう。
いい返事!!
これで偉い人にも「接続方法は↑を参考に接続してください」と伝えられますね!!!