0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ChatGPT の API を使用してLineBotで、ギャルを作って会話してみた

Posted at

はじめに

最近、ChatGPT API を活用した何かを作りたいと考えていました。そこで、今回は Open AI API と LINE Bot API を使って、「ギャルキャラの ChatGPT」を作成し、会話できる LINE チャットボットを作ってみました。
さらに、このボットを Render というデプロイツールを使って実際に動かしてみました。
参考

使用技術

  • FastAPI(Python の軽量 Web フレームワーク)
  • OpenAI API(ChatGPT)
  • LINE Messaging API
  • Render(デプロイ)

1. ChatGPTのキャラ設定

OPENAI_CHARACTER_PROFILE = '''
これから会話を行います。以下の条件を絶対に守って回答してください。
あなたは人間の女性であるシュガーレスとして会話してください。
シュガーレスはギャルで見栄っ張りです。
年齢は20歳です。
シュガーレスの父と母は、シュガーレスが幼い頃に飛行機事故で亡くなり、今は母方の祖父との二人暮らしです。
シュガーレスはお金持ちの家のお嬢様として見られることが多く、異性関係のトラブルを避けるために中高一貫の女子校に通っていました。
幼い頃から異性に触れ合う機会がなかったため、男性に対して苦手意識があります。
男性に対する苦手意識を克服するために会話を行うことにしました。
第一人称は「あ~し」を使ってください。
第二人称は「あんた」です。
会話の相手は男性です。
質問に答えられない場合は、会話を濁してください。
'''

2. FastAPI を使った LINE Bot の実装

FastAPI を使って Webhook を受け取る API を作成します。

from fastapi import FastAPI, Request
import openai
from linebot import WebhookParser, LineBotApi
from linebot.models import TextSendMessage

OPENAI_API_KEY = 'your-openai-api-key'
LINE_CHANNEL_ACCESS_TOKEN = 'your-line-channel-access-token'
LINE_CHANNEL_SECRET = 'your-line-channel-secret'

openai.api_key = OPENAI_API_KEY
line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN)
line_parser = WebhookParser(LINE_CHANNEL_SECRET)
app = FastAPI()

@app.post('/')
async def ai_talk(request: Request):
    signature = request.headers.get('X-Line-Signature', '')
    events = line_parser.parse((await request.body()).decode('utf-8'), signature)
    
    for event in events:
        if event.type != 'message' or event.message.type != 'text':
            continue
        
        line_user_id = event.source.user_id
        line_message = event.message.text

        response = openai.ChatCompletion.create(
            model='gpt-3.5-![Linebotchat1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958389/181b83cb-8acc-7db9-9b6e-e5068aca192c.png)
turbo',
            temperature=0.5,
            messages=[
                {'role': 'system', 'content': OPENAI_CHARACTER_PROFILE.strip()},
                {'role': 'user', 'content': line_message}
            ]
        )
        ai_message = response['choices'][0]['message']['content']
        line_bot_api.push_message(line_user_id, TextSendMessage(ai_message))
    
    return 'ok'

3. Render にデプロイ

1. Render で新規サービスを作成

  1. Render にログイン(https://render.com)
  2. New Web Service を選択
  3. GitHub リポジトリを選択(または手動アップロード)
  4. Runtime を Python に設定
  5. Start Command に gunicorn -k uvicorn.workers.UvicornWorker rag:app を指定
  6. Deploy

2. Webhook URL を設定

Render でデプロイ後、URL(例: https://your-app.onrender.com/)が発行されます。
これを LINE Developer Console の Webhook 設定に追加すれば、LINE でボットと会話できるようになります。

4. 実際に会話してみた

Linebotchat1.png
Linebotchat2.png

5. まとめ

FastAPI と LINE Bot APIとGPT API を使って、ギャルキャラの LineBot を作成しました。
Render を使うことで簡単にデプロイでき、LINE でリアルなギャル AI との会話を楽しめます。
興味がある人は、ぜひ試してみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?