🤖ChatGPT APIを使って情シスのヘルプデスク業務を楽にする
レキサスの情シスを担当しているツネです。
集中してノリノリでコード書いている最中に上司から問い合わせが発生し、作業が中断、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に実装した方もいらっしゃる。
https://twitter.com/KawamataRyo/status/1631081778659348483?cxt=HHwWhsDSiYyP4qItAAAA
ということで、私も自身の情シスのヘルプデスクが楽に、かつユーザにわかりやすい説明ができるように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を作成する方法を説明します。
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やパラメータを変更します。
そして、できた修正後のコードがこちら。
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の接続方法」を書いてもらい、ヘルプデスク時の説明する時間を減らしましょう。
いい返事!!
これで偉い人にも「接続方法は↑を参考に接続してください」と伝えられますね!!!
この記事が気に入ったらサポートをしてみませんか?