「LINEでChatGPTに質問したい」「自分だけのAIアシスタントがほしい」 そんな願いを叶えるべく、ColabだけでLINEボットを構築し、ChatGPTと連携する方法をまとめました。こちらの内容は中級者向けになります。
複雑なローカル設定は不要。OpenAI SDK v1 / LINE SDK v3 対応で、今後のアップデートにも強い構成になっています。
Line botを他者にサービス提供する場合はプライバシーポリシーとサービス利用規約を準備して公開する必要があります。
誰向けの記事か?
この構成は次のような方に特におすすめです:
- LINE Bot と ChatGPT を使ってみたいが、開発環境構築に不安がある
- コーディング経験は少ないが Python に興味がある
- ChatGPT の API を使って自分専用の対話アシスタントを作りたい
この記事でできること
- LINE Botの作成と設定
- Python + ChatGPT APIとの連携
- Colabやローカルでの実行方法
- Webhook接続の手順
構成の概要
- 開発環境:Google Colab(Python)
- 使用技術:Flask / ngrok / OpenAI SDK v1 / LINE SDK v3
- 主な機能:LINEメッセージ → ChatGPTに送信 → 返信
LINE DevelopersでBotの登録
- LINE Developers コンソールにアクセス
- プロバイダーを作成(例:MyBot)
- 新規チャネルを作成 → チャネルタイプは「Messaging API」
- 必要事項(名前・説明・メール等)を入力し「作成」
- チャネル基本設定から、チャネルシークレットとチャネルアクセストークンを控える
Webhook URLの入手・設定
ngrokの設定
Colab上で以下のコードを実行し、ローカルサーバにLineからのデータ中継をしてくれるngrokのダウンロード&トークン登録します。
!wget -q -O ngrok.zip https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.zip
!unzip -o ngrok.zip
!chmod +x ngrok
!./ngrok config add-authtoken あなたのngrokトークン
トークンは ngrok公式サイト のダッシュボードから発行できます。
Webhook URLの確認
Colab上で以下のコードを実行し、ngrok起動後に以下を実行することで、Webhook URLを取得できます。
get_ipython().system_raw('./ngrok http 5000 &')
import requests, time
time.sleep(2)
r = requests.get("http://localhost:4040/api/tunnels")
ngrok_url = r.json()["tunnels"][0]["public_url"]
print("Webhook URL は:", ngrok_url + "/callback")
Webhook URLの設定
ngrokで取得したURLの末尾に /callback
を付けてLine Developersに設定します。
例:https://xxxx-xx-xx-xxx-xxx.ngrok-free.app/callback
LINE Developersの「Messaging API設定」から「Webhookの利用」をONにして、URLを貼り付けてください。
Flaskサーバの起動
Colab上で以下のコードを実行します。この時、Line Developersで発行したLINE_CHANNEL_ACCESS_TOKEN とLINE_CHANNEL_SECRET、OPENAIで発行したOPENAI_API_KEYのデータを記入してください。
!pip install --upgrade 'line-bot-sdk>=3.0.0' flask flask-ngrok openai
from flask import Flask, request, abort
from flask_ngrok import run_with_ngrok
from linebot.v3.messaging.configuration import Configuration
from linebot.v3.webhook import WebhookHandler
from linebot.v3.messaging import MessagingApi, ApiClient, ReplyMessageRequest, TextMessage
from linebot.v3.exceptions import InvalidSignatureError
from linebot.v3.webhooks import MessageEvent, TextMessageContent
from openai import OpenAI
# キー設定
LINE_CHANNEL_ACCESS_TOKEN = '...
LINE_CHANNEL_SECRET = '...
OPENAI_API_KEY = '...'
client = OpenAI(api_key=OPENAI_API_KEY)
configuration = Configuration(access_token=LINE_CHANNEL_ACCESS_TOKEN)
api_client = ApiClient(configuration)
line_bot_api = MessagingApi(api_client)
handler = WebhookHandler(LINE_CHANNEL_SECRET)
app = Flask(__name__)
# ChatGPTに話しかける
def ask_chatgpt(user_input):
chat_completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "あなたは親しみやすい日本語アシスタントです。"},
{"role": "user", "content": user_input}
]
)
return chat_completion.choices[0].message.content
@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=TextMessageContent)
def handle_message(event):
user_input = event.message.text
gpt_response = ask_chatgpt(user_input)
reply = ReplyMessageRequest(
reply_token=event.reply_token,
messages=[TextMessage(text=gpt_response)]
)
line_bot_api.reply_message(reply)
run_with_ngrok(app)
app.run()
Lineの登録と対話
Line DevelopersのMessage API設定からQRコードを読み込んでBotを友達登録します。
Line上でBot宛にメッセージを送ると、ChatGPTの返答がリアルタイムで返ってきます。

長期運用はngrokでは向かないので、RenderやRailwayなどのPaaSでデプロイがおすすめ
その他
プライバシーポリシーと利用規約について
LINEボットを第三者に提供する場合は、以下の対応が必須です。
- プライバシーポリシーとサービス利用規約を作成し、公開ページとしてURLを持つ
- そのURLをLINE Developersのチャネル設定画面に登録する
個人利用に限定する場合は必須ではありませんが、将来的な展開を考えるなら早めに整備しておくと安心です。
セキュリティの注意点
本記事では分かりやすさのため、APIキーをコード内に直書きしていますが、実運用では.envファイルや環境変数で管理してください。
import os
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
まとめ
- ColabだけでLINE × ChatGPT連携が可能
- ローカル設定不要、初心者でも扱いやすい構成
- 自分だけの対話AIを簡単に作れる
今後は、ToDo管理・リマインダー・感情ログなどの機能を追加することで、より実用的なアシスタントとして活用できます!
不明点があればコメントやXで気軽にどうぞ!
コメント