🫠
Googleの「Gemini」をLINEBotにしてみました。
出来たもの
使ったもの
- Python
- Flask (ウェブアプリ用)
- line-bot-sdk (LINEBot用)
- google-generativeai (Gemini用)
- ngrok (公開用)
コード
色々学ぶ編
まずGeminiの基本的なコードに関しては次のページを御覧ください。
そしてLINEBotに関して、今回参考にした記事・ページは次のとおりです。 ありがとうございます。動いているコード
config.py
LINE_CHANNEL_SECRET = "LINEチャンネルのシークレット"
LINE_CHANNEL_ACCESS_TOKEN = "LINEのAPIのアクセストークン"
GEMINI_API_KEY = 'GEMINIのAPIキー'
↑これは動かすために必要な情報を書いておくところです。
main.py
# ライブラリのインポート
import config
from flask import Flask,request,abort
import google.generativeai as genai
from linebot import (
LineBotApi,WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent,TextMessage,TextSendMessage,
)
app = Flask(__name__)
# geminiを使うための用意
gemini = genai.configure(api_key=config.GEMINI_API_KEY)
# テキストを受け取って返答を生成する関数
def get_response(question):
model = genai.GenerativeModel('gemini-pro')
response = model.generate_content(question)
return response.text
# LINEBotの用意
line_bot_api = LineBotApi(config.LINE_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(config.LINE_CHANNEL_SECRET)
@app.route("/callback",methods=['POST'])
def callback():
signature = request.headers['X-Line-Signature']
body = request.get_data(as_text=True)
app.logger.info(f"Request body: {body}")
try:
handler.handle(body,signature)
except InvalidSignatureError:
abort(400)
return 'OK'
# メッセージを受け取ったときに実行されるやつ
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
if event.reply_token == "00000000000000000000000000000000":
return
line_bot_api.reply_message (
event.reply_token,
TextMessage(text=get_response(event.message.text))
)
if __name__ == '__main__':
app.run(host='localhost',port=8000)
こんなもんですかね。
公開
python main.py
でボット本体を実行、
ngrok http 8000
でngrokを使って公開、表示されたURL+/callback
をwebhooksのURLに設定してください。
以上
以上になります。分かりにくくても文句言わないでください。ChatGPTにでも聞いてくださいよ。
Discussion