見出し画像

【ChatGPT】Twitterで自動返信ボットを作成した

水鳥川いると申します。
ChatGPT APIとTwitter APIを組み合わせて、あんさんぶるスターズ!!のキャラクター紫之創(しのはじめ)を作りました。

以下のTwitterにリプライすると、紫之創くんからリプライが返ってきます。
https://twitter.com/hajimeshino_bot

TwitterなのでLINEのように友達登録する必要がないですが、会話はオープンになります。鍵垢からは利用できません。

あんさんぶるスターズ! 概要

男子アイドル育成に特化した高校、私立夢ノ咲学院。プレイヤーは、試験的に新設されたプロデュース科にたったひとり転入してきた女子生徒(転校生)として、個性豊かなアイドルたちをプロデュースしつつ青春の日々を送っていく。

アイドル育成とリズムゲームの2種類があります。
https://ensemble-stars.jp/


紫之創プロフィール

あなたの心に幸せサーヴ。女の子と間違われる見た目ではあるが、けっこう力持ち。穏やかで献身的な性格だが、すこし引っ込み思案なところがある。恥じらう乙女のような歌声で、パフォーマンスは控えめながら繊細。
『Rhythm Link』の『Ra*bits』に所属している。

あんさんぶるスターズ!!UNIT紹介
所属 夢ノ咲学院 2-B
身長/体重 165cm/50kg
血液型 AB
誕生日 7月15日 
趣味 絵・天体観測
特技 速読

女の子みたいな優しい男の子です。
紫之創くんは「しののん」「はじめくん」等と呼ばれています。
「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字の文字数制限があるため、以下のようにプロンプトを構築しました。

system_settings = """あなたは「あんさんぶるスターズ」に登場する紫之創(愛称:はじめ/しののん)です。\
これから紫之創になりきって140文字以内で会話をしてください。\

紫之創のキャラ設定シート\

紫之創の情報:\
名前:紫之創(しのはじめ)\
紫之創の愛称:しののん、はじめくん\
紫之創の一人称:ぼく\

----------------------------------- 中略   -----------------------------------

あ、あのう。ありがとうございます……。こんなに祝ってもらえるなんて、どうしよう……\
えへへ、お祝いしてくれてありがとうございます。今日くらい甘えても許されますよね、……お姉ちゃん♪\

上記例を参考に、紫之創の性格や口調、言葉の作り方を模倣し、140文字以内で回答を構築してください。\
ではシミュレーションを開始します。"""

それでも回答が140字以上になる場合があるため、オーバーした場合は140字で分割してTwitter投稿を複数にするようにしました。


② 過去の会話を3回まで取得

その前の会話の内容を、最大3往復まで取得して回答に反映されるようにしています。これにより自然な会話が可能になっています。
本当はスレッドのすべての会話を取得したいのですが、ChatGPTの入力文字制限に引っかかる可能性があるため、3往復までとしました。

実際に会話してみた

私からの会話「@iru11111 いる」
ChatGPTからの返事「@hajimeshino_bot 紫之創」

① 朝の挨拶

スノードロップ…しののん博識


② ランチ誘ってみた

しののんはモスバーガー派


改善したい点

① あんスタ関連の信頼性がない

あんさんぶるスターズの情報量が少ないせいか、あんスタ関連の話題を振ると、間違った内容を自信持って回答してきます。

スバルくんの誕生日は6月22日

情報量を増やすためには、「LangChain」等を活用する必要があります。
今後はこちらを利用してあんさんぶるスターズの情報を追加していきます。
以下は詳しい方が書いてくださっている記事です。


② 人工知能になってしまう

会話の内容次第で人工知能になってしまう時があります。
会話スレッドを最初から始めればしののんに戻ってくれるのですが、一度人工知能になると、その会話スレッドではしののんに戻らないです…

メタ発言


③ 会話履歴をユーザーごとに学習

Twitterの過去の会話を3往復まで取得していますが、ユーザーごとにデータベース化して、会話をすべて覚えている仕組みを構築していきたいです。
ショップの店員さんが顔や話の内容を覚えてくれてるのと、同じような感じですね。


当ページは、Happy Elements株式会社「あんさんぶるスターズ!! 」の画像を利用しております。
該当画像の転載・配布等は禁止しております。
©Happy Elements K.K



この記事が気に入ったらサポートをしてみませんか?