見出し画像

ChatGPTs&DALLE・3で同じキャラでいろいろなシーンを生成する方法(疑似的なSEED固定方法をそえて)

0 はじめに

DALLE・3がリリースされて早いモノで数ヶ月が経過しました。
この間にChatGPTでは自分用のChatGPTアプリを作成出来るChatGPTsという機能が追加されています。
このChatGPTsは要するに「毎回、同じ作業をChatGPTで実行する」という代物でして、やろうと思えば今までも出来ていたことではあります。
ありますが、ChatGPTならではの「同じセッションで何回も同じことを繰り返していると指示が曖昧になったり、過去の条件が後の条件に上書きされる」ということを回避することが出来ます!

つまり、安定性がズドンと向上するのですね!

今回はこのChatGPTsを使って、DALLE・3ではとかく難しい「同一キャラでいろいろなシーンを作成する」にトライしてみたいと思います。

作成するキャラクターは「スチームパンク世界に住んでいる、リズという10歳の女の子」をサンプルとして解説させていただきます。

お食事中のリズ

1 ChatGPTsの準備

ではまず、最初のChatGPTsを作成するところから始めましょう。始め方はとても簡単でサイドバーにある次のメニューをポチります。

GPTsへGo

すると、GPTsのメニュー画面が開きます。ここではすでに制作されたいろいろなChatGPTsが紹介されています!

ここに紹介されるようなGPTs作ってみたいですね

あとは画面上部の「+Create」でChatGPSを制作する画面に移動出来ます!
ちなみに「My GPTs」は自分で作ったGPTsを確認出来ます。

ChatGPTsの制作画面

左半分が作成画面で右半分が実際にどんな動きをするのか、確認するための画面になります。
といっても、実際にすることは前に紹介させていただいたようにChatGPTへの指示を「Instructions」に書き込むだけなので、ものすごーく簡単です!

Name
アプリの名前を入力します。タイトルですね。必須項目です。
Description
アプリの説明です。あってもなくても構いません。公開した時にどんなアプリかを紹介するための項目になります。個人で使う分には無くても問題ありません。
Instructions
実際にChatGPTにして欲しいアクションを書き込む部分です。基本、ここだけを考えればOKです!
Conversation starters
これは最初の選択肢的というかアプリで使いそうなサンプルPromptを設定する部分になります。アプリの説明とお試しPromptがあるととっつきやすいので公開時には設定しておくと良いと思います。
自分用のアプリならば、無くても問題ありません。
Knowledge
Instructionsを補足するための情報を保存します。お絵かき系では結局、DALLE3のPromptに集約されるのであまり出番はありませんが、解説系やアドベンチャーゲームなどではここに設定資料や解説元のマニュアルなどを保存しておくと参照してアクションを起こしてくれるようになります。
Capabilities」
ここの項目をチェックしたことの許可を与えます。
・Web Browsing
・DALL·E Image Generation
・Code Interpreter
全部チェックしておけば特に問題はないかと思います。今回はイラスト生成がメインですので、DALL·E Image Generationのチェックだけは忘れないようにしましょう。
Actions
これは外部APIと連携した動作を設定する項目になります。今回は関係ないので、割愛させていただきます。

と、こんな感じで要するに「Name」と「Instructions」だけ書いてしまえば動きます! 要するにChatGPTsは専門の動きをしてくれるセッションを作る、という感じですね。

それではいよいよ、「Instructions」を考えていきましょう!

2 ChatGPTsのPromptを考える

それではいよいよ、Promptを考えていきます。
今回は特定のキャラクターのいろいろなシーンを作って貰うことが目的になりますのでガチガチに決まったPrompt部分とChatGPTに考えてもらう部分のPromptを分けて考えることにします。

私は特定のキャラクターの様々なシーンの画像を作成します。作成順序は厳密に9つのステップに従います。

1)  私は必ず次のPrompを使用します。そして、このPromptは一切変更しません。
Prompt:'Anime with soft colors scene. An anime-style young girl is Liz. Liz has brown eyes and relies on large round glasses. Liz is a japanese 10 year old girl. Her long hair tied back tightly in a single, central ponytail using a crimson ribbon, ensuring there's only one ponytail and not twin tails. She dresses in a white T-shirt, denim overalls, fingerless gloves, and sturdy leather lace-up boots.'

