【LINEBot制作シリーズ2】GeminiとGASで作るAI LINE Bot編
本記事についての注意書き
- 応答を作成させるAIには「Gemini Pro」を使用します。
- Gemini Proは無料で利用可能ですが、規約上、18歳未満は使用できません。
- 章立ての構成です。各章の中身は
▶︎
をクリックで展開できます
- 極力専門用語は避けていますが、よくわからない言葉に出くわした際は都度調べること
- 用途に応じて、こんな感じで使ってください
- Ex1/ 理屈よりも、とりあえず動かせればOK🙋♀️ →ページの末尾にコードを。各章の初めには各章ごとのコードの完成形を掲載しています。
- Ex2/ 説明を理解した上で読み進めたい🙋♂️ →part.1で行った説明を前提にしています。まずはpart1の内容を押さえた上で読み進めることを推奨します
Chap.0 成果物について
今回は無料枠を超過するリスクがあるため、QRコードの公開は控えます。
こんな感じに動きます

Google謹製の大規模言語モデル 「Gemini」

OpenAI謹製の言語モデルであるGPTに対抗する形でGoogleリリースされたのが、「Gemini」です。
Geminiのモデルサイズとその役割は次のようになっています。
Geminiのモデルサイズ
- Gemini Ultra - GPT4を上回る高性能な大型モデル
- Gemini Pro - ULtraとNanoの中間的な立ち位置
- Gemini Nano - スマホに搭載できる軽量モデル
今回はGemini Proが搭載されたLINE Botを制作します。
Gemini Proの特徴
性能面はGPT-4を上回るとされています(諸説あり)。その他にGemini Pro特徴としては以下の通りです。
- 2024年1月現在、一般公開はされておらず、開発者向けにAPIとして提供
- (無料枠を超過しない限り)無料で使用可能
- 英語版のGoogle Bardで利用可能
Gemini Proが搭載されたLINE Botを制作します。
Chap.1 前提知識

この図は日常的に利用されるスマホアプリに代表されるClientとAPIサーバーの関係を表したものです。そして両者はこのような関係です。
ClientとAPIサーバーの関係
1️⃣ClientはAPIサーバーに対し、リクエストを送ります
2️⃣リクエストを受け取ったAPIサーバーはClientに対してレスポンスを返します。
リクエストとレスポンス
ここで突如出てきた、リクエストとレスポンスについて説明します。これを日本語に直すと「要求と応答」となります。
ㅤ | 方向 | 含まれる情報 |
リクエスト | Client→APIサーバー | 特定のデータの要求
何らかの処理の要求 |
レスポンス | APIサーバー→Client | 要求されたデータそのもの
要求された処理の実行結果(うまくいったorいかなかった) |
もう少しわかりやすくするため、具体例で説明します。
具体例1. Twitterアプリの例
Twitterでタイムラインを見るときのClient(スマホ)とAPIサーバーの働き
1️⃣ユーザーがツイッターアプリを開く
2️⃣タイムラインフィードを取得するリクエストがスマホからAPIサーバーに送られる
3️⃣リクエストを受けたAPIサーバーからタイムラインフィードのデータがスマホに送られる
4️⃣タイムラインフィードがスマホに表示される
今回作成するGASスクリプトの例
では今回作成するアプリケーションではどうでしょうか?
作成するGASアプリケーションの働き
1️⃣ メッセージの受取:
doPost()
でユーザーからのLINEメッセージイベントを受け取る2️⃣応答の生成: API(Gemini Pro)にリクエストを送る
3️⃣生成された応答の受け取り: Gemini Proからのレスポンスを受け取けとる
4️⃣メッセージの送信: LineMessagingAPIにユーザーへのメッセージ送信を要求するリクエストを送る
GASアプリケーションは、前回と同様にClientの役割を果たします。part.1にない点としてLine Messaging APIに加えて、Gemini ProのAPIの両方にアクセスしています。
一般的に馴染みがないAPIサーバーの働きについて解説してます。
Chap.2 Gemini Proのセットアップ
Google AI Studioにアクセス。利用規約に同意し、進みます。

API Keyの作成
Create API key in new project
を選択します。
キーが発行されるので、これをクリップボードにコピーしておきます。キーが追加されていることを確認してください。

これでGemini Proが使えるようになりました。
Google AI Studioというツールで簡単にセットアップできます。
Chap.3 Gemini ProのAPIを叩く
手始めに手軽なブラウザで、Gemini ProのAPIを叩いてみましょう
Chap.4 GASでGemini ProのAPIを叩く
今度はGASでGemini ProのAPIを叩いてみましょう
Chap.4 GeminiにLINE応答させる
完成版のコードを見る
1/ ユーザーからのメッセージをGeminiに渡す
Chap.3と同じ容量でユーザーからのメッセージをそのままGeminiにプロンプトとして与えると応答が得れます
メッセージを取得する
メッセージをGeminiに渡す
ユーザーからのメッセージをGeminiにプロンプトとして与えます。
2/ Geminiからの応答をユーザーに返信する
各種プロパティの定義
LineMessagingAPIからメッセージを送るために必要な各種プロパティを定義します。
- lineAccessToken
- lineEndpoint
具体的なやり方はpart.1の説明を参照してください
メッセージを送信するメソッドの定義
part1で定義したメソッド
sendLineMessage()
をそのまま流用します。いよいよGeminiに応答してもらいます。
Chap.5 Geminiをチューニングする
より望ましい対応をさせるようにGeminiの応答をカスタマイズします。