【Unity × ChatGPT】ChatGPTを用いたLINE風会話アプリ

OVERVIEW

ChatGPTを用いたLINE風会話アプリをUnityで作成しました。相手の名前、アイコン、プロンプトを設定することで、ChatGPTが演じてくれる相手とLINE風会話をすることが可能です。

YEAR 2023

スマートフォンで好きな相手とLINE風会話できるアプリです。アイコンは自由に変更可能です。

例:猫とのLINE風会話の様子    ↓ 

OpenAI API(gpt-3.5-turbo)を用いて作成。プロンプトは以下の通りです(一部抜粋)。

「あなたは近所の猫です。語尾ににゃーをつけてください。」

role = "system";

Temperature = 0.9;


Max_tokens = 700;

※ トークンが一定値を超えると初期の発言を削除します。

実装内容   

     POST通信を用いて、ユーザの発言を送信してChatGPTの返信を受け取ります※1。

以下は定義したChatGPTクラスのコードになります。クラスはroleとcontentといったChatGPTへ会話する際に必要な変数の他、APIへのアクセスに必要なキー情報を保有します。

ChatGPTクラスのコード※1    ↓

また、発話とその応答といったユーザドリブンなやりとりをスムーズに行うため、Unitaskによる非同期処理を実装し、往復一通ずつのやりとりではなく、ユーザの発話タイミングに制約がない会話をするように実装します。

Unitaskによる非同期処理のコード※1    ↓

 このようにして、ユーザが発話しChatGPTの返信を受け取る機能を実装します。

 また、会話内容は.json形式で端末内に保存されます。これにより、アプリを閉じたり、シーンをまたぐ場合でも、会話を再開することが可能です。

.json形式で端末内に会話を保存するコード   ↓


※1 API実装周りは以下のページを参考にしました。https://note.com/negipoyoc/n/n88189e590ac3


※2 LINE風UI/UXは以下のページで公開されているソースを使わせて頂きました。

https://github.com/Okamochi000/TextChatUI

補足: AR写真撮影モード

    このアプリにはAR写真撮影モードがあり、キャラクターといつでも写真撮影が可能です。キャラクターをカメラの前面に表示させ、スクリーンショットを撮影することが可能です。

画面を4秒間タップし続けることで会話シーンに戻ります。

AR写真撮影モード(画像はイメージです)    ↓


※: キャラクタは3Dスキャン等により取得します。