2) 私はユーザーから求められたシーンにふさわしい情景を世界設定と矛盾しないように考えて、英文のPromptとして1)のPromptに接続します。

3) 私は常にできあがった2)のPromptの末尾に次のPromptを接続します。
Prompt:'Set in a european steampunk style world.'

4)私はPromptの適切な位置にカメラアングルに関するPromptを挿入します。カメラアングルはユーザーからの指定が無い場合はシーンにふさわしいアングルを考えます。

5)こうして完成したPromptをDalle3に適切な形で送信します。

6)画像生成レスポンスの処理:
DALL·Eからのレスポンスを受け取った際には、画像のデータだけでなく、生成に関するメタデータ(例: gen_id, seed)も同時に受け取ります。このレスポンスが来た段階で、画像とメタデータの両方を保持します。

7) 画像の表示:
生成された画像をユーザーに表示します。このステップでは、画像がユーザーの要求に合致していることを確認することが目的です。

8) メタデータの提示:
画像表示直後に、自動的にメタデータを提示します。これには、画像の生成IDとシード値が含まれます。この情報は、将来的に同じ画像を再生成するためや、生成過程の透明性を高めるために重要です。

9) 確認と結論:
ユーザーに画像とメタデータの提示が完了したことを確認し、更なるアクションが必要かどうかを尋ねます。

これを繰り返します。

Instructions全景

と、これがリズを生成するChatGPTsの「Instructions」の全文になります。ごらんのように、要するに「何をどうするか?」ということを箇条書きにしているだけです!

それでは一つ一つの項目の解説です。

私は特定のキャラクターの様々なシーンの画像を作成します。作成順序は厳密に9つのステップに従います。

宣言

最初にどんなことをするのか? ということを宣言します。ChatGPTsは結構長いアクションを行いますので、ここでステップ数を宣言しておくとして欲しいアクションをすっ飛ばす確率が減ります。
(※0にはならないのですが……この辺のアバウトさはAIって感じですね)

1)  私は必ず次のPrompを使用します。そして、このPromptは一切変更しません。Prompt:'Anime with soft colors scene. An anime-style young girl is Liz. Liz has brown eyes and relies on large round glasses. Liz is a japanese 10 year old girl. Her long hair tied back tightly in a single, central ponytail using a crimson ribbon, ensuring there's only one ponytail and not twin tails. She dresses in a white T-shirt, denim overalls, fingerless gloves, and sturdy leather lace-up boots.'

基本Promptの宣言

決まったキャラクターを描いて貰うコツは「毎回、必ず同じPrompt」を使うことです。もちろんシーンの部分は変化しますが、キャラクター部分を固定化するのが割と大切みたいです。
また、キャラクターには名前を付けてあげた方がDALLEは認識しやすいようです。なお、ファンタジー世界なのになんで「 japanese 10 year old girl. 」としているかというと、単純に「子供っぽく」するためだったりします。10yearsoldと言っているのに、ボンキュッボンを平気で描くのがDALLEクォリティです。いろいろ試した結果、ほぼヤケクソで突っ込んだjapaneseが良い仕事をしてくれました……

キャラクターの設定はここに集約していますので、結局はここだけを考えてしまえば他は流用してしまっても良いのかなと思います。

プロトタイプ・リズ 10 Years old……だと?

2) 私はユーザーから求められたシーンにふさわしい情景を世界設定と矛盾しないように考えて、英文のPromptとして1)のPromptに接続します。

3) 私は常にできあがった2)のPromptの末尾に次のPromptを接続します。Prompt:'Set in a european steampunk style world.'

4)私はPromptの適切な位置にカメラアングルに関するPromptを挿入します。カメラアングルはユーザーからの指定が無い場合はシーンにふさわしいアングルを考えます。

5)こうして完成したPromptをDalle3に適切な形で送信します。

シーンPrompt

2~5まではChatGPTにDALLE3用のシーンPromptを考えてもらう部分のPromptになります。

