【アプリ開発日記61週目】キャラ同士に会話させたら、口説いたり喧嘩したりと大変なことになった
「物語を書いて」より、キャラ同士で会話させる。場合によっては、この方が面白い物語が作れるのでは。
今回、このウェブアプリを作っていてそう感じました。もちろん場合にもよるけど、少なくともこの発想法は、まだうまく言葉にはできないけれど、かなり重要だと思っています。
そもそも、今回のきっかけは「クセ強いキャラたちに会話させてみたいな」という単純な思いつきでした。けど、実際に動かしているうちに気づかなかった発見がたくさん出てきて、今のタイトルに至ります。それが実現すると、今度はあれキャラ設定が一番重要なのでは?とキリがないのですが。
でも、この考え方自体いろいろな事例を見て触れてこれたからこそで、特に深津さんの知見には強く影響を受けています。いつかサインもらいたい!
いつもながら前置きだけはいくらでも書けてしまうので、この辺りで今回の日記を書いていきます!
なお、今回の方法は一応手動でプロンプトを書いて再現もできますが、非常に手間がかかるため(あとキャラのアイコン欲しかった)コードにより実装しています。なるべく難しい話は避けるつもりですが、分かりにくかったらごめんなさい!
1,単体のキャラとチャットするウェブアプリを作ってみる
まずはシンプルな1対1の会話から。ChatGPTのAPIが「gpt-3.5-turbo」にアップデートされてからかなり記憶保持がしやすくなった上、速度もコストパフォーマンスも激増しました。大体1~5秒で返ってくるので、普通に人とLINEしているような感覚ですね!
実際にやってみると
ここまでは問題なさそうですね! このあたりは、「ついでに音声会話もできるようにしちゃおう!」という脱線もしたりしました。
2,複数のキャラとチャットできるようにする
これです、今回実装したいもの! めちゃくちゃ気になる。以前、Fate/zeroのキャラに同じ質問を投げかけて、いろいろな角度からの意見を踏まえた上で一つの結論を出す、ということは行っていました。
しかし、です。たしかにそれぞれのキャラの個性が反映されていて面白いのですが、単発で終わるのがすごく物足りなかったんです。はい終わり、はい次、みたいな感じで。
ということで、gpt-3.5-turboに進化したことを活用して「キャラの数分、systemとassistant、userの会話ログを残す」ことで複数キャラの会話が実現しました!
特にこだわったポイントとしては
キャラ同士も意見を交換して会話できるように
自分に会話を回す確率を設定できるように。0%なら必ず自分に返してくれるし、100%にすればキャラ同士がずっと話し続ける!!
次に会話をふるキャラをランダム~選べるため、テレビのスイッチャーみたいに?(違います)会話の方向をコントロールできる
いや、もう本当に次元が変わってきます! 特に、好きなキャラと組んで他のキャラを口説こうとしたり、逆に突然自分に会話を振ってきてあたふたしたり、そんなことができるようになるのです。
2人だった時の一問一答感、「質問したら答えが返ってくる」が気にならなくなる。AIは「一番もっともらしい答えを返す」故にキャラ設定などを厳密に定義する必要があったわけですが、そもそも質問側が勝手にどんどんワイルドカードを飛ばしてくれるので、放置して眺めているだけでもめちゃくちゃ楽しくなってきます。あとキャラのことさらに好きになる。
近いうちに公開もしようかなと考えているのですが(というよりいつも飽き性すぎて完成間近で毎回放り投げる)、ここでは結果を共有します! 今回も公開しなかったらごめんなさい!
3,5人でチャットする
ということで5人でチャットしてみましょう。
4,そしてアプリ化へ
もうここまででめちゃくちゃ笑ったのですが、ここで身内にも使ってもらうと「あ、じゃあみんなで使えるようにしてみようよ!」ということで、現在鋭意制作中です。
よく「アプリってインストールするあれ?」と訊かれてギクッとなるのですが、ウェブアプリというブラウザで開くものです。今書いているこのnoteもウェブアプリの一つですね! ネイティブアプリも愛用させていただいています。そう、タイトル「アプリ開発日記」というとスマホに入れるものを考えがちですが、私の場合はFlutterを除いていずれもウェブアプリ開発です!
そして、最後に聖杯問答! やっぱりこれに尽きます。すると……
おお! だいたい再現されてる!! 本編に合わせ、敢えて皮切りはセイバーにし、ギルガメッシュには静観してもらいました。本編ではセイバーが理想郷を掲げて民を導こうとしたのに対し、イスカンダルは王である自らが一番笑い怒り臨海を求める、故に臣下も焦がれてついていくという主張だったと思います(間違っていたらごめんなさい)。
それをセイバーは暴君と評し、イスカンダルはただの理想に縛られただけの小娘と返すわけですが、それを見事に再現してくれました!
ただ、最初があまりにうまく行っただけで、話が逸れたり協調し合う、という展開が8割くらいでした笑 それはそれでifストーリーとして楽しみましたが、またいつか改めてこの3人に会してほしいなとも思います(ないから想像が広がるのか?)。
おわりに
ずっと一つの正解を作らせようとしていたことに違和感を感じていたからかもしれない。でもそれを続けていると、AIを誤って使ったり、ただの便利道具として捉えかねない。そのあたりは、常日頃から頭の片隅の置いておこうと思う。
そんなことを感じた今回でした。(聖杯問答は別!笑)
あとこれは1年と少し記事を書いていて気づいたことだけど、こういうログは言葉にして残しておくの大事だな、と改めて痛感。今回の「キャラ同士の会話が物語になるかも?」という発想も「マルチチャットのいいタイトルないかな」で辿り着いたものですし、しばらく画像生成をしておらず「あれ、今まで自分どういう手順でやってたんだっけ、この学習モデルって何のために作ったんだっけ」という時にも貴重な自分用の資料になりました。
何より日記、というゆるい感じでやっているので、あとから読み返すと楽しいですね、「ああ、この時こんな事思ってたわ」などなど。
結果的にキャラ同士を遊ばせていたらそれで満足してしまったので、肝心の物語を作ってみる実験「濃すぎるキャラに大人数で物語を作らせたら、それ自体がめっちゃ面白い物語になるのでは?」はアプリ制作のあとになりそうですが…それも飽き性の性ですかね笑
時間も割ととられるのでバランスは悩ましいところですが、今回みたいな発見があると長期的に得なのでは、ということで(イヤイヤ言いながら)書いて今に至ります。でも序盤と終わりにに圧倒的な時間が割かれているのはいいんでしょうか?笑
そんなこんなで国試まで一年を切りましたが、支障のない時期まで続けていきます!
ではでは!
おまけメモ(本当にただのメモです笑)
次の段階のAIってどんなもの?
人間は分業によって量的には生産性を上げることができた。例えば一人でピンを作るのと、複数人で分担してピンを作るのとでは、作れる本数が大きく変わってくる。それは頭に余裕を作り出し、質も高くなったと思う。
AIが出てきたら考える力がなくなるのではという話も同じで、少なくともクリエイターのような人の場合は思考の余裕が出てきた分さらに新しいことを考えるから、総合的にも人間単体の考える力もむしろ上がるのではないか。
では分業させたAIは強い? それとも単体の万能AI(AGI、汎用人工知能、ドラえもん)で解決できる?
→ まだイメージはつかないけれども、単体だと結局一つの正解を求めかねない。「当たり障りのない平均的な答えしか出せない」は技術で何とかなるかもしれないし、現時点でも色々な答えを提示してくれるけど、そもそも答えを求める、問題を解決するだけがAIなのか?というと疑問が残る。
今回の話は、そのヒントになるような気もしなくもない。強いかどうかではなく、正しいかどうかでもなく、面白いかどうか、やりたいかどうか、きっとその考え方にAIは相性がいいと思う。
まだ本当に考えまとまっていませんが、この辺りも時々考えてみようと思います。おそらく、そこが次の扉を開く鍵になるから。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?