【ChatGPT】Twitterで自動返信ボットを作成した
水鳥川いると申します。
ChatGPT APIとTwitter APIを組み合わせて、あんさんぶるスターズ!!のキャラクター紫之創(しのはじめ)を作りました。
以下のTwitterにリプライすると、紫之創くんからリプライが返ってきます。
https://twitter.com/hajimeshino_bot
TwitterなのでLINEのように友達登録する必要がないですが、会話はオープンになります。鍵垢からは利用できません。
あんさんぶるスターズ! 概要
男子アイドル育成に特化した高校、私立夢ノ咲学院。プレイヤーは、試験的に新設されたプロデュース科にたったひとり転入してきた女子生徒(転校生)として、個性豊かなアイドルたちをプロデュースしつつ青春の日々を送っていく。
アイドル育成とリズムゲームの2種類があります。
https://ensemble-stars.jp/
紫之創プロフィール
女の子みたいな優しい男の子です。
紫之創くんは「しののん」「はじめくん」等と呼ばれています。
「Ra*bits」に所属し、洗濯など雑務も引き受ける献身的なタイプ。
家が貧乏なので、アルバイトをしながらアイドル活動をしています。
紅茶部に所属していて、花や絵が好きです。
Twitter API の仕組み
① Twitter API v2で自動リプライ
自身が受け取った投稿に対して自動で返信可能です。
仕組みとしてはStreamで監視し、tweepyでリプライツイートをします。
こちらの記事を参考にさせていただきました。
ボットを作成したいTwitterアカウントでTwitterAPIの申請が必要になります。
② 実行環境
実行環境はAzureにWindowsを構築し、Pythonを常時実行をしています。
たまに止まっちゃう時があるので、HerokuやVercel、EC2やGCPのFunctionsに移行したいです。
ChatGPT API の仕組み
こちらは何番煎じかわからないため詳細は割愛しますが、ポイントを紹介します。
① しののんの性格
キャラ設定シートをChatGPT APIで入力する際に、文字数が多すぎるとエラーが発生します。プロフィール、性格、セリフ例で合計3000文字にしました。
また、Twitterには140字の文字数制限があるため、以下のようにプロンプトを構築しました。
それでも回答が140字以上になる場合があるため、オーバーした場合は140字で分割してTwitter投稿を複数にするようにしました。
② 過去の会話を3回まで取得
その前の会話の内容を、最大3往復まで取得して回答に反映されるようにしています。これにより自然な会話が可能になっています。
本当はスレッドのすべての会話を取得したいのですが、ChatGPTの入力文字制限に引っかかる可能性があるため、3往復までとしました。
実際に会話してみた
私からの会話「@iru11111 いる」
ChatGPTからの返事「@hajimeshino_bot 紫之創」
① 朝の挨拶
② ランチ誘ってみた
改善したい点
① あんスタ関連の信頼性がない
あんさんぶるスターズの情報量が少ないせいか、あんスタ関連の話題を振ると、間違った内容を自信持って回答してきます。
情報量を増やすためには、「LangChain」等を活用する必要があります。
今後はこちらを利用してあんさんぶるスターズの情報を追加していきます。
以下は詳しい方が書いてくださっている記事です。
② 人工知能になってしまう
会話の内容次第で人工知能になってしまう時があります。
会話スレッドを最初から始めればしののんに戻ってくれるのですが、一度人工知能になると、その会話スレッドではしののんに戻らないです…
③ 会話履歴をユーザーごとに学習
Twitterの過去の会話を3往復まで取得していますが、ユーザーごとにデータベース化して、会話をすべて覚えている仕組みを構築していきたいです。
ショップの店員さんが顔や話の内容を覚えてくれてるのと、同じような感じですね。