AIへの指示の出し方:プロンプト入門
Few-shotプロンプティング入門:AIに具体例を与えて精度を上げるコツ
形式を言葉で説明しても、守ってくれない
「【判定】要約 の形で返してください」と書いたのに、返ってきたのは「このレビューはポジティブですね。要約すると、配送が早く丁寧といったところです」。文章で形式を説明しているかぎり、この揺れは消えません。説明文は AI にとって守るべき型ではなく、ただの文章だからです。
型を型として渡す方法は 1 つしかありません。実物を見せることです。入力と出力の組をいくつか並べる頼み方を Few-shot と呼びます。
プレーンテキスト
以下の例にならって、レビューを分類してください。
入力 → 画面が割れて届きました。最悪です。
出力 → 【ネガティブ】商品の破損あり
入力 → 使い勝手が良く、デザインも気に入っています。
出力 → 【ポジティブ】操作性とデザインを高評価
入力 → 機能は良いのですが、少し価格が高いと感じました。
出力 → 【ネガティブ】価格設定に不満あり
入力 → 届くのが早く、梱包も丁寧でした。また利用したいです。
出力 →説明の文は 1 行に減りましたが、出力の形は前より安定します。AI はプロンプトの中に並んだパターンをその場で読み取って続きを作るので、実物は説明よりも強く効きます。
2 個から 3 個、そして偏らせない
例の数は 2 個から 3 個で足ります。1 個だと、その 1 個の細部まで真似されます。語尾も、文の長さも、たまたまその例が持っていた癖ごと引き継がれるので、かえって窮屈になります。6 個、7 個と増やしても精度はほとんど伸びず、毎回のトークンだけが増えます。
数より効くのが偏りです。上の例は、ネガティブ 2 個にポジティブ 1 個を混ぜてあります。仮に 3 個ともポジティブにすると、次の入力が微妙な内容だったときに、AI はポジティブ側へ寄せた判定を返します。例の分布は、そのまま出力の分布に乗り移ります。分類なら各ラベルを同じくらいの数だけ、書き味を真似させたいなら長い文と短い文を混ぜてください。
例を増やしても直らないときは、例のほうが間違っている
Few-shot にしたのに揺れが残るときは、数ではなく例そのものを疑ってください。いちばん多いのは、自分が並べた例の中で表記が揃っていない場合です。片方が「入力 →」で片方が「入力は」、片方は句点あり、片方は無し。AI は例の全部をパターンとして読むので、揃っていない箇所は「揃えなくてよい箇所」として受け取られます。
もう 1 つは、例と本番で難しさが違う場合です。一文の短いレビューばかりを例に並べておいて、本番で長文のクレームを投げると崩れます。例は本番と同じくらいの長さと複雑さにしてください。うまくいっている例を後から本番データで作り直すと、それだけで安定することがよくあります。
例を選ぶときは、きれいに判定できるものよりも、迷ったものを入れてください。上の 3 つ目に「機能は良いのですが、少し価格が高い」という、褒めと不満が同居した文を入れてあるのはそのためです。誰が見てもポジティブな例を 3 つ並べても、AI が迷う場面の助けにはなりません。実際に判定がぶれた入力を 1 つ例に昇格させるのが、いちばん効く直し方です。
復習ミニクイズ
Few-shotプロンプティングを用いて、AIに期待通りの形式で回答させたい場合に、精度をより高めるためのコツとして最も適切なものはどれですか?