見出し画像

Gemini APIを使ったLINE BOTをGASで作ろう!


はじめに

今回はGoogleが提供する生成AIのGeminiをLINEから利用できるBOTを開発してみました。
LINEは日本人には特に慣れ親しんだインターフェースであり、そこからAIを利用できると非常に便利なため作ってみることにしました。
Gemini以外にもChat-GPTやCopilotなど生成AIは様々存在しますが、現時点ではGeminiのみ無料でAPIが利用できるため、今回はGeminiを選択しました。

コード全容

まず、コードの全容を示します。
今回実装した機能は一つです。ユーザーから受けたメッセージテキストをプロンプトとしてGeminiに渡し、受け取った回答をユーザーに返信するというものです。イメージはこんな感じ

ここでシステム構成画像

// linebotのアクセストークン
const accessToken = PropertiesService.getScriptProperties().getProperty('line-access-token');

// geminiのapikey
const geminiApiKey = PropertiesService.getScriptProperties().getProperty('gemini-api-key');

// WEBHOOK受信時の処理
function doPost(e){
  
  // ラインボットをインスタンス化
  const lineBot = LineBot.create(accessToken);
 
  // WEBHOOKイベントのタイプを取得
  const webHookEvent = lineBot.receiveEvent(e);

  // ロード画面を表示
  const senderId = webHookEvent.getSenderId();
  lineBot.loading(senderId,60);

  // Geminiをインスタンス化
  const gemini = Gemini.create(geminiApiKey);

  // メッセージがテキストなら
  if(webHookEvent.isTextMessageEvent()){
    
    // 質問内容を取得
    const prompt = webHookEvent.getText();

    // Geminiにそのまま質問する
    const answer = gemini.sendTextPrompt(prompt);

    // 返信用のトークンを取得
    const replyToken = webHookEvent.getReplyToken();

    // 返信用のテキストメッセージを作成
    const message = LineMessage.createTextMessage(answer);
    
    // 回答を返却する
    const replyResult = lineBot.reply(replyToken , [message]);
  }

}

以前私が作成したLineBotを利用するライブラリに加え、GeminiのAPI専用のライブラリを使用しているため、コード量はかなり短く15行となっています。

LINEライブラリに関してはこちらの記事をご参照ください。

使用感

今回のプロンプトでは9秒ほどで返信が来ました。
プロンプトによって返信までの時間が上下します。


使い道

自分はプログラム書くときに質問やデバッグで使います。Geminiは画像生成もできるようなので、今後は画像生成の機能も追加していこうと考えています。
そうすれば、ロゴやイラスト作成をLINEからできるようになります。

サンプルQRコード

紹介したLINEBOTのQRコードです。LINEで追加すれば皆さんも自由にご利用いただけます。

作り方

LINEBOTを作る

まずはLINEBOTの立ち上げが必要です。

こちらの公式のガイドや「LINEBOT 作り方」などと検索してとりあえずはBOTを作ってください。
※ここでアクセストークンを取得しておきます。
※この時点ではWebhookURLの設定は不要です。詳細は後述します。

GASのプロジェクトを立ち上げる

アクセストークンをスクリプトプロパティに格納する

プロジェクトの設定を開く

スクリプトプロパティを追加を押す

スクリプトプロパティを保存する

GeminiのAPI KEYを取得する(無料)

このページのすぐにある、「APIキーを取得する」を押せば簡単に取得できます。

ライブラリを導入する

以下のスクリプトIDを使って、3つのライブラリを導入します
・Lineライブラリ : 1oePw_FOmC39iZwbVp988ISagmg2S7Kk80VpY7EDaIAsqfbiqLwghV1YD

・LineMessageライブラリ : 1T42K6_IV6qXjG3PN7J_BmD0cFnPz3oSxtmlAgNVOJ7P1PSaebzB11gsf

・Geminiライブラリ : 1Su782KbJ1Ffg1t727zA7703s16wWnTPwo9ovg5txo_pQWlKBsWrQ-b9j

プログラムを書く

本記事冒頭に記載したコードをコピペします。

デプロイする

新しいデプロイを押す

設定ボタン > ウェブアプリを選択

アクセスできるユーザーを全員に設定してデプロイ

アクセスを承認

承認の詳細はこちらの記事を参照してください。

デプロイしたWEBアプリのURLをコピーして完了

LINEBOTのWebhookにデプロイしたURLを張り付ける

先ほど作ったLINEBOTの管理画面を再度開き、WebhookURLに今コピーしたURLを張り付けて更新します。

これで完了です。LINEからメッセージを送信してちゃんと返信されるか試してみてください。

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