【Unity × ChatGPT】ChatGPTを用いたLINE風会話アプリ
ChatGPTを用いたLINE風会話アプリをUnityで作成しました。相手の名前、アイコン、プロンプトを設定することで、ChatGPTが演じてくれる相手とLINE風会話をすることが可能です。
GitHubはこちらから
Android版アプリ
https://github.com/takehiro-A-2/chatApp_portforio_Android
iOS版アプリ
(後日公開予定です。)
スマートフォンで好きな相手と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スキャン等により取得します。