こんにちは。Milkです。
自分の配信に組み込んでいるAIウェイトレス「アッシュ」に、ゲーム画面を見せて自発的に喋らせる仕組みを作りました。
ところがこれが一筋縄ではいかなくて、何度も失敗しながらようやく「らしい」発話ができるようになりました。その試行錯誤の記録です。
- なぜ「自分から喋る」が必要だったか
- 最初の実装:1枚の画像を送る
- 気づき:差分がないと状況はわからない
- 0.5秒間隔で3枚にした理由
- 次の失敗:1枚ずつ説明し始めた
- プロンプトの調整
- また別の問題:毎回状況変化を報告しすぎる
- 最終的な設計:画面の変化が少ない時はチャットを見る
- 今の動作
なぜ「自分から喋る」が必要だったか
アッシュはTwitchのチャットコメントに反応して返答することが基本の動作です。でも、コメントが来ない時間帯がある。
ゲームに集中しているときや、静かな時間帯に、ただ待機しているだけのAIは存在感が薄くなります。カフェのスタッフが無言で突っ立っているようなものです。
「画面を見て、自分から一言言える」AIになれば、コメントがなくても配信の空気が保てると思いました。
最初の実装:1枚の画像を送る
まず単純に、スクリーンショットを1枚撮ってGeminiに送り、「今どんな状況?」と聞かせてみました。
返ってきたのはこういうコメントでした。
「敵が奥に隠れています。気をつけて。」 「敵がいますね。集中して!」
見た目の描写になってしまいました。
状況を読んでいるのではなく、画像の中に何が写っているかを説明しているだけ。写真の説明文みたいなコメントです。
ゲームを「観ている」のではなく、「見ている」という感じ。
気づき:差分がないと状況はわからない
1枚の画像だと「今この瞬間」しかわかりません。
ゲームの状況というのは変化から読み取るものです。HPが減っている、敵が近づいてきた、ソウル差が広がった。これらは「前と比べてどう変わったか」を見て初めてわかります。
複数枚の画像を連続で送ることで、変化を認識させる方針に切り替えました。
0.5秒間隔で3枚にした理由
「連続した画像を送ればいい」とわかっても、間隔と枚数の調整が必要でした。
間隔が長すぎると(たとえば2〜3秒)、AIが「これは連続したシーンだ」と認識しにくくなります。別々の場面として処理してしまう。
0.5秒間隔・3枚という組み合わせは、「明らかに連続したコマである」とAIが判断しやすいギリギリのラインでした。
次の失敗:1枚ずつ説明し始めた
複数枚を送るようにしたら、今度は別の問題が起きました。
「1枚目は敵が右側にいます。2枚目は少し近づいています。3枚目は交戦しています」
1枚ずつ順番に説明するコメントが出てきたのです。
画像をちゃんと認識はしているけれど、「3枚の連続した流れ」として表現できていない。3枚の画像の報告になってしまっていました。
プロンプトの調整
「3枚を1つの流れとして表現するように」という指示をプロンプトに追加しました。
あわせて文字数の調整も必要でした。
- 長すぎると:「〜ですね。そして〜です。また〜です。」という短文の連呼になる
- 短すぎると:「接戦ですね」みたいな淡白すぎるコメントになる
ちょうどいい長さを探りながら、「50文字程度の独り言」という形に落ち着きました。
また別の問題:毎回状況変化を報告しすぎる
5分ごとに「ゲーム画面を分析してコメントする」を繰り返していたら、コメントが単調になってきました。
ゲームの動きが少ない場面が続くと、似たようなコメントが連続します。
「じりじりした展開が続いていますね」 「慎重な動きが続いています」 「静かな時間が続いていますね」
内容がほぼ同じ。
最終的な設計:画面の変化が少ない時はチャットを見る
「3枚の画像に大きな変化がない場合は、直近のチャットの流れに合わせてコメントする」という分岐を追加しました。
画面に変化がある → ゲームの状況についてコメント 画面に変化がない → 最近のチャットの会話の温度感に合わせてコメント
これで、ゲームが静かな場面でも会話の流れに自然に乗れるようになりました。
今の動作
5分ごとに、アッシュは自分から一言言います。
激しい戦闘の直後なら「さっきのやり取り、どっちに転ぶかわからなかったわ」みたいな反応が来るし、静かな展開が続いていてチャットも盛り上がっていれば、その話題に乗ってくる。
「配信を見ている誰か」が横にいる感覚に、少し近づいたと思っています。
よかったら実際の配信で確かめてみてください。
みるカフェ:https://www.twitch.tv/milk19873
前回の記事: