この記事ではLINEAPI初心者の僕が実際にLINEのメッセージをGemini proに通した出力を返信できるLINEbotを制作した話をつらつら書いてきます〜最後にコードも置いときます〜
ここはこうしたほうが良かった?みたいなのは気軽にコメントしてね〜
LINE と Gemini 連携の始め方
1. LINEのbotアカウントを制作する
LINE Developers のサイトからコンソールにログインしてぺぺぺっとLINE の bot アカウントを制作します。
このページを参考にuserがメッセージを送信する公式アカウントを作成しましょう!
2. callback用のドメインを用意する
この部分で躓いた。。。
アカウントを制作するとWebhook URLという一般公開されたドメインを作らないといけない、用意しないといけません。
この黒塗りの部分にドメインを記載しないといけない。僕はサービスとしてではなく、なんとなく開発をしたいのでlocalhostでいいんだけど!!!←ダメでした笑
ということで今回はlocalhost5000番をドメイン化して一般公開できるアプリngrokを使いました。このアプリはlocalhostと公開ドメインをトンネルで繋ぐアプリだと感じています。このアプリをダウンロードしてSetup&Installation
の項目を見ながらセットアップしましょう!
私はMacですのでbrewからngrokを使用できるようにしました〜↓↓↓
Install ngrok via Homebrew with the following command:
$ brew install ngrok/ngrok/ngrok
Run the following command to add your authtoken to the default ngrok.yml >configuration file.
$ ngrok config add-authtoken YOUR_TOKEN
deploy your app(5000portを指定)
ngrok http 5000
これを実行することでlocalhost:5000をドメイン化して取得できるという優れもの!!free planでも最初は問題なし
実際にngrok http 5000
を実行すると
ここ
に書かれているurlがlocalhost:5000番に対応するドメインになりますが私はここでlocalhost:5001番を使用しているので画面には5001と表示されております。
本当は127.0.0.1:5000
がlocalhost:5000
に対応しているはずなのに127.0.0.1:5000
を立ち上げてもlocalhost:5000
にアクセス拒否されるというよくわからん現象に陥り、1日ぐらい無駄にしていました。いまだに原因がよくわかってないのでこれじゃね?見たいのあったら教えていただけると嬉しいです。
lsof -i :5000
これ実行したら何個かlistenになってたから5000番を何かで使ってるのかな〜と思ったけど詳細はよくわからず。。
話は戻って、うまくいけばここ
のurlに/callback
を追加したものをWebhook URLに追加してverifyしましょう!
3. GeminiとLineを繋ぐPythonスクリプトを書こう
Gemini と Line を繋ぐ Python スクリプトを作成します。
-
まずはLINEで送信したメッセージをそのまま返信できるという機能を実装してみましょう
ここができていないとGeminiに情報が正しく送信されているかを確認できないんでね
LINEスタートキットとして公式から公開されているんでこれを使いましょう!自分はpythonで実装したのでこれのReadme参考にオウム返しbotを実装!! -
GeminiAPIキーを発行してGeminiの出力を引っ張ってこよう!
ここまでできたらもう少しだ意外とgeminiの出力を持ってくるのは簡単で
import google.generativeai as genai
genai.configure(api_key="GEMINI_API_KEY")
def get_gemini_response(prompt):
# GeminiのAPIのバージョンを指定
model = genai.GenerativeModel('gemini-pro')
response = model.generate_content(f"{prompt}")
return response
これで取って来れちゃう
4. 実際に動かしてみよう!
作成した Python スクリプトを実行して、実際に動作を確認します。
ソースコード
このreadmeから自分のAPIキーを入れて実行してみましょう!