プログラムを全く知らない初心者がGPTさんとLINE Botを作った話:④ローカルテスト

AI

とうとう実際にコードを書いてローカルでテストしていきます!
とは言っても、コードはGPTさんが提供してくれたものですが(笑)

コードを書く

では実際にコードを書いていきます。
書いてくれたのはGPT4さんで、それをコピペしていきます(笑)

まず「Visual Studio Code」を起動します。
タスクバーの検索に「VSCode」と入力します。

こちらを起動します。

起動したら「File」 「New Text File」 と選択して新規ファイルを作成してください。

そうしたら以下のコードをコピペします。

from flask import Flask, request, abort
from linebot import LineBotApi, WebhookHandler
from linebot.exceptions import InvalidSignatureError
from linebot.models import MessageEvent, TextMessage, TextSendMessage
import requests
import os

app = Flask(__name__)

line_bot_api = LineBotApi(os.getenv('LINE_CHANNEL_ACCESS_TOKEN'))
handler = WebhookHandler(os.getenv('LINE_CHANNEL_SECRET'))

@app.route("/callback", methods=['POST'])
def callback():
    signature = request.headers['X-Line-Signature']
    body = request.get_data(as_text=True)

    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        abort(400)

    return 'OK'

@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    user_text = event.message.text
    response = requests.post('https://api.openai.com/v1/engines/davinci-codex/completions', 
                             headers={'Authorization': f'Bearer {os.getenv("OPENAI_API_KEY")}'},
                             json={'prompt': user_text, 'max_tokens': 100})
    # product_keyword = parse_response(response.json())  
    # product_url = search_product(product_keyword)  
    
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=f'ユーザーからのメッセージ: {user_text}')
    )

if __name__ == "__main__":
    port = int(os.getenv("PORT", 5000))
    app.run(host="0.0.0.0", port=port)

Pythonはインデント(スペース)が重要らしく、ずれると起動しないので注意してください。
以下に画像も貼っておきますので、コピペでうまく行かなければこちらを参考に修正してください。

できましたら、こちらのコードを「app.py」として保存してください。
「.py」Pythonの拡張子です。

保存先は必ずPythonの環境構築時に作成したディレクトリにしてください。

app.pyを起動する

保存が終わったら「PwerShell」を開きます。

開いたら、「cd」 コマンドを使って「app.py」を保存したディレクトリに移動します。
私はEドライブ直下の「chatbot」フォルダーなので以下のようになります。

cd E:\chatbot

移動したら環境変数を指定するコードを入力します。

$env:LINE_CHANNEL_ACCESS_TOKEN="your_line_channel_access_token"
$env:LINE_CHANNEL_SECRET="your_line_channel_secret"
$env:OPENAI_API_KEY="your_openai_api_key"
$env:PORT="5000"

上記の
your_line_channel_access_token ➡ LINEのチャンネルアクセストークン
your_line_channel_secret ➡ LINEのチャンネルシークレット
your_openai_api_key ➡ OpenAIのAPIキー
ご自身のものに書き換えてください。

次に以下のコードで「app.py」を起動します。

python app.py

Running on http://IPアドレス と表示されていれば成功です!
赤字でWARNNINGがでていても問題ありません。

次にもう一つ「PwerShell」を開きます。
開いたら、「cd」 コマンドを使ってngrokが置いてあるディレクトリに移動します。
私はEドライブの直下に置いてあるので以下のようになります。

cd E:\

移動したらngrokを起動するコマンドを入力します。

./ngrok http 5000

以下のような画面になったら正解です。

成功していたら以下の部分をメモしておいてください。

LINE BotアカウントでWebhookを有効にする

LINE Developers「Messaging API設定」に移動して「Webhook URL」の編集をクリックしてください。

こちらに先程メモしたURLの最後に「/callback」をつけて入力してください。

 https://xxxxxxxxxxxxxx.jp.ngrok.io/callback

そして「Webhookの利用」を有効にしてください。

この状態で「検証」を押して「成功」がでたらLINEで使えるはずです。
スマホでQRコードを撮影して、トークルームに入り試してみてください。

次回はGCP(Google Cloud Platform)を使用してオンライに公開します!

コメント

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