マルチモーダル プロンプトを設計する

Gemini API を使用すると、マルチモーダル プロンプトを Gemini モデルに送信できます。サポートされているモダリティには、テキスト、画像、動画があります。

一般的なプロンプト設計のガイダンスについては、プロンプト設計戦略をご覧ください。

サポートされているモデル

次のモデルは、マルチモーダル プロンプト レスポンスをサポートしています。

  • Gemini 1.5 Flash
  • Gemini 1.5 Pro
  • Gemini 1.0 Pro Vision

マルチモーダル プロンプトは、次のベスト プラクティスに沿って改善できます。

  • プロンプト設計の基礎

    • 指示を具体的にする: 誤解を招かないように明確で簡潔な指示を記述します。
    • プロンプトに少数の例を追加する: 現実的な少数ショットの例を使用して、何を達成したいかを示します。
    • ステップバイステップで分類する: 複雑なタスクを管理可能なサブ目標に分割し、プロセスに沿ってモデルを導くことができます。
    • 出力形式を指定する: プロンプトで、必要とする形式(マークダウン、JSON、HTML など)で出力するよう指示します。
    • 単一画像のプロンプトではまず画像を配置する: Gemini は、画像とテキストの入力をどのような順序でも処理できますが、単一画像のプロンプトの場合は、対象の画像(または動画)をテキストのプロンプトよりも前に配置することでパフォーマンスが向上する可能性があります。ただし、画像が意味を持つようにテキストで高度にインターリーブする必要があるプロンプトの場合は、最も自然な順序を使用してください。
  • マルチモーダル プロンプトのトラブルシューティング

    • モデルが画像の関連部分から情報を抽出していない場合: 画像内のどの部分からプロンプトが情報を抽出する必要があるかについてのヒントをドロップします。
    • モデルの出力内容が過度に一般的である(画像 / 動画入力に十分対応していない)場合: プロンプトの開始時に、タスクを開始する前に、モデルに画像または動画について説明するよう依頼してみるか、画像の内容を参照するよう依頼してみてください。
    • 失敗した部分のトラブルシューティングを行うには: モデルに画像の説明を依頼するか、モデルに推論について説明するよう依頼して、モデルの初期理解度を評価します。
    • プロンプトによりハルシネーションが生じたコンテンツが生成された場合: 温度設定を下げるか、モデルに短い説明を求め、追加の詳細情報が推定されないようにしてみます。
    • サンプリング パラメータの調整: さまざまな温度設定と上位 k 個の選択を試して、モデルの創造性を調整します。

プロンプト設計の基礎

このセクションでは、前のセクションで説明したベスト プラクティスについてさらに詳しく説明します。

注: 次の Gemini のサンプルのモデル結果は、実行ごとに異なる可能性があります。

指示を具体的に記入する

プロンプトは、明確かつ詳細である場合に最も良い結果が出ます。特定の出力を想定している場合は、必要な出力を確実に得られるように、その要件をプロンプトに含めることをおすすめします。

プロンプトのインテントは、作成したユーザーからは明確であるように見えても、実際には仕様上あいまいになっている場合があります。モデルの動作をカスタマイズするには、プロンプトがどのように(誤って)解釈されるかを考慮し、与えた指示が具体的で明確であることを確認してください。誤った解釈の余地を最小限にする

下に示す空港の発着表示板の画像の場合、「この画像について説明する」ようにモデルにリクエストすると、漠然とした説明が生成される可能性があります。モデルによって画像から時刻と都市が抽出されることを必要とする場合は、そのリクエストをプロンプトに直接追加します。

プロンプト モデルのレスポンス

この画像を記述します。

この画像は、空港の到着と出発の案内掲示板を示しています。

更新されたプロンプト 改善されたレスポンス
運行時刻表

