プロンプトエンジニアリングとは何か・魔法の呪文探しではなく曖昧さ潰しの技術
AIツールを使う記事一覧では「どのツールを使うか」を見てきましたが、ツールを選んだ後には必ず「そのツールに何をどう伝えるか」という問題が残ります。これがプロンプトエンジニアリングです。SNSなどで「このフレーズを唱えると出力が劇的に良くなる」という類の投稿を見て、特別な呪文を知っているかどうかの勝負だと思うかもしれませんが、実態はもっと地味です。プロンプトエンジニアリングの大部分は、自分の指示に潜んでいる曖昧さを1つずつ潰していく作業でしかありません。
曖昧な指示は、AIの中で「もっともらしく」補完される
人間の同僚になら、多少曖昧な指示を出しても文脈から意図を察して動いてくれるので、AIにも同じ感覚で話しかければ伝わるはずだと思うかもしれません。しかし実際には、AIは指示に含まれる曖昧な部分を、勝手に「もっともらしい」形で埋めてしまいます。人間なら「これで合っていますか?」と聞き返してくれる場面でも、AIはいったん自分の解釈で最後まで作業を終わらせてから結果を返してくることが多く、後になって「そういう意味で言ったのではない」と気づくことになります。
# 曖昧な指示の例
「このバグを直して」
→ どのバグか、直った基準は何か、副作用が出ないかの確認方法が
何も指定されていないため、AIは「それらしい修正」を自分で判断して行う
# 曖昧さを潰した指示の例
「ログイン処理で、パスワードが空文字のときにエラーにならず
ログインが通ってしまうバグを直して。
直したら tests/test_login.py が全部パスすることを確認して」
→ 対象・不具合の内容・完了基準の3つが指定されているため、
AIの解釈の余地が大きく減る
長年一緒に働いているベテラン店長になら「いつもの感じでお願い」の一言で意図が伝わります。しかしAIへの指示は、その日入ったばかりの新人アルバイトに渡す指示書に近いものです。新人アルバイトは悪気なく、書かれていない部分を自分の常識で埋めて動きます。「レジ締めをお願い」とだけ書かれた指示書を渡せば、レジの現金だけ数えて終わりにするかもしれませんし、伝票の整理まで含めて解釈するかもしれません。曖昧さを潰すというのは、この新人アルバイト向けの指示書を、読み違えようのない粒度まで具体化する作業のことです。
ロール・Few-shot・出力形式という、操作できる3つのレバー
プロンプトエンジニアリングは経験と勘のセンスがものを言う、体系化しにくい世界だと思うかもしれませんが、実際には効果が確認しやすい操作可能な要素がいくつかあります。代表的なのが、振る舞いの方向づけをする「ロール指定」、期待する出力のパターンを実例で示す「Few-shotプロンプティング」、そして後続の処理をしやすくする「出力形式の指定」の3つです。ロール指定は「あなたはセキュリティ監査に厳しいレビュアーです」のように前提知識と視点を固定し、出力形式の指定は「結果はJSONの配列で、各要素にfile・line・severityの3キーを持たせて」のように後続の処理がそのまま扱える形に縛ります。中でもFew-shotは、説明で条件を細かく書き連ねるよりも、実例を1〜2個示すだけの方が意図が正確に伝わることが多く、説明が難しい「暗黙のニュアンス」を伝える場面で効果を発揮します。
# Few-shotで出力パターンを実例で示す例
以下の例と同じ形式で、関数名から説明文を生成してください。
例1: 関数名 `calc_tax_included_price` → 説明: "税込み価格を計算する"
例2: 関数名 `is_valid_email` → 説明: "メールアドレスの形式が正しいか判定する"
関数名 `fetch_user_by_id` → 説明: ?
# 実例が無いと「取得する」と曖昧に返ってきがちな部分が、
# 実例の文体(体言止め・句点あり)に揃った説明が返りやすくなる
料理の盛り付けを教えるとき、「彩りよく」「バランスよく」「立体的に」といった言葉で条件を並べるより、実際に仕上がった一皿を1つ見せる方が早く正確に伝わることがあります。言葉にしにくい「暗黙の基準」を、実例という形でそのまま渡せるからです。Few-shotプロンプティングは、この「口で説明するより、見本を見せる」というアプローチをAIへの指示に応用したものです。
よくあるはまりポイント:詳しく書けば書くほど精度が上がるという思い込み
指示は詳しく長く書けば書くほど、AIに正確に伝わって精度が上がるはずだと思うかもしれませんが、実際には逆効果になることがあります。スタンフォード大学などの研究チームが発表した「Lost in the Middle」という論文では、長い入力の中に重要な情報を混ぜたとき、その情報が文章の最初や最後にある場合は正しく参照されやすい一方、真ん中あたりに埋もれていると参照精度が30%以上落ちることが確認されています。つまり、あれもこれもと制約や背景情報を詰め込みすぎると、本当に守ってほしい重要な指示が指示全体の中盤に埋もれてしまい、かえって見落とされやすくなります。
- ロールプロンプティング
- 「あなたは○○の専門家です」のように、振る舞いや前提知識の方向づけをする指示の技法
- Few-shotプロンプティング
- 期待する出力のパターンを、説明ではなく実例(1〜数個)として示す技法。ゼロ個の場合はZero-shotと呼ぶ
- Lost in the Middle
- 長い入力の中で、重要な情報が中盤に位置していると参照精度が落ちる現象。2023年の研究論文で報告された
複数の制約や背景情報を伝える必要があるときは、その中でも特に守ってほしい最重要の条件を、指示文の冒頭か末尾に配置してください。Lost in the Middleの傾向を踏まえると、重要度の低い補足情報ほど指示の中盤に置き、絶対に外してほしくない条件は始めか終わりに固めておくと、見落とされるリスクを減らせます。
指示に潜む曖昧さを潰す視点が掴めたら、AIとのやり取りを何度も重ねる「コンテキストエンジニアリング」も見てみると理解が深まります。(シリーズ一覧・コンテキストエンジニアリング・ループエンジニアリング・グラフエンジニアリング)