【初心者向け】プロンプトエンジニアリング入門 – 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つを追加するだけでも、回答の質が変わるはずだ。