👏
プロンプトエンジニアリング知識カード
Google プロンプトエンジニアリング ホワイトペーパーは素晴らしい内容だったので、ChatGPTを使って知識カードを作成しました😄。
🛠️ 効果的なプロンプティングのためのベストプラクティス
| 原則 (Principle) | 主要なアイデア (Key Idea) | 例 / ヒント (Example / Tip) |
|---|---|---|
| 例を提供する (Provide Examples) | ワンショット(One-shot)またはフューショット(Few-shot)の例を用いて、モデルに良好な出力の形を示す。 | ✅ 分類プロンプトには、3〜5個の多様な例を含める。 |
| シンプルに設計する (Design with Simplicity) | 曖昧または冗長なプロンプトよりも、明確で簡潔、かつ構造化されたプロンプトの方が効果的。 | ❌ 「NYで何をすべきか?」→ ✅ 「マンハッタンにある家族向けアトラクションを3つリストアップしてください。」 |
| 出力について具体的に指定する (Be Specific About Output) | 出力の長さ、フォーマット、トーン、制約を明示的に定義する。 | 「JSON形式で3段落の要約を作成してください。」 |
| 指示を優先する(制約よりも) (Instructions > Constraints) | モデルに「何をすべきか」を伝え、「何をすべきでないか」は伝えない。 | ✅ 「主要なゲーム機とそのメーカーをリストアップしてください。」 vs ❌ 「ビデオゲームの名前は挙げないでください。」 |
| トークン長を制御する (Control Token Length) | モデルの設定またはプロンプトの記述で応答の長さを制限する。 | 「1文で説明してください」またはトークン制限を設定する。 |
| 変数を使用する (Use Variables) | 動的な値を挿入することで、プロンプトをテンプレート化して再利用する。 | 「{city}に関する事実を教えてください」 |
| 入力スタイルを試す (Experiment with Input Style) | 質問、ステートメント、指示など、異なる形式を試す。 | 🔄 比較:「Xとは何か?」「Xを説明してください。」「Xに関するブログ記事を書いてください。」 |
| クラスをシャッフルする(フューショットの場合) (Shuffle Classes (Few-Shot)) | プロンプトのパターンへの過学習を避けるため、応答クラスの順序を混ぜる。 | ✅ フューショットタスクでは、クラスラベルの順序をランダム化する。 |
| モデルのアップデートに適応する (Adapt to Model Updates) | LLMは進化するため、プロンプトを定期的にテストし、調整する。 | 🔄 新しいGemini / GPT / Claude バージョンに合わせて再調整する。 |
| 出力フォーマットを試す (Experiment with Output Format) | 構造化されたタスクの場合、曖昧さを減らすためにJSON/XML形式での出力を要求する。 | 「応答は有効なJSONとして返してください。」 |
| プロンプトのイテレーションを文書化する (Document Prompt Iterations) | 各プロンプトの変更点とテスト結果を記録しておく。 | 📝 テーブルやバージョン管理システムを使用する。 |
🎯 主要なプロンプティングテクニック
| テクニック (Technique) | 説明 (Description) | 例の要約 (Example Summary) |
|---|---|---|
| ゼロショット (Zero-Shot) | 例を一切与えずに、モデルに直接質問する。 | 🧠 「このレビューをポジティブ/ニュートラル/ネガティブに分類してください。」 |
| ワンショット (One-Shot) | 期待されるフォーマット/出力を示すために、1つの例を提供する。 | 🖋️ 入力 + 例 → 新しい入力 |
| フューショット (Few-Shot) | パターンを示すために、複数の例を提供する。 | 🎓 3〜5個の多様な例を使用する。解析や分類などに役立つ。 |
| システムプロンプティング (System Prompting) | 高レベルのタスク目標と出力指示を設定する。 | 🛠️ 「回答はJSONで返してください。ラベルはすべて大文字を使用してください。」 |
| ロールプロンプティング (Role Prompting) | モデルにペルソナや役割を割り当てる。 | 🎭 「旅行ガイドとして振る舞ってください。私は東京にいます。」 |
| コンテキストプロンプティング (Contextual Prompting) | 出力を誘導するために、関連する背景情報を提供する。 | 📜 「あなたはレトロゲームのブログ記事を書いています。」 |
| ステップバックプロンプティング (Step-Back Prompting) | まず一般的な質問を投げかけ、次に具体的な問題を解決する。 | 🔄 関連するテーマを抽出 → それをコンテキストとして使用 → 最終的な質問をする |
| 思考の連鎖 (Chain of Thought (CoT)) | モデルにステップバイステップで考えるように指示する。推論能力を向上させる。 | 🤔 「ステップバイステップで考えましょう。」 |
| 自己整合性 (Self-Consistency) | 複数のCoTを生成し、最も一般的な回答を選択する。 | 🗳️ 同じCoTプロンプトを複数回実行し、多数決で決定する。 |
| 思考のツリー (Tree of Thoughts (ToT)) | より複雑な問題に対して、複数の推論パスを並行して探索する。 | 🌳 LLMが意思決定ツリーのように異なるパスを探索する。 |
| ReAct (Reason & Act) | 推論と行動を組み合わせる。モデルが決定し、行動し(例:ツール/API経由)、観察し、反復する。 | 🤖 思考 → 行動 → 観察 → 思考 |
| 自動プロンプティング (Automatic Prompting) | LLMを使用してプロンプトのバリアントを自動的に生成し、最適なものを評価する。 | 💡 「『小さなメタリカのTシャツを注文する』という言い方を10通り生成してください。」 |
⚙️ LLM出力設定の要点
| 設定オプション (Config Option) | 機能 (What It Does) | 最適な使用例 (Best Use Cases) |
|---|---|---|
| 最大トークン長 (Max Token Length) | トークン数によって応答サイズを制限する。 | 📦 無制限の生成を防ぎ、コストと速度を制御する。 |
| 温度 (Temperature) | トークン選択のランダム性を制御する(0 = 決定論的)。 | 🎯 正確な回答(例:数学/コード)には0、創造性が必要な場合は0.7以上。 |
| Top-Kサンプリング (Top-K Sampling) | 確率の高い上位K個のトークンから次のトークンを選択する。 | 🎨 Kが大きいほど多様な出力になる。K=1は貪欲法(Greedy Decoding)。 |
| Top-Pサンプリング (Top-P Sampling) | 累積確率がP以上の最小限のトークンセットから選択する。 | 💡 Top-P約0.9〜0.95で品質と多様性のバランスが取れる。 |
🔁 これらの設定がどのように相互作用するか
| もし設定した場合... (If You Set...) | その結果... (Then...) |
|---|---|
temperature = 0 |
Top-K / Top-P は無視される。常に最も確率の高いトークンが選択される。 |
top-k = 1 |
貪欲法(Greedy Decoding)のようになる。Temperature / Top-P は関係なくなる。 |
top-p = 0 |
最も確率の高いトークンのみが考慮される。 |
高いtemperature (例: >1) |
Top-K / Top-P が支配的になる。トークンのサンプリングがよりランダムになる。 |
✅ 初期設定チートシート
| 目標 (Goal) | Temp | Top-P | Top-K | 注記 (Notes) |
|---|---|---|---|---|
| 🧠 正確な回答 (Precise Answer) | 0 | 任意 | 任意 | ロジック/数学の問題、決定論的な出力向け |
| 🛠️ 半創造的 (Semi-Creative) | 0.2 | 0.95 | 30 | バランスの取れた、情報量のある出力 |
| 🎨 高度な創造性 (Highly Creative) | 0.9 | 0.99 | 40 | 物語、アイデア、執筆向け |
Discussion