Google Apps ScriptとGemini Proを活用してサーバーレスなLINE Botを構築する

チャットボット

はじめに

Google Apps Script(GAS)とGemini Proを使うことで、サーバーを必要とせずに機能豊かなLINE Botを簡単に構築できます。この記事では、具体的なコード例を用いて、その構築方法を解説します。

こちらのオウム返しできる環境が必要です。

Google Apps Script と LINEを使ったオウム返しBotの作成方法
オウム返しBotは、入力されたメッセージをそのまま返すシンプルなBotです。この記事では、Google Apps Script (GAS) と LINEを使用して、10分程度でオウム返しBotを作成する方法をご紹介します。LINE botの...

Gemini Pro APIとの統合

まず、Gemini Pro APIを使った応答生成機能をGASに統合します。以下のgetGeminiApiResponse関数は、ユーザーからのメッセージ(プロンプト)に基づいて、Gemini Pro APIを通じて応答を生成します。

function getGeminiApiResponse(prompt = 'あなたができることは何ですか?') {
  const apiKey = PropertiesService.getScriptProperties().getProperty('APIKEY');
  const apiUrl = `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${apiKey}`;
  const payload = {
    "contents": [
      {"role": "user","parts": { "text": prompt }}
    ],
  };
  const options = {
    'payload': JSON.stringify(payload),
    'method' : 'POST',
    'muteHttpExceptions': true,
    'contentType': 'application/json'
  };

  try {
    const responseText = UrlFetchApp.fetch(apiUrl, options).getContentText();
    const response = JSON.parse(responseText);
    const { content: { parts: [{ text }] } } = response.candidates[0];
    console.log(text);
    return text;
  } catch (error) {
    console.error('APIリクエストでエラーが発生しました: ', error);
    return '少々お待ちください。';
  }
}

この関数は、Gemini Pro APIから得られた応答を返します。エラーが発生した場合には、「少々お待ちください。」というメッセージを返します。

LINE Botの設定と応答の送信

次に、LINE Botの設定とユーザーからのメッセージに対する応答の送信方法を確認します。以下のdoPost関数は、LINEからのメッセージを受け取り、Gemini Proを通じて生成された応答をLINEに返信します。

const LINE_TOKEN = PropertiesService.getScriptProperties().getProperty("LINE_TOKEN");
const LINE_URL = 'https://api.line.me/v2/bot/message/reply';

function doPost(e) {
  const json = JSON.parse(e.postData.contents);
  const replyToken = json.events[0].replyToken;
  const messageText = json.events[0].message.text;

  if (typeof replyToken === 'undefined') {
    return;
  }

  const geminiResponse = getGeminiApiResponse(messageText);

  const option = {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + LINE_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': replyToken,
      'messages': [{
        'type': 'text',
        'text': geminiResponse || '申し訳ありません、応答を生成できませんでした。',
      }],
    }),
  };

  UrlFetchApp.fetch(LINE_URL, option);

  return;
}

この関数では、LINEのMessaging APIを使用して、ユーザーからのメッセージに対する応答を送信します。Gemini Pro APIを利用することで、単なるオウム返しではなく、より高度で自然な対話が可能になります。

まとめ

このように、GASとGemini Proを組み合わせることで、サーバー不要で高機能なLINE Botを簡単に構築できます。このアプローチは、開発の敷居を下げ、迅速かつ効率的なBot開発を可能にします。サーバーの設定や維持に関する心配がないため、開発者はBotの機能とユーザー体験の向上に集中できます。

参考サイト

GASでGemini APIを実行する方法!会話履歴をリクエストして文脈に応じた応答も【サンプルコード付き】 | AutoWorker〜Google Apps Script(GAS)とSikuliで始める業務改善入門
2023年12月6日にGoogleの次世代AIモデルであるGeminiが発表された1週間後、Gemini APIが発表されました。 Google AI StudioでGemini...

コメント

タイトルとURLをコピーしました