見出し画像

GASとGoogle ChatとchatGPTと

Google Chat用のチャットボットを以前作ってあったのですが、つい最近リリースされた人工テキストAIである「chatGPT API」を組み込んで、Google Chatで問い合わせのできるチャットボットを作ってみました。

事前準備

APIキーを手に入れる

こちらのページにアクセスして、APIキーが取得出来る。$18分の無償枠が利用可能。開発するリファレンスはこちら

1単語のリクエスト1回、レスポンス1回でそれぞれカウントされる。実際にはこの他にGCP側でGoogle Chat APIを使うための手順が必要になります。

スラッシュコマンドで処理を分ける

利用コスト

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に喋らせるとか色々できそうです。

※もちろん、スマフォアプリでも利用が可能ですし、スプレッドシートの関数としても使えます。

chatGPTにchatGPTについて聞いてみた

詳細と応用編はこちら

#GAS #chatGPT #Google Chat #チャットボット #GCP #JavaScript



この記事が気に入ったらサポートをしてみませんか?