フューショットの例を正しく使う
- フューショットプロンプティングとは何か、なぜ例は説明に勝るのか
- モデルが補完するきれいなフューショットプロンプトの読み方
- 例の選び方、整え方、並べ方(エッジケースを含む)
- ゼロショットとフューショットをいつ使い分けるか
- なぜ雑な例は例がないより悪いのか
フューショットプロンプティングとは、新しいタスクを頼む前に、そのタスクを解いた例をいくつかモデルに見せることです。うまくやれば、形式、スタイル、エッジケースの振る舞いを固定する最速の方法であり — 言葉で説明するよりも良いことがよくあります。
なぜ例は説明に勝るのか
「簡潔でフレンドリーに」は曖昧です。簡潔でフレンドリーな出力を 2 つ見せるのは明白です。モデルは例にパターンマッチして、そのパターンを続けます。
きれいなフューショットプロンプト
形に注目してください: 同一形式の Message → Label のペアがいくつか並び、最後に空の Label: を付けたメッセージがあって、モデルがそこを埋めます。
Few-shot classification prompt
Classify each support message as: billing, bug, or feature. Message: "I was charged twice this month." Label: billing Message: "The app crashes when I upload a photo." Label: bug Message: "Can you add dark mode?" Label: feature Message: "My subscription renewed at the wrong price." Label:
モデルはパターンを持っているので、最後の行を補完します。
例の選び方と整え方
Guided walkthrough1 of 5
- 気にしているエッジケースを含める。カテゴリーが珍しい、または扱いにくいなら、それを含める。
- 同じ構造、同じラベル、同じ区切り。不一致は不一致を教える。
- 2〜5 個でたいてい十分。難しい / 多様なタスクではもっと多い方が役立つが、トークンを消費し、例の癖に過剰適合することがある。
- 順序は重要なことがある — 最も明確な例を先頭に置く。分類では、同じラベルをまとめて固めないこと。
- 区切り(または XML タグ)を使って、例と実際にラベル付けしたい入力を分ける。
上記のトークンコストは現実のものです — トークンとコンテキストを参照。区切りの手法には、XML タグがきれいで信頼できる区切りになります。
ゼロショット対フューショット
まずゼロショット(ただ頼む)を試しましょう — 最新のモデルは強力です。特定の形式 / スタイルが必要なとき、またはタスクが曖昧なときに例を加えます。ゼロショットですでにうまくいくなら、例にコストを払わないこと。
- 例はデータ — きれいに保つこと。間違ったり雑だったりする例は、積極的に間違ったことを教える。トレーニングデータのように丁寧に整えること。
- 説明するな、見せろ: 解いた例は曖昧な説明に勝る。
- バリエーション、特にエッジケースを網羅し、すべての例を同一形式に保つ。
- 2〜5 個の例でたいてい十分。多すぎると過剰適合し、トークンを消費する。
- 順序は重要 — 最も明確なものを先に、同じラベルを固めない。
- ゼロショットから始め、特定の形式 / スタイルや曖昧さのときだけ例を加える。