【アプリ開発日記62週目】キャラ設定を作るプロンプトを模索してみる
「自分の作ったキャラをいろんな世界で遊ばせてみたい!」
ということで、今までマイキャラをイラスト化したり、複数キャラの会話のシミュレーションシステムを作ったりしてきました。
そこで思い至るのです。「キャラ設定が面白くないと、なんか空っぽだよな」と。逆に言えば、キャラがめちゃくちゃしっかりしていれば、大体の会話は面白くなってきます。
じゃあどうするのか。最初はBing先生に聞いていました。「~という物語があります。この少女が意外と好きなものを10個書いてみて」みたいな。
けど、それだとどうしても自分の好きなものを選んでしまうので、全体として複数のキャラを並べてみると、似たりよったりになってしまう。
そこで登場するのが、最近気になっていた「ゴールシーク」! 見た目は下画像のような感じでずっと距離を取っていたのですが、いざ触れてみると……
「え、これドキュメント生成とかのAI系の中でも群抜いてめちゃくちゃ面白くない!?」
ということで触っていきます!
この仕組みの開発者は、去年の夏頃この日記でもFlutterFlowを導入した時に参考にさせていただいていた、シュンスケさん。
WEEKLY OCHIAIでこのプロンプトを拝見してはいたのですが、正直見た目があまりにすごすぎて、スルーしていたのです。
ところが、noteで拝見させていただいている清水さんの記事で再び登場
これを見て「おお!よし、やろう」となる落合さんや清水さんも、これを作ったシュンスケさんもすごすぎます。
これはもう試してみるしかない…ということで、とりあえずこのプロンプトを実行しました。「たしかにすごい!」とはなったのですが、何がどうなったのかはさっぱり分からず。
理解にしばらくかかったのですが、以下のブログで非常にわかりやすくまとまとめられていました。
また、こちらのnoteでは丁寧に図解もされていて、特に初めての方はとっかかりやすいかも。
つまり…プロンプト内に変数を入れることで「ゴールを設定し、それに必要な質問を羅列する(=プロンプトを作成する)。改めてそれにChatGPTが答えることで、より具体的な完成像を作り出す」ということみたいです。間違っていたらすいません。
生成した仮質問をユーザーが訂正したり付け足したい、という場合も少なからずあると思うので、完成像の出力後、「ここをこういうふうにして作り直して」とする必要はありそうですね。
でもたしかに、プロンプト内に変数を埋め込めるのであれば、ゴールシークに限らずかなり幅が広がる…!
▼
こんな感じで、以前は人数分飛ばしていたAPIも一回で済むようになりそうです。
しかもゴールシーク、質問時の変更箇所は冒頭の一箇所だけでいいのです。私はWEEKLY OCHIAIでも使われていた、清水さんのnote内のプロンプトを使わせていただきました。
ちなみに、「〇〇の物語をつくる」という一行のゴールで行っても、「じゃあここの設定好きなものに決めて」と必要な部分をChatGPTが並べてくれるので、迷う時間もなく効率的にプロットを組んでいくことができます!
以下「物語のあらすじを作って」でゴールシーク有無を比較した場合。
すごい! シンプルに「〇〇な物語を作って」と入力するよりも、ちゃんと物語を作る上で必要な要素の柔軟性を保ちながら、どこでどんなシーンを挟めば伝わりやすくなるのか、ユーザーは何をすればいいかを含め、具体的なあらすじを提案してくれています。
デメリットとしては、これもあくまで当たり障りのないラインを超えないところなど。おそらく、数年絵を描いていた時もそうだったのですが、「自分の感情が昂ぶっている時」にはみ出た102%の2%分あたりがその人の個性として表出されていて、そこが絵の良さにもなっていて。
「質問が雑、故に回答も雑」といったところだと思うのですが、今回の場合は「ユーザーのグッとくるシーンやこだわりキャラ」をもっと具体的に入れるようにできれば良さそうですね。
そこで「もし物語を作る上で、ユーザーの意見が必要だと感じた場所や、物語を書いているけど物足りないと思ったところは箇条書きにして、最後にユーザーへの質問形式でまとめて」というプロンプトを追加しました。
…が、なぜかこれは反映されず。以下のような結果になりました。
たしかに物語の流れに忠実ではあります、が。これでは何も変わらない! ということで、ゴールシークによる回答にゴールシークをかけるという荒業へ。
というように、改めてゴールを設定させると……
なぜかユーザーの質問には答えましたと自信満々で語っていますが、キャラクター像が立体的になってきました! 「あ、そういえばこの要素考えていなかったけど大事だな」というところも上げてくれています。今回は「主人公の苦手なもの」でしたが、結果や途中のプロンプトにいちゃもんをつけたり、自分自身の好み癖を入れたり、「読者の予想を裏切るようなギャップを作って」などと続けていけば、かなり立体的なキャラクター像が出来上がっていきそうです。
どうしても「物足りないところはユーザーに質問させるor補完してもらう」ということはできないかと考えたところ「[C5]を付け足せばいいじゃん」というシンプルな解決策を思いつきます。
ということで実行。
ちゃんと分からなかったところを箇条書してくれるようになりました!
おわりに
自分のキャラに深みが出てくるのはたまらない! 変数をプロンプトに組み込めるとか、ゴールシークの仕組みとか感動できる! 感動を共有したい!
一方で、自分のプロンプト力の無さや経験の浅さ、語彙力不足etc…も露見。それでもなぜか、AIによる自動化とか関係なく、こういうコード的な何かには惹かれるのも確かなんです。
GoogleのPalm APIやMicrosoft 365 Copilotのように日常的に使っているツールにもAIが浸透するほど、自然言語とコードの世界が密接につながりつつあることを強く感じた今週。それ故に医療分野などいろいろな分野でも今回のようなツールの発展が、今後大きく影響してくる可能性もあります。
私が触れるとすれば、「耐性菌増加を抑えるために最適な抗菌薬を投与したい。だけど色々な種類があるし日々耐性菌の状況も変わるから複雑でよくわからない」時にパッと誰でもすぐわかる、「複数の疾患の薬を飲んでるから副作用が出るかも」と言う時に最適な薬の組み合わせを提案してくれる、などですかね。いずれも考えるの面倒くさいとなりながら(私です)近年現場では事実として深刻になりつつある(効かない抗菌薬が増えている)ので、利益は変わらないかもしれないけど、こういう面倒な手間をぱぱっと解決するようなツールは欲しいものです。
最後に、海外で話題になっている「最高のプロンプトを作る」も貼っておきます。
ではでは!
この記事が気に入ったらサポートをしてみませんか?