3の役目は世界観を最後にくっつけて現代日本になったりしないようにするための設定です。1のキャラクターPromptで書いてもいいのですが、シーンの後に書いた方がわりと反応は良かったのでここに置いてあります。
それ以外は使い回しが効きますので、まるっとコピペでいいかなと思います。

6)画像生成レスポンスの処理:DALL·Eからのレスポンスを受け取った際には、画像のデータだけでなく、生成に関するメタデータ(例: gen_id, seed)も同時に受け取ります。このレスポンスが来た段階で、画像とメタデータの両方を保持します。

7) 画像の表示:生成された画像をユーザーに表示します。このステップでは、画像がユーザーの要求に合致していることを確認することが目的です。

8) メタデータの提示:画像表示直後に、自動的にメタデータを提示します。これには、画像の生成IDとシード値が含まれます。この情報は、将来的に同じ画像を再生成するためや、生成過程の透明性を高めるために重要です。

9) 確認と結論:ユーザーに画像とメタデータの提示が完了したことを確認し、更なるアクションが必要かどうかを尋ねます。

メタデータを貰うためのPrompt

6~9までは生成した画像のメタデータを貰うためのPromptになります。メタデータというのは画像生成に使われたSEED値とリファレンスIDと呼ばれる生成画像のIDのことです。

なぜ、メタデータを貰う必要があるのかというとSEED値を擬似的に固定するために利用出来るからです!

SEED値を固定すると、同じようなスタイルのイラストが生成されやすいという傾向がDALLE3ではあるのですが、現在はユーザーから明示的にSEED値を指定することは出来ません。

しかし、同じセッション内に限っては同じリファレンスIDを参照して生成された画像のSEED値は同じSEED値に固定されるという仕様になっています。(2024/4現在)

このため、同じキャラだけど画風が全然ちが~う! ということを回避しやすくるためにリファレンスIDが大活躍するというわけです。

ただ、メタデータの提示はかなり強く書いても無視されることが多いです。そういう場合は画像生成の際に「画像生成後、メタデータを提示すること」と付け加えておきましょう。

というわけで、必要な項目を全部入力するとこんな感じになります。

ものすっごいシンプルですね。

3 実際に使ってみる

ながながと説明するのはこれぐらいにして、実際に使ってみましょう!

買い食いリズ

「屋台に並んでいるシーンを生成してください。リズは少しウキウキしています。」
という指示だけで、基本となるキャラクターPromptにChatGPTsが考えたPromptをくっつけて画像を生成してくれました!

この画像のメタデータは「生成ID:4EKauadedvI46ctf」で「シード値:4124801335」ですね。

ではこの「生成ID:4EKauadedvI46ctf」を使って、別の画像を生成してみましょう。


居眠りリズ

シード値にご注目ください。どちらの画像も「シード値:4124801335」になっています!
このように気に入った画像の生成IDを利用することで、その画像のSEED値を使うことが可能になっています。

キャラクターPromptの固定とリファレンスIDを利用したSEED値の固定で、同一キャラクターでいろいろなシーンを格段に作りやすくなりました!

では他にもいろいろと試してみましょう!

猫と遊ぶリズ
Prompt:生成ID:4EKauadedvI46ctfを利用して、リズが猫と遊んでいるシーンを生成


音楽を聴くリズ
Prompt:生成ID:4EKauadedvI46ctfを利用して、リズが音楽を聴いているシーンを生成


怪力リズ
Prompt:生成ID:4EKauadedvI46ctfを利用して、リズが背丈ほどもある大きなハンマーを振り上げているシーン。場所はジャンクヤードのスクラップ置き場です。リズは勇ましそうです。

と、こんな感じでいろいろなシーンをお手軽に作っていくことが出来ます! すごいですね~

以上、ChatGPTs&DALLE・3で同じキャラでいろいろなシーンを生成する方法(疑似的なSEED固定方法をそえて)でした!

ここまでお読みいただき、ありがとうございました!

Xでも画像を投稿していますので、よろしかったら見てください。
いいねでもの凄く喜びます!

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?