👏

プロンプトエンジニアリング知識カード

に公開

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