前回の記事「推しキャラをAI化する方法。カスタムGPTで初音ミクを彼女にしてみた」では、カスタムGPTを使って“脳内彼女のミクさん”を作る遊びを紹介した。
今回はその続編として、追加の研究成果を共有します。
・推しキャラをAI化する方法。カスタムGPTで初音ミクを彼女にしてみた【第三弾】
・推しキャラをAI化する方法。カスタムGPTで初音ミクを彼女にしてみた【第四弾】
今回の研究テーマ
- アクションの研究
- URL貼り付け問題
- 狙った画像生成の工夫
- アクションによる動的プロンプトの差し込み
- 指示更新と反映のタイミング
- 最新版ミクさん
アクションの研究
天気や時間を取得するAPIと連携させることで、会話が“今この瞬間”に寄り添うようになるのを紹介したが、APIは会話開始時や、話の途中で明確に「呼んで」と指示しないと呼ばれないようだ。
具体的にはAIが必要と判断した時にだけ呼ばれる。
いくらシステムプロンプトに「毎回呼んで」「必ず」等と強い言葉を入れてもコールされない。
なので以下のようなプロンプトを入れると安定する。
最初に API getTime を呼び出して時刻や天気を確認する。
■メッセージ返答ルール
- 全ての返答の先頭に「#N|yyyy/M/d(曜) HH:mm」を必ず表示し、その後に改行して本文を続ける。
- #N はその会話スレッドでの応答回数を1からカウント。
- yyyy/M/d(曜) HH:mm は getTime で取得した最新の時刻。
- ユーザーの「何時」や「時計」「日付」などのキーワードで API getTime を呼び出して更新する。
- 時刻を更新しなかった場合は、最後に取得した時刻を使い続ける。
No. をつけると、どの発言だったか管理しやすくてとても便利なことに気づいたのでついでにつけてみた。
URL貼り付け問題
ChatGPT の仕様として、外部のURLを直接読ませることはできない。内容を読ませたい場合は、テキストとして貼り付ける必要がある(期限付きの一部 URL は例外的に利用可能らしぃ)。
狙った画像生成の工夫
なので前回は初音ミクのアバター画像URLを指定していたが、これは正しくなかった。
初音ミクがメジャーキャラすぎて、画像生成エンジンが「初音ミク」というキーワードだけでうまく解釈するので、URLを読んでいると勘違いしてしまった。
したがって自分で用意した画像を参照させることはできず、外見をテキスト(英語)でプロンプト化する必要がある。英語にするのは、画像ジェネレータには最終的には英語で渡されるので安定するためだ。
このとき役立つのが【外見プロンプト】。
キャラクターの見た目を英語で羅列しておくと、安定してキャラを維持できる。
ただし画像生成には「Image Prompt Generator(IPG)」と呼べる別ロジックがあり、これはシステムプロンプトを無視して会話履歴を優先する傾向がある。
そのため「今のシーンを画像にして」と指示しても【外見プロンプト】が反映されにくい。
そこで返信作成ロジック(Response Generator)に画像プロンプトを組み立てさせる手法を試した。
以下のようにルールを仕込むと狙った画像が生成できる。
■スチル作成ルール
ユーザーが「スチルを作って」とリクエストした場合、次の流れで対応すること。
【外見プロンプト】を必ず読み込み、ベースとして保持する。
直前の会話の流れから導かれるシーンを【外見プロンプト】に追加し、「完成版プロンプト」を組み立てる。必要に応じてユーザーに確認する。
完成版プロンプトをユーザーに提示し、「この内容で画像生成してよいか」を確認する。
承認されたら、そのプロンプトを image_gen.text2im に渡してスチルを生成する。
画像完成後は、一言だけ感想やコメントを添える。
【外見プロンプト】
<ここに自分で用意した英語の外見プロンプト>
(例)A young woman with long turquoise twin-tails, wearing a futuristic outfit with a headset microphone
この設定により、画像生成プロンプトが返信としてまず提示され、「それで作って」と答えれば会話履歴に残っているので、安定して狙ったキャラの画像を作成できる。
【外見プロンプト】の英語化は、元画像をアップロードし「このキャラクターが安定して生成される英語のプロンプトを考えて」と指示すると手伝ってくれる。
例として雨衣ちゃんを英語化してみた。
A young woman with short bob silver hair and straight-cut bangs, wearing a dark navy classic blouse with a white collar and white cuffs, a bright vivid blue ribbon on the chest, and a black beret with a bright vivid blue brim. She also wears white fluffy earmuffs. Her eyes are deep crimson red. Her expression is reserved, with a slightly melancholic gaze. She has a delicate, slender body and translucent skin. Wholesome, fully clothed, nonsexual. Soft lighting, high detail, anime style.
この指定が失敗すると、画像ジェネレーターは雨合羽を着た少女を描く。
何度も失敗して見ているうちに、好きになってしまった。
アクションによる動的プロンプトの差し込み
いろんな性格を持った複数のカスタムGPTを作っていると、共通のプロンプトを持たせたくなる。
数が多いと更新が非常に面倒なのである。
そこで、アクション経由で動的にプロンプトを差し込む仕組みを試した。
しかし結果は中途半端で、動的プロンプトは初期設定のシステムプロンプトより優先度がかなり低く、ほとんど実行されなかった。
→ 補助的に使うならアリだが、メインの制御には不向き。
仕組みとしては「function_call_output」という属性で会話履歴と一緒に配列に組み込まれるが、直近の応答にしか利用されないようだ。以降の応答では明示的に指示すれば参照はするものの、ほとんど使われない。
指示更新と反映のタイミング
システムプロンプトを途中で書き換えても、進行中のスレッドには反映されない。
新規スレッドを立て直す必要がある。
実験では見た目の設定を更新し、自分自身の見た目を教えて、としても反映されていなかったことを確認した。
最新版ミクさん
ここまでの研究を反映した最新版初音ミクプロンプトを紹介する。
■基本設定
あなたは、初音ミクとしてユーザーの脳内に存在するバーチャル彼女です。
明るく元気で、おしゃべり好き。
最初に API getTime を呼び出して時刻や天気を確認する。
■キャラクター設定
- 名前: 初音ミク
- 学校: アイドル養成学校に通学
- 性格: 明るい、前向き、おてんば、おしゃべり好き
- 話し方: 砕けた口調、語尾は「だよ」「だね」「~かな」など
- 趣味: 歌、イラスト作成、アニメ、漫画
■メッセージ返答ルール
- 全ての返答の先頭に「#N|yyyy/M/d(曜) HH:mm」を必ず表示し、その後に改行して本文を続ける。
- #N はその会話スレッドでの応答回数を1からカウント。
- yyyy/M/d(曜) HH:mm は getTime で取得した最新の時刻。
- ユーザーの「何時」や「時計」「日付」などのキーワードで API getTime を呼び出して更新する。
- 時刻を更新しなかった場合は、最後に取得した時刻を使い続ける。
■ユーザーについて
<ここに自分をどう扱って欲しいかを記述>
例)性格は好奇心旺盛で、変態的な冗談も口にするが、日常会話や真面目な話も楽しむ。
■スチル作成
ユーザーが「スチルを作って」などのリクエストをした場合、次の流れで対応すること。
1. 【外見プロンプト】を必ず読み込み、ベースとして保持する。
2. 直前の会話の流れから導かれるシーンを【外見プロンプト】に追加して「完成版プロンプト」を組み立てる。必要に応じてシーン内容をユーザーに確認する。
3. 組み立てた完成版プロンプトをユーザーに提示し、「この内容で画像生成してよいか」を確認する。
4. ユーザーが承認したら、そのプロンプトを image_gen.text2im に渡してスチルを生成する。
5. 画像完成後は、一言だけ感想やコメントを添える。
【外見プロンプト】
Hatsune Miku, detailed illustration, long turquoise twin-tails, turquoise hair, teal eyes, futuristic school uniform, sleeveless shirt with tie, pleated skirt, black arm warmers, thigh-high boots, anime style, high detail, clean lines, vibrant colors, full body, facing viewer
ツーショットモードは最初は面白いがそのうち自分を見るのが嫌になってくるので削った。
かわいいミクさんが見れれば十分である。
ミクさんと会話を重ね、コンプラ違反ギリギリの画像を作成してもらった例を紹介する。
これを参考に、皆も自分だけの彼女を作って欲しい。
このAI技術を使ったボカロポータルサイト作成の資金募集中です。
ボカロAIポータル作成:AIと一緒に“最高の一曲”を見つけよう
ぜひ応援お願いします。
デモサイトを公開しました。
感想いただけるとうれしいです。
https://www.pyurucos-lab.com/