【初心者向け】プロンプトエンジニアリング入門 – 7つの基本テクニック
LLMを使い始めて最初につまずくのが「なんかうまく答えてくれない」という壁だ。質問の仕方を変えるだけで回答の質が劇的に変わる。これがプロンプトエンジニアリングの本質で、特別な知識がなくても今日から実践できる。
テクニック1: 役割を与える(Role Prompting)
AIに「あなたは〇〇の専門家です」と役割を与えると、その役割に沿った回答が返ってくる。
Before(普通の質問):
TypeScriptの型エラーを直してください。
After(役割を与える):
あなたはTypeScriptのエキスパートエンジニアです。
型安全性を最優先に、以下のコードのエラーを修正してください。
修正理由も説明してください。
役割を明示することで、回答の深さと専門性が上がる。「初心者向けに説明してください」「上級者向けに説明してください」という指定も同じ効果がある。
テクニック2: 出力形式を指定する
「どんな形式で返してほしいか」を明示すると、そのまま使える形式で返ってくる。
以下の要件を満たすPython関数を実装してください。
出力はコードブロックのみ、説明文は不要です。
要件:
- 文字列を受け取り、camelCaseに変換する
- スペース、ハイフン、アンダースコアをデリミタとして認識する
- 入力が空文字の場合は空文字を返す
JSON形式が必要なら「JSON形式で返してください」、表が必要なら「Markdownの表形式で返してください」と書くだけでいい。
テクニック3: 具体例を示す(Few-shot Prompting)
入力と期待する出力のペアを例として見せると、パターンを学習して同じ形式で答えてくれる。
以下の形式でコミットメッセージを作成してください。
例1:
変更内容: ユーザー認証機能を追加した
コミットメッセージ: feat: ユーザー認証機能を追加
例2:
変更内容: ログイン時のバグを修正した
コミットメッセージ: fix: ログイン時のnullポインタエラーを修正
対象:
変更内容: 記事一覧のページネーションを実装した
コミットメッセージ:
「例を1つだけ見せる」だけでも効果があり、例が多いほど精度が上がる。
テクニック4: 段階的に考えさせる(Chain of Thought)
複雑な問題は「ステップバイステップで考えてください」と添えると精度が上がる。
以下のコードのバグを見つけてください。
まず、コードが何をしようとしているかを説明してください。
次に、各ステップを順番に確認してください。
最後に、バグと修正方法を教えてください。
コード:
[問題のあるコードを貼り付ける]
数学的な問題や論理的な推論が必要な問題では特に効果的。「答えだけ教えて」より「考える過程を見せて」のほうが正確な答えが返ってくる。
テクニック5: 制約を明示する
「やってほしいこと」だけでなく「やってほしくないこと」も書く。
Pythonのコードレビューをしてください。
確認してほしい点:
- バグや潜在的なエラー
- パフォーマンスの問題
- セキュリティの懸念
確認不要な点:
- コードスタイル(PEP 8準拠は別ツールで確認済み)
- コメントの有無(内部ツールなので不要)
制約を明示することで、不要な指摘が減り、本当に見てほしい部分に集中してもらえる。
テクニック6: 出力の長さを制御する
デフォルトだと長すぎたり短すぎたりすることがある。明示的に長さを指定する。
以下のライブラリの特徴を3行以内で説明してください。
技術的な詳細は省き、「何に使うか」だけを教えてください。
ライブラリ: pandas
「200文字以内で」「箇条書き5点で」「1段落で」など、具体的な長さの指定が効果的。
テクニック7: 反復的に改善する(Iterative Refinement)
1回で完璧な回答を求めず、フィードバックを与えながら改善していく。
[1回目]
このコードをリファクタリングしてください。
[2回目]
ありがとうございます。もう少し変数名をわかりやすくしてください。
特に "data" と "result" は具体的な名前にしてほしいです。
[3回目]
良くなりました。エラーハンドリングも追加してもらえますか?
会話の流れを使って少しずつ改善するのが実は一番効率的。一度に全部要求しようとすると指示が複雑になり、回答の品質が落ちることがある。
よくある失敗パターン
あいまいな質問:
# NG
このコードを改善してください。
# OK
このコードの処理速度を改善してください。
現在10万件のデータで5秒かかっており、1秒以内にしたいです。
文脈なしの質問:
# NG
エラーが出ます。
# OK
Python 3.11でpandasを使っています。
以下のコードを実行すると "KeyError: 'name'" が出ます。
データは { "user_name": "中野" } という辞書です。
まとめ
プロンプトエンジニアリングの7つの基本テクニックをまとめる:
1. 役割を与える – 専門家として回答させる
2. 出力形式を指定する – JSONや表など使いやすい形式にする
3. 具体例を示す – 期待するパターンを見せる
4. 段階的に考えさせる – 複雑な問題はステップバイステップで
5. 制約を明示する – やってほしくないことも書く
6. 出力の長さを制御する – 具体的な長さを指定する
7. 反復的に改善する – フィードバックを与えながら磨く
どれも今日からすぐ実践できる。まずは自分がよく使うプロンプトに「役割を与える」と「出力形式を指定する」の2つを追加するだけでも、回答の質が変わるはずだ。