この画像に示されている空港の案内掲示板の時刻と都市を解析し、リストにします。

  • 10:50 モスクワ
  • 11:05 エディンバラ
  • 11:05 ロンドン
  • 11:10 ブカレスト
  • 11:30 キーウ
  • 11:35 ダブリン
  • 11:45 イースト ミッドランズ
  • 12:15 ソフィア
  • 12:30 ロンドン
  • 12:30 ニューカッスル
  • 12:40 サンクトペテルブルク
  • 12:40 ロンドン
  • 12:45 マンチェスター
  • 例をいくつか追加する

    この Gemini モデルは、複数の出力を受け付け、受け付けた入力を例として使用しユーザーが必要とする出力を理解できます。これらのサンプルを追加すると、モデルがパターンを識別し、指定された画像とレスポンスの関係を新しいサンプルに適用できます。これは「少数ショット」の学習とも呼ばれます。

    以下の例では、最初の出力が文形式で記述されており、国(ブラジル)も含まれています。別の形式やスタイルで出力し、国ではなく都市のみを出力したいとします。プロンプトに少数ショットの例を追加すると、モデルが意図したとおりに応答するように指示できます。

    プロンプト モデルのレスポンス
    運行時刻表

    ランドマークと都市を特定します。

    ランドマークは、ブラジルのリオデジャネイロにあるコルコバードのキリスト像です。

    更新されたプロンプト 改善されたレスポンス

    ランドマークと都市を特定します。

    コロッセオ

    都市: ローマ、ランドマーク: コロッセオ。

    紫禁城

    都市: 北京、ランドマーク: 禁止都市

    紫禁城

    都市: リオデジャネイロ、ランドマーク: コルコバードのキリスト像

    順を追って説明する

    視覚的な理解と推論の両方を必要とするような複雑なタスクの場合は、タスクをより小さく、より簡単なステップに分割することが有効であることが考えられます。または、プロンプトに「順を追って考える」ようモデルに依頼するとより効果的な場合があります。

    プロンプト モデルのレスポンス

    トイレットペーパーを使い切ってしまうのはいつですか?

    間もなくです。残りのロールは 3 つだけです。

    更新されたプロンプト 改善されたレスポンス

      1. まず、この画像に写っているトイレット ペーパーのロールの数を数えてください。
      2. 次に、一般的な人が 1 日に使用するトイレット ペーパーの量を決定します。
      3. それらのトイレットペーパーのロールがもつ期間を算出します。

      1. この画像には、トイレット ペーパーのロールが 3 つ写っています。
      2. 一般的な人は 1 日に約 20 枚分のトイレット ペーパーを使用します。
      3. 各ロールのシート数が 200 枚の場合、各ロールがもつ期間は約 10 日間です。したがって、3 つのロールがもつ期間は約 1 か月です。

    数学の問題や他の種類の単語の問題は、モデルに順を追って考えるよう依頼するのに適しています。

    プロンプト レスポンス

    シーケンスの 4 番目の項は何ですか?

    -135

    モデルからのレスポンスが正しくありません。これを改善するには、プロンプトに答える前に問題を解析するようにモデルに求める方法があります。

    プロンプト レスポンス

    まず、画像内の数式を解析します。

    次に、計算式に基づいて、「シーケンスの 4 番目の項は何ですか?」と答えます。

    クリックして結果を拡大

    $$ b(n) = b(n-1) * (-3) $$

    $$ b(1) = 15 $$

    1. n = 4 を次の式に代入します。
    2. $$ b(4) = b(4-1) * (-3) $$

      $$ b(4) = b(3) * (-3) $$

    3. b(3) の値がわからないため、n = 3 を次の式に代入します。
    4. $$ b(3) = b(3-1) * (-3) $$

      $$ b(3) = b(2) * (-3) $$

    5. b(2) の値が不明なため、n = 2 を次の式に代入します。
    6. $$ b(2) = b(2-1) * (-3) $$

      $$ b(2) = b(1) * (-3) $$

    7. b(1) の値は 15 であることが分かっているため、次の式に代入します。
    8. $$ b(2) = 15 * (-3) $$

      $$ b(2) = -45 $$

    9. b(2) の値が分かったため、それを b(3) の式に代入します。
    10. $$ b(3) = b(2) * (-3) $$

      $$ b(3) = -45 * (-3) $$

      $$ b(3) = 135 $$

    11. b(3) の値が分かったため、b(4) の式に代入します。
    12. $$ b(4) = b(3) * (-3) $$

      $$ b(4) = 135 * (-3) $$

      $$ b(4) = -405 $$

    したがって、数列の第 4 項は -405 です。

    このモデル レスポンスは正確です。レスポンスをさらに合理化するには、モデルに順を追って考えるよう依頼します。

    更新されたプロンプト 改善されたレスポンス

    シーケンスの 4 番目の項は何ですか? 順を追って考えてください。

    最初の項は 15 です。

    第 2 項は、b(1) × (-3) = 15 × (-3) = -45 です。

    第 3 項は、b(2) × (-3) = -45 × (-3) = 135 です。

    第 4 項は、b(3) × (-3) = 135 × (-3) = -405 です。

    出力形式を指定してみる

    よくある問題は、モデル出力を特定の形式(マークダウン、JSON、HTML など)にする必要があることです。特に、モデルの出力を下流のタスクで取り込む必要がある場合に発生します。プロンプトの中でモデルにそのように指示することで、その形式での出力を試みることができます。以下に 2 つの例を示します。

    プロンプト モデルのレスポンス

    この画像の表を解析してマークダウン形式に変換してください。

    | 科目 | ステータス | 時間 | 開始日 | 期限: |

    | ------- | ------ | ---- | --------- | ------ |

    | 数学 | 完了 | 1.5 時間 | 2023 年 11 月 29 日 | 2023 年 12 月 1 日 |

    | 地理 | 完了 | 30 分 | 2023 年 12 月 2 日 | 2023 年 12 月 4 日 |

    | 物理 | 進行中 | 2 時間 | 2023 年 12 月 3 日 | 2023 年 12 月 5 日 |

    | 生物 | 未開始 | 6 時間 | 2016 年 11 月 2 日 | 2023 年 12 月 6 日 |

    プロンプト モデルのレスポンス

    次のすべての属性のリストを指定します。

    材料、料理の種類、ベジタリアンであるかどうか、JSON 形式

    ```json```

    {

    "ingredients": [

    "rice",

    "shrimp",

    "clams",

    "mussels",

    "peas",

    "tomatoes",

    "onions",

    "garlic",

    "olive oil",

    "paprika",

    "salt",

    "pepper"

    ],

    "type of cuisine": "Spanish",

    "vegetarian": false

    最初に 1 つの画像に関連するプロンプトに対して画像を配置する

    Gemini は、プロンプト内の画像とテキストを任意の順序で解釈できますが、テキスト プロンプトの前に単一の画像を配置するとより良好な結果が得られる場合があります。以下の例では、それぞれのプロンプトにおいて、テキストの前に画像や動画があることを確認できます。

    マルチモーダル プロンプトのトラブルシューティング

    役に立つレスポンスが得られない場合は、プロンプトのトラブルシューティングが必要かもしれません。以下にいくつかの方法を示します。

    モデルが画像の該当部分から情報を引き出していない場合

    より具体的なレスポンスを得るには、プロンプトが画像のどの部分から情報を抽出する必要があるかを指定し、レスポンスについての情報を伝えます。

    プロンプト モデルのレスポンス

    おむつはいつから赤ちゃんが生まれてから何日もつでしょうか?

    おむつは 198 日間ですべて使い切るでしょう。

    更新されたプロンプト 改善されたレスポンス

    おむつの予備がなくなるまでどの程度の期間持ちますか?

    箱に記載されている体重から子どもの年齢を割り出し、箱に入っているおむつの総数を使用してください。

    合計数を、子どもが 1 日あたりに使用するおむつの数で割ります。

    箱には 198 枚のおむつが入っています。箱には、おむつが22~37 ポンドの子ども用であると記載されています。

    この体重の範囲にある子どもの平均年齢は 1~2 歳であると考えられます。

    2 歳の子どもは通常 1 日あたり 6 枚のおむつを使用するため、おむつは約 33 日間(198/6 日)持ちます。

    モデルの出力が過度に一般的であり、画像や動画の入力に十分対応できない場合

    モデルが画像に対するレスポンスを調整できるように、推論タスクを実行する前に画像について説明するよう依頼します。

    プロンプト モデルのレスポンス

    これらの画像の共通点は何ですか?

    4 枚の画像はいずれも風景写真のサンプルです。

    更新されたプロンプト 改善されたレスポンス

    まず、それぞれの画像の内容を詳しく説明してください。これらの画像の共通点は何ですか?

    1 つ目の画像にはスーツケースに荷物を詰めている人物が写っています。2 つ目の画像にはショッピング モールの何もない廊下が写っています。3 つ目の画像にはトイレット ペーパーが写っています。4 つ目の画像には暗く荒れ狂う海が写っています。

    これらの画像の共通点は、これらがすべてリミナル スペースの例であるということです。リミナル スペースとは、他の 2 つの場所または状況の間にある場所や状況のことです。多くの場合、不確実性やあいまいさによって特徴付けられます。

    1 つ目の画像は、自宅にいる段階から旅行中までの人物の画像です。2 つ目の画像は 2 つの店舗の間にある廊下が写されています。3 つ目の画像はトイレ ペーパーの画像であり、バスルームを表している可能性があります。バスルームは、プライベートなスペースと共用スペースの中間にあたるスペースです。そこは、外の世界に出入りするための準備をする場所です。

    4 番目の画像は、落ち着いた状態と荒れた状態の海を示しています。

    誰もいないスペースは、わくわくさせることもあれば、不安にさせることもあります。新しい何かが始まる場所、または何かが終わる場所であることが考えられます。熟考する場所やアクションの場所になることもあります。

    また、画像の内容に言及するように明示的にモデルに指示することもできます。

    更新されたプロンプト 改善されたレスポンス

    これらの画像の共通点は何ですか?レスポンスでは、画像の内容を参考にしてください。

    画像はすべて旅行に関連しています。1 つ目の画像ではスーツケースに荷物を詰めている人物が示されており、2 つ目の画像ではショッピング モールの何もない廊下が示されています。3 つ目の画像では積み重ねたトイレットペーパーが示されています。また、4 つ目の画像では暗く荒れている海が示されています。

    これらはすべて、人々が旅行中に必要なもの、または使用するものですので、これらの画像はすべて旅行に関連しています。1 つ目の画像では、スーツケースのパッキングを行っている人が示されています。これは、旅行に出かける人々が行うことです。2 つ目の画像は、ショッピング モール内の何もない廊下を示しています。ショッピング モールは、多くの場合に、旅行用品を購入するために人々が訪れる場所です。3 つ目の画像では、積み重ねたトイレットペーパーが示されています。トイレットペーパーは、人々が旅行中に頻繁に使用するものです。4 番目の画像は、暗い嵐の海を示しています。これは、人々が旅行中に頻繁に遭遇する場面です。

    画像や動画からのクリエイティブな出力にも、同様のヒントが活用できます。ウサギが写っている次の例では、画像のアスペクトを含めるようにモデルに明示的に依頼すると、出力が向上します。

    プロンプト モデルのレスポンス

    この画像に関連する詩を書いてもらえますか?

    とても柔らかで茶色い小さなウサギが、
    野原を飛び跳ねながら走り回っています。
    とても長い耳、とても小さなしっぽ、
    君は最もかわいい生き物だ。

    緑色のとても柔らかな草をかじってる、
    私を見たらぴょんぴょん跳ねて逃げて行ったね。
    でも、私はいつもあなたの友だち。
    小さなうさぎさんが生きている限り。

    更新されたプロンプト 改善されたレスポンス

    この画像に関連する、描写が素晴らしい詩を書いて、場所を含めることはできますか?

    草原にいる小さなうさぎ、
    耳がとっても長いから敏感だね。
    遠くの何かをじっと見ているけれど、
    そこで何を見ているの?

    太陽に照らされている
    青い海を見つめているの?
    それとも打ち寄せて大きな音を響かせている波を見て、
    そのリズムに夢中になっているの?

    小さなうさぎさん、何が正解か私に教えて、
    何が君の注目をそれほどまでに引き付けているの?
    潮風、それとも
    楽しくなるカモメの鳴き声かい?

    きっと、あらゆる存在の壮大さだね、
    とても大きくて小さな世界。
    夢が歩き回ることができる場所、
    冒険の種がまかれる場所。

    草の上に座って、とても静かで小さなうさぎさん、
    君の夢って何だろう?
    深い穴を掘りたいの?
    それとも飛び跳ねられる大地にとどまりたいの?

    君の夢がどんなものでも、
    明るく輝く不思議さをなくさないでね。
    夢や野心のために、
    君が何かを生み出すのを待っている世界がそこにあるよ。

    プロンプトのどの部分が失敗したかに関するトラブルシューティング

    モデルが最初から画像を理解しなかった、または画像を理解しても推論の手順を正しく実行しなかったために、プロンプトが失敗したかどうかを判別することは困難です。

    これらの理由を明確にするには、画像内のものを記述するようモデルに依頼します。

    以下の例では、お茶と組み合わせると驚かれるスナック(例: ポップコーン)をモデルで返す場合は、まずトラブルシューティングを行って、画像にお茶が含まれていることを現時点でモデルが正しく認識しているかどうかを判断できます。

    プロンプト トラブルシューティング用のプロンプト

    これに適した 1 分間で作ることができるスナックは何ですか?

    この画像の内容を記述します。

    もう 1 つの戦略は、モデルに推論の理由を説明するよう依頼することです。これによって、推論が破綻した部分(該当する場合)を絞り込むことができます。

    プロンプト トラブルシューティング用のプロンプト

    これに適した 1 分間で作ることができるスナックは何ですか?

    これに適した 1 分間で作ることができるスナックは何ですか?理由を説明してください。

    サンプリング パラメータの調整

    各リクエストでは、マルチモーダル プロンプトだけでなく、サンプリング パラメータのセットをモデルに送信します。このモデルは、パラメータ値によって異なる結果を生成できます。さまざまなパラメータを試して、タスクに最適な値を取得します。最もよく調整されるパラメータは次のとおりです。

    • temperature
    • Top-P
    • Top-K

    temperature

    温度は、Top-P と Top-K が適用されたときにレスポンスを生成するサンプリングに使用されます。温度は、トークン選択のランダム性の度合いを制御します。温度は低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、温度が高いと、より多様で創造的な結果を導くことができます。温度 0 は確定的であり、最も高い確率のレスポンスが常に選択されることを表します。

    ほとんどのユースケースでは、温度 0.4 から始めることをおすすめします。よりクリエイティブな結果が必要な場合は、温度を上げてみてください。明確なハルシネーションが見られる場合は、温度を下げてみてください。

    Top-K

    トップ K は、モデルが出力用にトークンを選択する方法を変更します。Top-K が 1 の場合、次に選択されるトークンは、モデルの語彙内のすべてのトークンで最も確率の高いものであることになります(グリーディ デコードとも呼ばれます)。Top-K が 3 の場合は、最も確率が高い上位 3 つのトークンから次のトークン選択されることになります(Temperature を使用します)。

    トークン選択のそれぞれのステップで、最も高い確率を持つ Top-K のトークンがサンプリングされます。その後、トークンは Top-P に基づいてさらにフィルタリングされ、最終的なトークンは温度のサンプリングを用いて選択されます。

    ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。 Top-K のデフォルト値は 32 です。

    トップ P

    トップ P は、モデルが出力用にトークンを選択する方法を変更します。トークンは、確率の合計が Top-P 値に等しくなるまで、確率の高いもの(Top-K を参照)から低いものへと選択されます。たとえば、トークン A、B、C の確率が 0.6、0.3、0.1 であり、Top-P 値が 0.9 であるとします。このとき、モデルは次のトークンとして A または B を温度を使用して選択し、C を候補から外します。

    ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。 Top-P のデフォルト値は 1.0 です。

    次のステップ