![見出し画像](https://assets.st-note.com/production/uploads/images/99386783/rectangle_large_type_2_99b1d544da662a944cdd14011be93732.png?width=1200)
GASとGoogle ChatとchatGPTと
Google Chat用のチャットボットを以前作ってあったのですが、つい最近リリースされた人工テキストAIである「chatGPT API」を組み込んで、Google Chatで問い合わせのできるチャットボットを作ってみました。
事前準備
APIキーを手に入れる
こちらのページにアクセスして、APIキーが取得出来る。$18分の無償枠が利用可能。開発するリファレンスはこちら
1単語のリクエスト1回、レスポンス1回でそれぞれカウントされる。実際にはこの他にGCP側でGoogle Chat APIを使うための手順が必要になります。
![](https://assets.st-note.com/img/1677849194401-rOTQgdryNN.png?width=1200)
利用コスト
GPT-3が1000トークンで$0.02に対して、速度も向上してるgpt-3.5-turboは1000トークンで$0.002。10分の1のコストで実現が可能。
企業向けのプランも出てくるなど、本格的にテキストAIでチャットボットが変わる時代が来てるかも。
ソースと結果
ソースコード
messagesで複数の文章をぶっこんで回答が得られる。GPT-3の場合のコードと殆ど違いはない。エンドポイントURLとmessagesにて配列でテキストを突っ込めたり、返り値のとり方が違うだけ。
messagesのroleでuserがユーザ発言、assistantがAIが返した言葉を意味し、過去の発言を考慮しての発言が可能になってる。
//openaiのchatGPT APIを叩く
function requestGPT3(text){
//API Keyを取得する
let prop = PropertiesService.getScriptProperties();
let apikey = prop.getProperty("openaikey");
//chatGPTのエンドポイントURL
var url = "https://api.openai.com/v1/chat/completions";
//リクエストヘッダ
let header = {
"Authorization":"Bearer "+ apikey,
"Content-type": "application/json",
}
//リクエストボディを作成
let payload = {
"model": "gpt-3.5-turbo",
"max_tokens" : 2048, //最大値は2048まで
"temperature" : 1.0, //最大値は2.0
"messages": [{"role": "user", "content": text}]
}
//リクエストオプション
let options = {
"muteHttpExceptions" : true,
"headers": header,
"method": "POST",
"payload": JSON.stringify(payload)
}
//Open AIにリクエスト実行
const res = UrlFetchApp.fetch(url, options);
//レスポンスデータを取り出す
let result = JSON.parse(res.getContentText());
//改行コードをリプレース
let response = result.choices[0].message.content;
//OpenAIのAPIレスポンスを戻り値で返却
return response;
}
実行結果
今回はスラッシュコマンドを付けて問い合わせをすると、chatGPT APIに投げつけて回答を返すシンプル仕様。
実際に活用するとしたら、過去の発言を数個取得し、その流れを考慮して返すといった事や、チャット内容の要約を返すだとか、はたまたもっと応用でAlexaに喋らせるとか色々できそうです。
※もちろん、スマフォアプリでも利用が可能ですし、スプレッドシートの関数としても使えます。
![](https://assets.st-note.com/img/1677848503375-ttjBFhugI8.png?width=1200)
詳細と応用編はこちら
#GAS #chatGPT #Google Chat #チャットボット #GCP #JavaScript
この記事が気に入ったらサポートをしてみませんか?