スマホゲームでのChatGPTの活用 アンジュ・リリンクのエイプリルフール施策
はじめに
今回は業務においてChatGPT を活用した件についてお話しします。
作ったものは、2023年4月1日(土)の24時間のみ公開された、エイプリルフール限定施策のWebサイトです。
【日向美海の事件簿2】
アンジュ・リリンクの公式HPに4/1限定でチャットAIが登場!
日向美海と一緒にAIから聞き取り調査を行い、とある事件の真相を追いましょう。
今すぐ☟からご確認ください。https://t.co/MCZfcezmsH#アンジュ・リリンク#アンジュAI#エイプリルフール pic.twitter.com/KGNgq0ZQcl
— 【公式】アンジュ・リリンク (@angeRelink) 2023年3月31日
▼本施策に関するプレスリリース
エイプリルフールストーリーの概要
『アンジュ・リリンク』の公式HPにチャットAIが登場。青蘭学園の情報が搭載されたAIに対して自由にメッセージを送ることで、ストーリーが展開していきます。
<ストーリーあらすじ>
Dr.ミハイルが開発した最新鋭AIが突然、記憶を喪失してしまった!
あなたと日向美海はDr.ミハイルから依頼を受け、記憶を喪失し、ポンコツAIとなってしまったAIから聞き取り調査を行うことに。
最新鋭AIに何があったのか?
事件の真相を聞き出そう!
施策の仕様とポイント
・特設Webサイト上で、プレイヤーはチャット形式で自由に会話ができる。
・会話が10往復するまでの間に記憶喪失の原因を特定し、フォームに正解を入力すればクリアとなる。
・ロボットとの会話にChatGPT APIを使用している。
構成
Webフロントエンド (JavaScript)
↕
AWS API Gateway
↕
AWS Lambda (Python)
↕
ChatGPT API
コスト
ChatGPT APIにリクエストするたびに、パラメータで渡す文字列とレスポンスとして返ってくる文字列のサイズ(トークン数)に比例して課金されます。実装時点で一番お安いgpt-3.5-turboモデルだと1000トークンごとに$0.002(0.27円)という設定です。トークンの計算方法は、日本語だと平均して0.91文字で1トークンに相当するのだそうです。
今回の仕組みだと、会話1回のリクエストごとにそれまでの会話履歴をまるごとパラメータにして送る形なので、会話の往復回数が増えるほど1リクエストあたりのトークン数が多くなっていきます。また、初期設定としてChatGPTに与える指示の文字数は毎回のリクエストに乗ってきます。実測として、会話の1回目が1000トークン、10回目だと2500~3000トークンくらいになる感じで、10回の会話を行なうと合計4円程度がかかりました。
※会話履歴をすべて送らずに直近数回分に絞ったりすることで、会話の往復回数が増えたときのトークン数を抑える工夫ができるとのこと。
ユーザ数と1利用あたりの会話回数を予想すると、ChatGPT APIの使用料は$100あれば収まる見込みでした。ただ、会話ボタンを連打したらその分だけ課金されるのは危ないですし、急にバズったりしてうれしい悲鳴が上がる場合も考慮して、いくつかの対応を入れました。
-
会話は10往復を上限とし、それ以上続けられないルールにした(Lambda側のバリデーションでも配列の長さをチェックしている)。
-
10往復の会話をしたあとに最初からやり直したい場合、1時間のインターバルを待つ必要がある、という仕組みにした(これはフロントエンドでチェックしているだけなので、仕組みが分かれば回避できてしまう)。
-
ChatGPT APIのHard limitに$400(見込みの4倍)を設定した。Hard limitは月の課金額の上限で、この予算額を超えると以降のAPIリクエストに対してエラーを返してくれる。※初期状態だとHard limitとして設定できる最大値が$100なので、この上限解放申請をOpenAI社に送らないといけない。1日で対応してもらえた。
-
API Gatewayのスロットリング(時間あたりのリクエスト上限数という意味合いのもの)を設定した。仮に短時間にどれだけアクセス集中したとしても、$400を使い切るのに24時間はかかる程度のしきい値にした。
結果として、4月1日の24時間で約1万リクエストがあり、API使用料は約4000円で済みました!
総括
Python初心者でも実装できた
ゲームとしてどのように面白くするかの工夫は必要
今までにないユーザー体験を提供できる
後記
実装段階ではあまりにうまくいかないので、登場人物を演じてもらうことは諦めて、言うことが一切アテにならない「記憶喪失のポンコツAI」という逆の方向に振り切りました。記憶喪失のAIではあるけど、「青蘭学園」「風紀委員」「東条遥」などのキーワードには反応するように指示しておいて、記憶喪失の原因を解き明かすという部分でゲーム性を出せないか、という狙いでした。
「あなたは記憶喪失です」と指示してもダメで、「記憶喪失になったポンコツロボットを演じてください(ロールプレイしてください)」と指示した方が意図に近い受け答えをしてくれました。
Discussion