45
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【30分でやる(改)】GPT3とGoogle Spread Sheetで管理するLINE BOTの作り方

Last updated at Posted at 2023-01-24

概要

にわかに騒がれているGPTChatやGPT-3について、ご多分に漏れず興味関心を向けてみた結果、むかーし作った「誰でも30分で作れる」をコンセプトにしたLINEBotをカスタマイズするに至りましたのでご参考まで。

元記事

もうカレコレ4年ほど前に作成した記事になりまして、「スプレッドシートに予め登録したQAのみを返すLINEボット」を作るという仕様でございました。
今回はこちらのボットに「回答が見つからなかったときはAIに変わりに返事をしてもらう」という仕様を追加したいと思います。

参考元

なお、こちらにGPT-3とのGASを用いた簡単な連携方法が記載されていたので参考にさせていただきました。
GPT-3上でのアカウント発行からトークン取得までの流れはこちらを参考いただけると良いかと思います。

追加する仕様

  • 投げた単語に対してスプレッドシート上に部分一致するQAが「ない」場合に、GPT-3に同様のキーワードを投げて、返ってきた値をメッセージで返す。

アップデート前の状態

こんな感じで、予定したキーワードには返答しますが、想定にないものは返答しません。
image.png

作業内容

以下のfunctionをGASに追加

※前の記事でGASのスクリプトを作成している前提になります。
連携用の処理を1つのfunctionにまとめてしまいました。

/**
 * GPT連携関数
 */
function GPT(prompt) {

  const SECRET_KEY = "(ここにGPT-3で発行したトークンを貼る)";
  const MAX_TOKENS = 300; // 返信文字列の最大数
  const MODEL_NAME = "text-davinci-003";
  const MODEL_TEMP = 0.3;

  const url = "https://api.openai.com/v1/completions";
  const payload = {
    model: MODEL_NAME,
    prompt: prompt,
    temperature: MODEL_TEMP,
    max_tokens: MAX_TOKENS,
  };

  const options = {
    contentType: "application/json",
    headers: { Authorization: "Bearer " + SECRET_KEY },
    payload: JSON.stringify(payload),
  };

  const res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
  return res.choices[0].text.trim();
}

追加したfunctionを、回答がない場合の処理に追記

今までは定型文で「答えが見つかりませんでした。別のキーワードで質問してみてください。」とだけ返答するよう記載していた箇所を変更します。

before

// 回答がない場合の定型文
sendMessage(replyToken, '答えが見つかりませんでした。別のキーワードで質問してみてください。');        

after

let AIReplyText = '答えが見つかりませんでした。AIに回答をおまかせします。';
AIReplyText = AIReplyText + "\n\n=============\n\n" + "A:" + GPT(postMsg);
// 回答がない場合の定型文
sendMessage(replyToken, AIReplyText);

デプロイしましょう

スクリプト画面上の「デプロイ>新しいデプロイ」から、デプロイを登録します。
image.png

ウェブアプリのしたの「URL」の内容をコピーします。
image.png

LINEのWEBhookを更新

LINE画面上での設定変更もお忘れなく。先程コピーしたWebhookURLを更新します。
image.png

できたらこんな感じ

AIの精度は今後に期待。

image.png

感想

AIってやっぱり面白いですね。精度を上手く考慮して使い所を見極めるアイディア勝負なところというのが今回の感想です。面白い活用方法とかがあればぜひどなたでも教えていただきたいです。

45
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?