AIへの質問のコツ
回答の質が劇的に変わる5つのテクニック
AIに質問するとき、聞き方ひとつで回答の質が大きく変わります。この記事では、ChatGPTやClaudeなどのAIアシスタントから最大限の回答を引き出す「プロンプトエンジニアリング」のコツを実践的に解説します。
この記事の対象者
- AIを使い始めたが、思うような回答が得られない方
- プロンプトエンジニアリングの基本を知りたい方
- AIを業務でもっと活用したい方
なぜ質問の仕方が重要なのか
AIは入力された質問(プロンプト)に基づいて回答を生成します。質問が曖昧だと、AIは「何を求められているのか」を推測するしかなく、的外れな回答になりがちです。
曖昧な質問
→
AIが推測
→
的外れな回答
具体的な質問
→
AIが正確に理解
→
期待通りの回答
基本の5つのコツ
1. 役割を指定する
AIに「誰として」回答してほしいかを伝えると、専門性のある回答が得られます。
役割指定の例
# NG: 役割指定なし
Pythonのデコレータについて教えてください
# OK: 役割を指定
あなたはPython歴10年のシニアエンジニアです。
Python初心者にデコレータの概念を、実務でよく使う例を交えて説明してください。
2. 具体的な条件を伝える
出力の形式、長さ、対象者、制約条件を明示しましょう。
| 条件 | 指定例 |
|---|---|
| 対象者 | 「プログラミング未経験者向けに」 |
| 形式 | 「箇条書きで5つ」「表形式で」 |
| 長さ | 「200文字以内で」「3段落で」 |
| トーン | 「カジュアルに」「ビジネス文書として」 |
| 言語 | 「TypeScriptで」「Python 3.12以上で」 |
3. 背景情報を与える
自分の状況や目的を伝えることで、文脈に合った回答が得られます。
背景情報の提供例
# NG
ログイン機能を作ってください
# OK
Django 5.2のプロジェクトで、既存のユーザーモデル(AbstractUser継承)を使った
ログイン機能を作りたいです。
- セッション認証を使用
- ログイン失敗時はエラーメッセージを表示
- 5回失敗したらアカウントロック
テンプレートとビューのコードを教えてください。
4. 例を示す(Few-shot)
期待する出力の例を1〜2個示すと、AIがパターンを理解して同じ形式で回答します。
Few-shotの例
以下の形式で、Pythonの組み込み関数を説明してください。
例:
【関数名】len()
【用途】リストや文字列の長さを取得
【使用例】len([1, 2, 3]) # 3
【注意点】Noneに対して使うとTypeError
この形式で map() を説明してください。
5. ステップバイステップで考えさせる
複雑な問題は「段階的に考えてください」と指示すると、論理的な回答が得られます。
段階的思考の指示
以下のSQLクエリが遅い原因を分析してください。
段階的に考えて、改善案を優先度順に提示してください。
SELECT * FROM orders
JOIN users ON orders.user_id = users.id
JOIN products ON orders.product_id = products.id
WHERE orders.created_at > '2024-01-01'
ORDER BY orders.total DESC;
NG例とOK例の比較
コード作成の場合
「APIを作って」
→
「FastAPIで商品CRUDのREST APIを作成してください。商品はname, price, stockを持ち、PostgreSQLを使います」
文章作成の場合
「メールを書いて」
→
「クライアントへの納期遅延のお詫びメールを書いてください。原因は部品調達の遅れで、新しい納期は来週金曜日です。丁寧なビジネス文体でお願いします」
学習の場合
「Dockerを教えて」
→
「Docker初心者です。Pythonの開発環境をDockerで構築する手順を、Dockerfileの各行の意味を解説しながら教えてください」
上級テクニック
Chain of Thought(思考の連鎖)
「なぜそう考えたかも説明してください」と付け加えると、AIの推論過程が見え、回答の信頼性を検証できます。
制約条件の明示
「やってはいけないこと」を伝えるのも効果的です。
制約条件の例
PythonでCSVファイルを読み込む処理を書いてください。
制約:
- pandasは使わない(標準ライブラリのみ)
- メモリ効率を考慮(大容量ファイル対応)
- エンコーディングはUTF-8とShift_JISの両方に対応
反復改善
一度の質問で完璧な回答を求めず、対話を重ねて改善していくのも有効です。
- 「もう少し具体的に説明してください」
- 「初心者にもわかるように言い換えてください」
- 「エラーハンドリングを追加してください」
そのまま使えるテンプレート
コード作成テンプレート
コード作成テンプレート
[言語/フレームワーク] で [機能] を実装してください。
【要件】
- [要件1]
- [要件2]
- [要件3]
【技術的な制約】
- [制約1]
- [制約2]
【期待する出力】
- コード本体
- 使用例
- 簡単な説明
文章作成テンプレート
文章作成テンプレート
以下の条件で [文書の種類] を作成してください。
【目的】[何のために書くか]
【読者】[誰が読むか]
【トーン】[フォーマル / カジュアル / 技術的]
【長さ】[文字数や段落数]
【含めてほしい内容】
- [ポイント1]
- [ポイント2]
まとめ
- AIへの質問は「役割・条件・背景・例・段階的思考」の5つを意識する
- 曖昧な質問は避け、具体的な条件や制約を明示する
- Few-shot(例示)で出力形式をコントロールできる
- 一度で完璧を求めず、対話を重ねて改善するのも有効
- テンプレートを活用すれば、毎回一から考えなくて済む