今回はgoogle AI for Developersに載っているマルチモーダル入力に対するプロンプト戦略についてまとめてみる
(引用:https://ai.google.dev/gemini-api/docs/files?hl=ja#prompt-guide)
マルチモーダルプロンプトのベストプラクティス
指示を具体的にする
誤解を招かない明確な指示
プロンプトに行くつかの例を加える
モデルが望ましい出力を理解できるように、現実的な数個の例(少数ショット学習)を含めることが強く推奨されている
例えば、都市とランドマークを特定の形式で出力したい場合、その形式の例を示すことで、モデルを誘導できる
小さいステップに分ける
視覚的な理解と推論の両方を必要とするような複雑なタスクの場合、タスクをより小さく、扱いやすい中間目標に分割することが有効
公式には以下のような例が載ってある
出力形式を指定する
JSONなのか、HTMLなのか明瞭に指示を出す
単一画像のプロンプトではまず画像を配置する
通常画像とテキストの入力はどちらが先でも処理できるが単一画像のプロンプトの場合、画像または動画をテキストのプロンプトよりも前に配置することでパフォーマンス向上する可能性がある。
ただしその画像がテキストと複雑に絡み合っている場合は最も自然に意味をとらえることができる順序にする
望まない回答が来る時のトラブルシューティング
モデルが画像の該当箇所から情報を抽出していない場合
プロンプトで画像のどの部分から情報を引き出してほしいかについてのヒントを出す。
モデルの出力内容が一般的すぎる(入力した画像 / 動画に十分対応していない)場合
プロンプト冒頭でタスクの指示を出す前にモデルに画像や動画について説明するように求めてみる
この例では画像の内容に言及するように指示をしている
プロンプトによりハルシネーションが生じたコンテンツが生成された場合(API経由)
温度設定(temperature)を低くしてみる。
temperatureとは、モデルが次に選ぶトークンの確率分布を決めるパラメータの一つ
具体的に言うと、temperatureが低いほどモデルは最も高い確率のトークンを選びやすくなり、出力が決定論的になる
一方でtemperatureを高く設定すると確率の低いトークンも選ばれる可能性が増える。
生成させたい内容によってここは柔軟に変える必要があると考える
質問応答や技術文書の生成など→低い温度設定にする(temperature=0.1など)
創造的な文章の生成など多様性が求められる時→高い温度設定にする(temperature=1など)
実際に試してみた
この綺麗な富士山の画像をtemperature=0.1とtemperature=1で試してみた
temperature=0.1の結果
prompt:この画像はどの場所で撮影されたものか特定してください
output:この画像は、静岡県にある富士山を背景にした茶畑で撮影されたものです。
temperature=1の結果
prompt:この画像はどの場所で撮影されたものか特定してください
output:この画像は、静岡県にある富士山を背景にした茶畑で撮影されたものです。より具体的には、富士山を遠景に、茶畑と森林が前景に広がる場所です。この画像は、朝霧が山々を覆っている時間帯に撮影されており、富士山が鮮やかなシルエットとして際立っています。この風景は、日本の典型的な自然美を示しています
確かに、温度が低い方余計な回答が含まれていなかった
まとめ
今回はマルチモーダルの場合についてのプロンプト設計についてまとめてみました
プロンプトを効率化することによってわざわざファインチューニングなどを行わなくても良くなってくるかもしれない
何か他にも知見などある方いたらぜひご教授ください