Taikiの創成日記のテーマ
#AIツール活用

NanoBananaProプロンプトをJSONからYAMLに変えたら再現性が向上した

NanoBananaProプロンプトをJSONからYAMLに変えたら再現性が向上したのサムネイル

NanoBananaProで画像生成をしていると、「同じキャラクターを作りたいのに、毎回微妙に顔や雰囲気が変わってしまう」という悩みはありませんか?

「プロンプト(指示文)の内容は変えていないのに、なぜ?」

実は先日、ある実験をしていて、この悩みを解決する意外な「コツ」を見つけました。それは、プロンプトの内容そのものではなく「書き方(フォーマット)」にありました。

今回は、画像生成AIにおける「JSON形式」と「YAML形式」の違いと、なぜYAMLの方がキャラクター固定やニュアンスの再現に向いているのかについてお話します。

全く同じ設定なのに、書き方で結果が変わる?

今回、架空のキャラクター「アイコ」を設定し、AIに画像を生成させる実験を行いました。

設定内容:

  • 名前: アイコ
  • 外見: 黒髪ロング、茶色の目、オフィスカジュアル
  • シーン: モダンなオフィスでPCに向かっている

この全く同じ内容を、以下の2つの形式でAIに指示しました。

  1. JSON形式(システム開発などでよく使われる、括弧や引用符が多い形式)
  2. YAML形式(箇条書きに近く、すっきりした形式)

すると、「YAML形式の方が、指示通りの要素を忠実に拾い、画像の再現性が高い」という結果にななりました。

なぜYAML形式の方が「再現性」が高いのか?

JSONもYAMLも、書いてあるデータの中身は同じです。それなのに、なぜAIの出力結果に差が出るのでしょうか?Google geminiに聞いてみました。geminiとの対話で分かった理由は、主に以下の3点です。

1. 「ノイズ」が圧倒的に少ない
AIはテキストを読み込む際、記号も含めて処理します。

  • JSONの場合: { "hair": "long", "eyes": "brown" } のように、波括弧{}やダブルクォーテーション"、カンマ,などの記号が大量に含まれます。これらがAIにとって一種の「ノイズ」となり、肝心のキーワード(黒髪、茶色など)の印象を薄めてしまうことがあります。
  • YAMLの場合: hair: long のように記号が最小限です。そのため、AIが「意味のある単語」にダイレクトに注目でき、指示がストレートに伝わります。

2. AIが「文脈」を理解しやすい
YAMLの構造(インデントを使った箇条書き)は、人間がメモを取るスタイルに近く、自然言語(話し言葉)に近い構造をしています。
そのため、AIは「髪=ロング」「服=ブラウス」といった要素同士の結びつきを迷わず理解してくれます。

3. コメントでメモを残せる(管理が楽)
実はこれが地味ですが最大のメリットかもしれません。 JSONは標準仕様としてコメント(注釈)を書くことができませんが、YAMLは「#」を使って自由にコメントを記述できます。

  • # 昨日の生成で良かった設定
  • # ストレートで艶がある質感にしたい

このように、自分用のメモや、AIへの補足的なニュアンスを自由に書き足せるため、試行錯誤の履歴を残しやすく、プロンプトの管理が非常に楽になります。

4. トークン(文字数)の節約
JSONは記述が長くなりがちですが、YAMLは短く済みます。プロンプトが短いほど、AIは指示内容を忘れにくいため、結果として一貫性のある画像が生成されやすくなります。

ここで一つ、重要な補足があります。
「じゃあJSONはダメなのか?」というと、決してそうではありません。
「設計データとしての正しさ」という観点ではJSONに軍配が上がる場合もあります。
ここが使い分けのポイントです。

プロンプトを「設計データ」として扱うならJSON

もし、将来的にAIを使ってアプリ開発をしたり、プログラムで大量の画像を自動生成させたりしたい場合、JSON形式の方が適しています。

  • 理由: JSONはプログラムとの相性が抜群で、データの構造が厳格だからです。「システム上で、絶対にエラーなくデータを管理・保存したい」という場合は、JSONが世界標準です。

画像の「クオリティ」を追求するならYAML

しかし、今回のように「チャット画面でAIと対話し、理想の一枚を作りたい」「人間の感覚に近い絵を出してほしい」というクリエイティブな目的であれば、YAML形式がおすすめです。

  • 理由: 余計な記号が少ない分、AIが「言葉のニュアンス」を拾いやすく、結果として私たちの頭の中にあるイメージに近い画像が出力されやすくなるからです。

結論:用途に合わせて使い分けよう

今回の実験から得られた結論をまとめます。

目的おすすめの形式理由
最高の一枚を作りたいYAML形式ノイズが少なく、AIにイメージが伝わりやすい
システムで自動化したいJSON形式構造が厳格で、プログラム処理しやすい

もしあなたが、「画像生成AIでキャラクターを一貫させたい」「指定した要素を確実に反映させたい」と考えているなら、まずはプロンプトをYAML形式(またはシンプルな箇条書き)に変えてみてはいかがでしょうか?

今回実験に使用したプロンプト例(YAML):

# キャラクター設定
character:
  name: "アイコ"
  appearance:
    hair: "黒髪のロングヘア" # ストレートで艶がある
    eyes: "茶色"
    clothing: "オフィスカジュアル, 白いブラウス"

# シーン指定
scene:
  location: "モダンなオフィス"
  action: |
    アイコがデスクでパソコンに向かっている。
    真剣な表情でディスプレイを見つめている。
    背景には観葉植物が見える。
  lighting: "自然光, 明るい"
今回実験に使用したプロンプト例(JSON):
{
  "character": {
    "name": "アイコ",
    "appearance": {
      "hair": "黒髪のロングヘア",
      "eyes": "茶色",
      "clothing": "オフィスカジュアル, 白いブラウス"
    }
  },
  "scene": {
    "location": "モダンなオフィス",
    "action": "アイコがデスクでパソコンに向かっている。\n真剣な表情でディスプレイを見つめている。\n背景には観葉植物が見える。",
    "lighting": "自然光, 明るい"
  }
}
Top