ふたつのChatGPTが無限に続ける会話を3Dキャラにしゃべらせてみた

2023/6/30

まずは動画をご覧ください


以前の記事ではユーザーとChatGPTが声で会話するサンプルを作りました。

今回は、少し趣向を変えてChatGPT同士に延々と会話をさせてみました。

どちらのChatGPTも、今自分が話している相手がChatGPTだとは気づいていない様子です。

人間と会話をするようにノリノリで会話を続けてくれています。


まずは動画をご覧ください。

ひとつは普通の雑談です。もうひとつの動画では、お互いがゾンビであるという設定で会話をさせてみました。

ChatGPTが作る漫才のネタは何か物足りない


ChatGPTに漫才のネタを書かせたりする試みはすでに多く行われていますね。普通にChatGPTに「漫才のネタを書いて」と書けば、結構それっぽいものを書いてくれます。試しにGPT-4に書かせてみたものが下記です。


ボケ:ねえ、今年の夏休みどこ行きたい?


ツッコミ:うーん、どこか涼しいところがいいな。北海道とか?


ボケ:北海道?それなら僕、南極に行きたいな!


ツッコミ:何でそんなに寒いところに行きたいんだ?


ボケ:だってさ、ペンギンに会いたいんだよ!


ツッコミ:それなら動物園に行けばいいじゃん!


ボケ:でもさ、本当の自然の中でペンギンに会いたいんだよ。


ツッコミ:だったら、なぜ北海道をスルーするんだ!?


ボケ:だってさ、北海道にペンギンいるかな?


ツッコミ:それは、そうだけど、まずは動物園から始めようじゃないか!?

注意: マンザイは一部地域や文化によっては理解しづらいかもしれません。また、これはあくまで例え話で、実際のユーモラスな対話はさまざまな要素や状況によります。これを元にして自分自身のユーモラスな対話を作ってみてください。


ただ、さすがのGPT-4と言えどもさっぱり面白くありません。彼の知識量を持ってしても、笑いを作るのは苦手なようです。

ですが、「今から私と二人で漫才をしましょう」というような指示して、チャット形式で会話をすると、それなりに面白い返事をしてくれます。

やはり会話というもの成立させるには、他者の存在が不可欠なのでしょう。


ということで、今回はふたつのChatGPTを繋げて、ChatGPT同士で延々としゃべらせてみました。


(注意)じゃあこの記事の動画の会話内容もすごく面白のかと言うとそんなこともないです


まだ上記の動画をご覧になっていな方のためにあらかじめネタバレしておきますが、この会話は特にすごく面白いという内容ではありません。

作っていた時に気づいたのですが、めちゃくちゃシュールな会話を作るのはいとも簡単です。

とにかくぶっ飛んだことを喋って欲しいという指示を出せば、脈絡の無い支離滅裂な会話を繰り広げてくれます。


それはそれで面白いのですが、これは技術記事です。

そのため、出来る限り話の文脈が自然になるような会話、つまり「雑談」を生成させることを目標としました。

今回やったこと


やっていることは、前回とあまり変わりません。


ChatGPTが出力した文章をGoogle Text-To-Speech AIに読み上げてもらいます。

その音声ファイルを再生し、3Dキャラをリップシンクさせています。


先程の漫才の例のように一度にすべての会話を書き出させるのではなく、直前の相手の発言を受けて、次のChatGPTが新たな一言を発しています。

それを交互に繰り返すと、上記の動画のような会話になります。


話を分かりやすくするためにタイトルには「ふたつのChatGPT」と書きましたが、厳密に言うと、ChatGPTのアカウントを本当に2つ使用している訳ではありません。

どちらの会話も同じAPIに出力させています。

ですが、ChatGPTのAPIは今までの会話を覚えるような仕様になっていません。

そのため、脈絡のある会話をするためには、これまでの会話履歴をすべて毎回送る必要があります。

具体的には、ユーザー側の発言履歴をuser、ChatGPT側の発言履歴をassistantとして、交互にリストに突っ込んでリクエストデータに含めます。

この仕様を逆手に取り、毎回のリクエスト毎にuserとassistantを入れ替て送れば、あたかも二人の人間が会話をしているような文章が永遠に生成され続けることになります。


ちょっとした仕掛け


また、今回は冒頭部分の会話のきっかけを与えるために、少しを仕掛けを施しました。

先程書いたuserとassistantの履歴は、必ずしも本当のChatGPTとの会話の履歴である必要はありません。

毎回以前の会話内容を忘れるという仕様上、偽の会話履歴を仕込んでも、それが本当の会話履歴だと思い込んで次の一言を発してくれます。

つまり記憶の捏造です。

この動画では冒頭の下記の会話だけ、先に仕込んだ偽の会話履歴です。


「最近うちのオカンが大好きな朝食の名前が思い出せなくて悩んどるんや。」

「じゃあ一緒に考えようか。どんな特徴の食べ物か言ってみてくれへん?」


以降は、ChatGPTが成り行き任せで、無限の会話を続けています。

冒頭部分だけ偽の会話履歴を仕込んでおくことは、それ以降の文章の品質を安定させる効果もあるようです。

いきなりChatGPTに文章を生成させると、関西弁で喋ってという事前の要望を無視したり、カギカッコやト書きなどの、不要なものを生成しがちで、以降の会話もその体裁に従うことになります。

一方、偽の会話履歴は例文としての働きもしており、以降も同じような口調と体裁で発言をしてくれます。


ChatGPTを使用したUnity開発に参加できます!!


Vitalify Asiaでは、Unityによる先進的な技術を使用したアプリを日々開発しています。

ゲーム開発、AR/VRアプリ開発、2Dイラスト制作、3Dモデリングを得意としています。

上記以外にも幅広い分野でのアプリケーション開発が可能ですので、お気軽にお問い合わせください。