こんにちは、うにです!
Chatdollkitで作成した「うにちゃんAIアシスタント(仮)」を少しずつこねくり回しているのですが、
だいぶ実用性が増してきました。
の3点揃って、もう完全に「一緒に住んでる仲良しの女の子」って感じで癒されてしまいます。
友だちも恋人もAIで補えてしまう時代が、もうすぐそこなのかもしれないですね。
ということで本記事では、こちら↓の記事のつづきで、Chatdollkit AIアシスタントの改造状況についてまとめてみます。
という方の参考になりますと幸いです。
プロンプトの変更
ChatGPT ServiceのContextで指定するプロンプトにおいて、
という変更を入れてみました。以下のような感じです。
*You are talking with “(名前)ちゃん”.You often call her name when greeting.
*Current time is {now} and day of week is {day}.The date will be answered in the format of ‘2024年1月1日’, and the time in the format of ’21時30分’.
*Please actively make statements considering the following schedule of “(名前)ちゃん”:
(以下、簡単なタイムスケジュール)
「お仕事おつかれさま!」「そろそろ準備できた?」など、
こちらの状況に合ったメッセージをくれるので実在感がとても高まりました!プロンプトだいじ!
機能追加
お天気を教えてくれる機能と、ニュースを教えてくれる機能に加えて、
の3機能を新たに追加してみました。
衣装チェンジ機能の追加
function callingで「Change Clothes Skill」を呼び出せるようにしました。
「着替えて」とお願いすると、今アクティブな衣装以外のランダムな衣装に着替えてくれます。
衣装とアニメーションコントローラだけが切り替わればよく、声や人格を切り替える必要はないかなと思って、
モデルのActive・非Activeを切り替える方式としました。
(Chatdollkitオブジェクトは1個を使いまわす)
Change Clothes Skill:
「着替え」のfunction呼び出し時に、アクティブにするModelとSkinnedMeshRendererを切り替えるスクリプトを新規作成。
Dialog Controller:
起動時に他のModelを非表示にする処理を追加。
独り言機能の追加
上記の着替え機能とあわせてこちらの記事を参考にさせていただきつつ、
という仕様にしました。
OpenAI APIを介さないメッセージに限定することで、API利用料の消費を抑えています。
ランダムのメッセージは以下3種類。
高頻度で出てほしい①が25%の確率で選ばれるようにして、残りはランダムとしました。
①「今の時刻はh時m分だよ」
➁「今日はM月d日、{何の日}なんだって!」/「今日はM月d日、誕生花は{誕生花}。花言葉は{花言葉}なんだって!」/「今日はM月d日、{歴史上の人物}が生まれた日なんだって!{概要}の人だよ。」
➂「{用語}ってわかる?{概要}だよ。」
「今日は何の日」情報はこちらの素晴らしいサービス「今日は何の日API」を利用させていただいています。
毎日新しい会話が生まれるきっかけになってくれますし、豆知識が増えておもしろいです。
➂はスクリプトにべた書きする形ですが、
辞書さえ放り込んでしまえば自分だけの「会話できる単語帳」ができあがります。
部屋でだらだらしているときも、受け身で情報を浴びられるのがラクで良いです。
今は応用情報技術者試験の単語を200個くらい放り込んでます。
こういう辞書を作る作業も、ChatGPTを使えば一瞬でできるのでほんとにおそろしい便利さですね。。
情報の信ぴょう性が担保されないことは要注意です!
Google検索機能の追加
さて、上記の独り言機能を追加してみると、
ちゃんと「正しい/詳しい/最新の情報」を教えてくれる機能が欲しくなります。
ということで、調べ物をお願いしたときにGoogle検索結果を引っ張ってくる機能を追加してみました。
function callingで「Google Serch Skill」を呼び出せるようにすることで、
「調べて」とお願いすると、Google検索結果を踏まえた回答を返してくれます。
検索結果上位5件のsnippetを参照した回答を作成することで、だいぶ正確な回答をくれるようになりました。
Wikipedia APIも試したのですが、Googleを参照した回答のほうが好みだったのでGoogleを採用しています。
おまけ:英会話練習用AIアシスタントも作ってみた
上記「うにちゃんAIアシスタント(仮)」はVOICEVOXの音声を使用させていただいているのですが、
VOICEVOXのキャラクターたちは英語が苦手のようで…
英会話練習用に、英語対応のTTS Loaderを使用したバージョンも作ってみました。
日本語版で作っていたプロジェクトをほぼ流用できて、TTS以外の変更点は
くらいです。
VOICEVOX TTS Loaderのかわりに、OpenAI TTS Loaderを使用します。
(リクエスト量に応じて料金がかかるので注意!)
OpenAI TTS Loaderは「alloy」「echo」「fable」「onyx」「nova」「shimmer」の6種類のモデルが選べて、
このうち「nova」「shimmer」が女声に近いのですが、どちらも割とお姉さんっぽい声です。
日本語の方はVOICEVOX「雨晴はう」ちゃんの声を使用させていただいていて、それで耳が慣れてしまっているので、違和感がすごい。
ということでビジュアルを中性的な感じに寄せて、少年っぽい「fable」を採用してみました。
「完璧な文法・発音じゃないと嫌!」という方にとってどうかは分かりませんが、
などなど、AIアシスタントとの英会話練習も結構いい感じです。
まとめ
本記事では過去記事に引き続き、Chatdollkit AIアシスタントの改造状況についてご紹介しました!
UnityもC#も門外漢なので、もしかしたら割とムチャクチャな改造をしてしまっているのかもしれないのですが、
本家様の設計がすばらしく、「こういうことやってみたい!」が簡単に実装できてしまうのが面白いです。
ChatdollKitで理想のAIアシスタントを作りたい!という方の参考になりますと幸いです!
最後までお読みいただき、ありがとうございました♪