ChatGPTとLINEを連携!Colabで作る自作AIアシスタントBot【2025年最新版】

「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の登録

  1. LINE Developers コンソールにアクセス
  2. プロバイダーを作成(例:MyBot)
  3. 新規チャネルを作成 → チャネルタイプは「Messaging API」
  4. 必要事項(名前・説明・メール等)を入力し「作成」
  5. チャネル基本設定から、チャネルシークレットとチャネルアクセストークンを控える

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で気軽にどうぞ!

      コメント

      コメントする

      目次