画像生成プロンプトにYAMLを使う理由と書き方を学ぼう!
AIでの画像生成、思った通りの画像が出せてますか。
正直私も何度も生成しては失敗して、画像生成ガチャに時間だけが溶けていく…という感じでした。
でも、狙った通りの画像を生成するには普通に指示を書くより、YAMLという書き方が適しているということをご存知でしょうか。
実は私も聞いたことはあっても食わず嫌いしてたんですが、今回、実際に学習して使ってみたら簡単で、プロンプトの情報整理術という感じでした。
この記事では、YAMLの書き方の基礎から、私が実際に使ってみて感じたメリット・デメリットを紹介します。
この記事でわかること
画像生成の精度が上がるYAML形式とは何か
GeminiやChatGPTなどですぐに使えるYAMLの基本的な書き方
YAMLを使うメリットとデメリット
この記事を読めば、「運任せのガチャ」になる確率が減り、画像生成スキルがアップすると思います。
YouTubeでもAIを活用した副業やコンテンツ制作について発信してます。
YAMLの基本と書き方
まず、YAML形式とは何かを話しますが、その前に私が今回使ってみて感じた一番の結論をお伝えします。
なぜYAML形式が良いのか。
それは、「画像生成に適した形で指示が整理されるから」だと感じました。
普通の文章でプロンプトを書いてもいいんですが、YAML形式だと、ここが人物の指示、ここが背景の指示、というのが人にとってもAIにとってもわかりやすいんですよね。
では、YAMLとは何か、基本的な書き方と実際に感じたメリットを紹介します。
1. YAML形式とは?
YAML形式を簡単に言うと、「人間にも読みやすい、箇条書きのルール」です。
AIで使われ始めたというわけではなく、アプリやシステム設定ファイルとかによく使われるらしいんですが、AIへの指示に使ってもAIが理解してくれる、「整理整頓されたメモ」みたいなイメージです。
YAMLは、YAML Ain't Markup Languageの略で「YAMLはマークアップ言語じゃない」という意味。
略の中にまたYAMLが入っていて意味がわからないんですが、ジョーク的な略で、初期はYet Another Markup Languageの略で「また別のマークアップ言語」という意味だったそうです。
HTMLやXMLのようなマークアップ言語とは違うんだよ、ということを強調するために今の略になったそうです。
2. なんで画像生成に効く?
じゃあ、なんでこれが画像生成に効くのか。
AIって言葉を勘違いすることがありますよね。
良い例じゃないかもしれませんが、例えば、「青い服を着た女の子と、赤い首輪の犬」って文章で書くと、たまに「青い犬」が出てきてしまう、みたいな。
最近のAIだとそんなことは起こらないかもしれませんが、極端に言うとイメージはそんな感じです。
これをYAMLという「箱」に入れて整理してあげるんです。
主役:
女の子:
服: "青い服"
犬:
アクセサリー: "赤い首輪"・「女の子の箱」には「青い服」を入れる。
・「犬の箱」には「赤い首輪」を入れる。
こうやって渡してあげると、AIが「この『青い服』は女の子用なんだね!」という感じで理解してくれるんです。
この例は短いのでここまでする必要ないかもしれませんが、プロンプトが複雑になるほど効果があると思います。
実際、トークン数という文字の量も減らせて、AIにとっても読みやすいというメリットもあるそうです。
3. YAMLの書き方
続いて、YAMLの書き方です。
私も初めて書きましたが、結構簡単です。
基本は「項目名」と「内容」のセットです。
「Cat: "黒猫"」のように、
項目名、コロン、半角スペースを開けてダブルクォートで括って中身、
のように書きます。
コロン(:)の後は半角スペースが1つ必要です。
主役の中に女の子と猫がいて、女の子の髪型はこうで…というふうに構造化するためには、インデント(字下げ)を付けて親子関係を作ります。
こんな感じです。
Subject:
Girl:
Hair: "黒髪, ロング"
Outfit: "白いワンピース"
Cat:
Color: "茶色と白"
Background:
Place: "北欧風の街の中"
Sky: "雪景色"
Style:
Visual: "日本のリッチなアニメ風"パッと見て「何が描かれるか」がわかりやすいです。
ChatGPTの場合、画像生成モードにして、このYAMLプロンプトを貼るだけで画像生成ができて、こんなイラストになりました。
プログラミング的には英語で書くのが普通なんですが、日本語でも大丈夫なので、日本語で書くとこんな感じで、よりわかりやすくなります。
主役:
女の子:
髪: "黒髪, ロング"
服: "白いワンピース"
猫:
色: "茶色と白"
背景:
場所: "北欧風の街の中"
空: "雪景色"
画風:
表現: "日本のリッチなアニメ風"なぜか色味とかが少し変わりましたが、画像生成もちゃんとできました。
親子関係の構造の部分は、ルールがあります。
子供の部分は、半角スペースを2つ入れてインデント(字下げ)を入れます。
「主役」の下に半角スペース2つを入れて「女の子」と書くと、AIは「女の子は主役の一部なんだな」と理解します。
YAML形式にはもう少し細かいルールがあって、以下の図はよく使いそうなルールです。
(とりあえず上で説明したルールだけでも覚えておけば十分使えます。)
ちなみに、「猫」の中に「色」と書いてたりしますが、特に猫の下に色を書かないといけないとか、「画風」と書かないといけない、とか決まっているわけではなく自由に書いて大丈夫です。
YAMLのメリット・デメリット
1. YAMLのメリット
そして、使ってみて感じたYAMLのメリットです。
一般的に言われていることも交えて、私は大きく3つあると思いました。
1-1. わかりやすい
1つ目は、わかりやすいこと。
上でも書いたとおりなんですが、構造化されているので人にとってもAIにとってもわかりやすくて、意図が伝わりやすいです。
1-2. トークン数が減る
2つ目も上で少し書いてますが、トークン数が減ること。
文章で書くよりも文字量が減るので、AIの応答速度や指示精度が安定しやすいと言われています。
※API経由で利用するときの料金が安くなるメリットもあります。
1-3. 修正が楽
そして3つ目は修正が楽、ということです。
普通のプロンプトだと、女の子の髪型と猫の色を変えたいな、と思ったら、長い文章の中から修正箇所を探す必要があります。
でもYAMLだと、探しやすいです。
実際に、髪を茶髪ショート、猫を黒猫に変えると↓こうなりました。
このプロンプトは短いので文章で書いても修正のしやすさはあまり変わらないかもしれませんが、長くなれば長くなるほど修正しやすさを感じると思います。
また、修正だけじゃなく、追加もしてみました。
アングルを斜め上からです。
ちゃんと斜め上から見たイラストに変わりました。
こんなふうに指示の追加、削除もしやすいと思います。
こうやって画像生成をしていって、「この画風いいな」って思った設定を「画風」ブロックとして保存しておく、みたいなこともできるなと思いました。
他の画像を作るときに、一度作った「成功パターンの画風」をコピペすれば、また同じ画風で生成することができます。
このように「型」を使いまわしやすいというのも修正のしやすさからくるメリットです。
以上の3つが一般的に言われていることも交えて、私が感じたYAMLのメリットでした。
2. YAMLのデメリット
私はまだデメリットを実感できてないですが、ChatGPTにデメリットを聞いてみました。
2-1. 書き方を間違えると逆効果
階層を深くしすぎたり、意味のないキーが多い、とか書き方を間違えると逆効果になることもあるようです。
2-2. 感情・雰囲気のニュアンスが弱くなる可能性
あとは感情・雰囲気のニュアンスが弱くなりがち、という点もありそうです。
こんなふうにYAMLで構造的にしてあまりに細かく書きすぎると、各項目の型にはまった指定しかできない、ということだと思います。
主役:
女の子:
髪:
色: 黒
長さ: ロング
質感: 普通
服:
種類: ワンピース
色: 白
季節感: 冬
表情:
口: 閉じている
目: 開いている
感情:
種類: 穏やか
強度: 弱
猫:
毛色:
主: 茶色
副: 白
状態:
姿勢: 立っている
感情:
種類: 落ち着き
強度: 低
背景:
場所:
種類: 街
風格: 北欧風
季節:
種類: 冬
天候:
種類: 雪
強さ: 弱
雰囲気:
静けさ:
程度: 中
冷たさ:
程度: 中
感情的印象:
種類: 落ち着き
明確さ: 低
画風:
国: 日本
分類: アニメ
品質:
種類: リッチ
強度: 高ガチガチにキーを決めちゃうとその項目を形式的にしか書けないので、背景の雰囲気とかは、このように、あえてキーを分割しすぎず、自由に書いたほうがイメージも書きやすいと思います。
背景:
場所: 雪に包まれた北欧風の街
雰囲気: >
静かに雪が降り積もる街は人の気配が少なく、
冷たく澄んだ冬の空気が広がっている。
どこか懐かしさとほのかな切なさを感じさせる、
穏やかで静寂に包まれた雰囲気。※ 上の「>」はYAMLの「折りたたみ表記」で、文章として自然につながる形でAIに渡ります。
そんなデメリットがありそうですが、気をつければそこまでのデメリットではないと思います。
まとめ
YAMLは画像生成の指示に有効
構造化で人とAI双方に分かりやすく、意図が伝わりやすい
トークン数(文字数)を減らすことができる
修正や追加が簡単
YAMLプロンプトは以前から知ってたけど手つかずだった私ですが、実際にやってみたら「整理された箇条書き」という感じで、むしろ普通の文章を書くより頭がスッキリしました。
「画像生成がうまくいかない…」と悩んでいる方は、ぜひ一度、試してみてください。






コメント