LINEとGPTの連携で孤独対策!LINEGPTを作ってみました

孤独は人を狂わせる。

長野県中野市で起きた事件はまさに孤独が起こした象徴的な事件です。孤独な人がすべて事件を起こすとは言えませんが、リスク要因であるのは否定できそうもありません。

ですが「人と関わらずに孤独を解消できる」と言われるとどうでしょう。

今回は最近話題のCHATGPTに人格プロンプトを与え、これをAPIでLINEと連携させる「お友達ツール」を作ってみました。企業や団体が躍起になって開発しているシステムですが、お金儲けなんてばかばかしいと思いませんか? 友達作りに活用し孤独を解消しちゃいましょう!!

本稿はベータ版です!あとで修正する予定です。現時点で、不具合やセキュリティリスクは保障できません!あくまで参考程度にとどめてください。

 

 

AIのお友達: LINEとGPTを連携しよう!

作り方に入る前にまずはシステムの仕組みを図説します。下記の画像をご覧ください。

ごめん準備中!

 

 

少し難しく感じてしまうかもしれませんが要はGPTとLINEを連携させて、LINEで対話するというサービスです。

CHATGPTはそのままでも利用できるツールですが無機質な回答しか返ってきません。また、ブラウザや専用アプリの会話だとAI感が強くって、友達って感じがしないんですよね。だからこそ、このシステムを利用して疑似的な人格を与え「LINE上で会話する」という仕組みにこだわりました。

一般的なパソコンと知識がないと作れないよ!コマンドプロンプトとか使えないとキビしいよ!コードはかけなくても大丈夫たぶん

 

 

ステップ1 APIを取得する

まずやることは、LINEとGHATGPTのAPIの取得です。

LINEは下記のURLから取得できます。

参照LINE developers

CHATGPTはこっちです。

参照CHATGPT

登録するとLINEでチャネルアクセストークン、チャネルシークレットが、GPTでAPIキーというのが発行されます。

これはあとで使いますのでメモしてしっかり保管してください。ちなみにソースコードに直接書いたり、知らない人に教えたりすると不正利用もされかねない非常に重要な情報です。漏らさないでね。

ステップ2 パイソン

システムを実装するために必要な環境を整えます。

まず必要なのはPythonというプログラミング言語の環境です。 Python 3.7以上のバージョンをインストールしてください。

参照Python公式

終わったらコマンドプロンプトという画面を使ってPythonを実行してください。「Python」と入力すると起動しますよ。

ステップ3 エングロック

次に必要なのはngrok(エングロック)というソフトウェアです。

これはローカル環境をウェブで公開したい場合やHTTPS通信でやりとりしたいときに使います。LINE APIはHTTPでは動作しないので、このサービスが必要です。

参照ngrok

導入したら、パイソンとは別のコマンドプロンプトを実行し、cdでインストールフォルダに移動しましょう。移動したら、

ngrok http 8000

を実行してください。成功するとURLが発行されるはずです。あとはこれはLINEdeveloperのWebhook URLというところに/callbackを付けて登録します。


https://〇〇.ngrok.io/callback

ちなみに、現時点では検証しても成功しません。

ステップ4 ライブラリの導入

動作に必要なライブラリを導入します。

LINEGPTに必要なライブラリは下記のとおりです。

Flask ウェブアプリケーションを作るためのフレームワークです。
line-bot-sdk LINEからのメッセージを扱うためのSDKです。
Openai OpenAIのAPIを呼び出すためのライブラリです。

pythonを実行してから、

pip install Flask line-bot-sdk openai

を入力しましょう。インストールが開始するはずです。

ステップ5 Pythonファイルをつくろう

次にシステムを実行するためのパイソンファイルを作成します。

ファイル名はapp.py で良いかなと思います。

エディターを使って作るのが理想ですが、メモ帳とかで書いて、拡張子をpyにしても大丈夫。

コードは下記のようなものです。


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

app = Flask(__name__)

# 環境変数から値を取得
line_channel_token = os.environ.get('CHANNEL_TOKEN')
line_channel_secret = os.environ.get('CHANNEL_SECRET')
openai_api_key = os.environ.get('API_KEY')

line_bot_api = LineBotApi(line_channel_token)
handler = WebhookHandler(line_channel_secret)
openai.api_key = openai_api_key

@app.route("/")
def home():
    return "Hello, this is my app!"

@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_message = event.message.text
    conversation = [
        {"role": "system", "content": "ここに与えたい役割を記述します"},
    ]
    
    # キーワードとレスポンスのマッピング
    keyword_responses = {
        "こんにちは": "お好きな反応を入れて下さい",
        "おはよう": "朝だね",
        "こんばんわ": "夜だね",
    }

    # キーワードがメッセージに含まれている場合、対応するレスポンスを返す
    for keyword, response in keyword_responses.items():
        if keyword in user_message:
            conversation.append({"role": "assistant", "content": response})
    
    conversation.append({"role": "user", "content": user_message})
    
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=conversation
    )

    # OpenAI APIからのレスポンスをログに出力
    print(response)

    bot_message = response['choices'][0]['message']['content']

    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=bot_message)
    )

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8000)

{"role": "system", "content": "ここに与えたい役割を記述します"},

この部分に与えたい役割を記述するとGPTが指定した役割を担います(ただし、公表時点でGPTの知識は2021年までです)。また、キーワードの部分を設定することも可能です。

作成後はファイルパスをメモしましょう。コマンドプロンプトでcd ファイルパスを入力して移動したら、「app.py」で実行できます。

ステップ6 環境変数を登録しよう

APIキーなんかはとても重要な情報ですから、できればセキュリティ対策したいところですよね。環境変数という技術が役に立ちます。

環境変数はコマンドプロンプトで下記のコードを入力し設定できます。


setx CHANNEL_TOKEN "my_token"
setx CHANNEL_SECRET "my_secret"
setx API_KEY "my_api_key"

"my_token"と"my_secret"と"my_api_key"のなかには最初の方でメモしたチャネルトークンなどの情報に置き換えてください。ダブルクオーテーションはけしたらダメですよ。

おわったら、コマンドプロンプトを再起動後、


echo %CHANNEL_TOKEN%
echo %CHANNEL_SECRET%
echo %API_KEY%

を入力しましょう。これで正しいキーが帰ってきたら成功です。

ステップ7 実行しよう

システムが完成したら、LINEdevelopersから友達登録用のQRコードを表示してテストしよう!あとはロールを調整し理想の友達作りを目指すのみ!

色んなロールを作ってたくさん増やす
サーバーを起動して電源オフでも動作する
外部URLやPDFファイルを使って学習
他のAPIを噛ませてよりリアルな友達に
セキュリティ強化して法人風チャットボットを作ったり

な~んてカスタマイズもできますよ。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事