LLM基礎 レッスン 2 / 3

プロンプトの基本

このレッスンで学ぶこと

出力の質は入力の質で決まります。このレッスンでは、効果的なプロンプトの条件と、失敗するプロンプトの特徴を解説します。

なぜプロンプトが重要か

LLMは与えられた情報から次のトークンを予測します。曖昧なプロンプトは曖昧な(または間違った)予測につながります。具体的なプロンプトは可能性を絞り込みます。

こう考えてください:同僚に「これ手伝って」と言うのと「auth.jsの42行目にnullチェックのバグがあるから見てほしい」と言うのでは、どちらが良い結果を得られますか?

悪いプロンプト vs 良いプロンプト

悪い例:

コード直して

まあまあ:

この関数は入力配列が空のときにundefinedを返します。
最初に空配列を返すチェックを追加してください。

良い例:

src/utils/filter.jsのfilterItems関数が、空配列を渡すと
エラーになります。12行目にitems.length === 0のとき
[]を返すガード句を追加してください。

具体性の原則

良いプロンプトの共通点:

  • 場所が明確:どのファイル、どの関数、何行目か
  • 問題が明確:何が問題で、どうなるべきか
  • スコープが限定的:一度に一つのタスク

やってはいけないこと

  • 曖昧にしない:「もっと良くして」ではモデルに方向性がない
  • 詰め込みすぎない:「バグ修正して、テスト追加して、リファクタして、ドキュメント更新して」は多すぎる
  • コンテキストを仮定しない:モデルはあなたが伝えたことしか知らない

よくある間違い:モデルが以前の会話を覚えていると思い込むこと。明示的にコンテキストを提供しない限り、各セッションは新しく始まります。

まとめ

  • 具体的なプロンプト → 具体的な結果
  • 関連があれば、ファイル・関数・行番号を含める
  • 1つの明確なタスクは、複数の曖昧なタスクより効果的
  • モデルは伝えたことしか知らない—共有コンテキストを仮定しない