DeepSeek プロンプトエンジニアリング完全ガイド
プロンプトエンジニアリングはDeepSeekを使いこなすための核となるスキルです。プロンプトのテクニックを習得して、DeepSeekの回答品質を一段階引き上げましょう。原理から実践まで、初心者から上級者まで、このガイドはすべてを網羅しています。
学習を始めるプロンプトの基本原則
プロンプトエンジニアリングの核となる原則を理解することは、高品質なプロンプトを作成するための第一歩です。このセクションは、完全な初心者から経験豊富な開発者まで、すべてのDeepSeekユーザーに適しています。
プロンプトエンジニアリングとは?
プロンプトエンジニアリングとは、入力テキスト(プロンプト)を慎重に設計することで、大規模言語モデル(LLM)がより正確で、関連性が高く、高品質な出力を生成するように導く実践です。簡単に言えば、良いプロンプトは良い回答を生むということです。
DeepSeekは、現在最も先進的な大規模言語モデルの一つとして、プロンプトに非常に敏感です。同じ質問でも、聞き方によって回答の質が大きく異なることがあります。プロンプトエンジニアリングは、最も効果的な質問方法を見つけるのに役立ちます。
例:
悪いプロンプト
「記事を書いて」
より良いプロンプト
「『AIがリモートワークをどう変えるか』というテーマで、800字のWeChat記事を書いてください。対象はビジネス管理者で、専門的だが堅苦しくないトーンで、具体的な事例を3つ含め、最後に実用的な提案を3つ挙げてください。」
LLMはプロンプトをどのように理解するか?
DeepSeekなどの大規模言語モデルは、本質的に「次のトークン予測器」です。テキストを入力すると、モデルはトレーニングデータから学習したパターンに基づいて、次に来る可能性が最も高い単語(トークン)を予測し、単語ごとに完全な回答を生成します。
これはつまり:
- コンテキストがすべて:プロンプトの質は、モデルの「推測」の方向に直接影響します。プロンプトが明確であればあるほど、モデルは正しい回答を生成しやすくなります。
- モデルは意図を「理解」しない:モデルはあなたの本当の考えを推測しません。プロンプトの文字通りの意味に基づいて次の単語を予測するだけです。だから、モデルが「当然知っているはず」と思い込まないでください。
- 注意機構:DeepSeekはTransformerアーキテクチャを使用しており、プロンプト内の各単語がモデルのコンテキストへの注意配分に影響します。キーワードの位置や強調の仕方が出力品質に影響します。
高品質なプロンプトの4つの原則
明確さ(Clarity)
何を求め、何を求めないかを明確に述べます。曖昧な表現は避けます。具体的な動詞や数量詞を使用します。例えば、「5つのポイントを挙げて」は「話してみて」よりも優れています。
コンテキストの提供(Context)
モデルに背景情報、対象読者、使用シーンを伝えます。コンテキストが豊かであればあるほど、回答は正確になります。例えば、「あなたはアシスタントです」ではなく、「あなたはシニアPythonエンジニアです」と伝えます。
形式の指定(Format)
出力形式を明確に指定します:JSON、表、Markdown、リスト、コードブロックなど。形式を制約することで、モデルの「自由な発揮」の余地が大幅に減り、出力がより制御可能になります。
反復と最適化(Iterate)
最初のプロンプトに満足できない?あきらめないでください。表現を調整し、詳細を追加し、別の角度から試してください。プロンプトエンジニアリングは本質的に反復プロセスであり、調整のたびに回答が期待に近づきます。
ロールプレイプロンプト(Role Prompting)
ロールプレイは最も効果的なプロンプトテクニックの1つです。明確な役割(Persona)を設定することで、DeepSeekに特定分野の専門家として回答させ、回答の質と専門性が飛躍的に向上します。
なぜロールプレイが効果的なのか?
DeepSeekはトレーニング中にさまざまな分野のテキストを大量に学習しています。プロンプトで役割(例:「シニアPythonエンジニア」)を設定すると、モデルはその役割に関連する知識パターンと言語スタイルを活性化し、回答がその分野の専門レベルに近づきます。
System Prompt(システムプロンプト)
System Promptはロールプレイの最も重要なツールです。API呼び出しでは、System Promptはmessagesの最初の要素として、会話全体のトーンを設定します。DeepSeek公式アプリやウェブ版もバックグラウンドでSystem Promptを使用しています。
ロールプレイプロンプトテンプレート
以下は汎用のロールプレイプロンプトテンプレートです。必要に応じて角括弧内の内容を置き換えてください:
実践例
思考連鎖プロンプト(Chain-of-Thought)
思考連鎖(Chain-of-Thought、略してCoT)は、モデルに段階的な推論プロセスを表示させるプロンプトテクニックです。数学、論理、プログラミングなど多段階の推論を必要とする複雑なタスクでは、CoTは回答の正確性を大幅に向上させます。
なぜ思考連鎖が効果的なのか?
大規模言語モデルは1回のフォワードパスで回答を生成します。複雑な推論タスクでは、最終回答に直接ジャンプするとエラーが発生しやすくなります。CoTはモデルに「段階的に考える」ことを促し、複雑な問題を複数の単純なサブ問題に分解します。各サブ問題はモデルが正しく回答しやすくなります。研究によると、CoTは数学的推論の正確性を20%〜40%向上させることができます。
比較効果:
CoTなし
「24 * 37 + 15 * 8 - 126 / 3 はいくらですか?」
推論プロセスなしで誤った答えを直接返す可能性がある
CoTあり
「24 * 37 + 15 * 8 - 126 / 3 を計算してください。計算プロセスを段階的に示してください。最初に掛け算、次に割り算、最後に足し算と引き算を行ってください。」
段階的な推論を示し、正確性が大幅に向上
CoTプロンプトテンプレート
実践例
CoTの変種:Zero-shot CoT
Zero-shot CoTは最も簡単な思考連鎖テクニックです。プロンプトの最後に「Let's think step by step(段階的に考えましょう)」または「段階的に推論してください」と追加するだけで、モデルの推論モードをトリガーできます。例を提供する必要はなく、ゼロコストで思考連鎖を活性化できます。
少数ショットプロンプティング
少数ショット学習(Few-shot Learning)は、プロンプトに1〜5個の例を提供し、モデルにあなたの形式、スタイル、期待を学習させる方法です。これは、モデルに特定の形式で出力させる最も効果的な方法の1つです。
なぜFew-shotは効果的なのか?
大規模言語モデルは、トレーニング中に「インコンテキスト学習」(In-Context Learning)の能力を習得しています。いくつかの例を提供すると、モデルは例からパターン(形式、スタイル、ロジック)を抽出し、それらのパターンを新しいタスクに適用します。Few-shotの利点は、モデルを微調整する必要がなく、プロンプトを変更するだけで出力動作を変えられることです。
Few-shotプロンプトテンプレート
実践例
Few-shotのベストプラクティス
- 例の数:1〜3個の例で通常十分です。多すぎると実際のタスクへの注意が薄れ、トークンも多く消費します。
- 例の質:例は正確で、標準的で、代表的なものであるべきです。誤った例はモデルを「悪く教える」ことになります。
- 例の多様性:タスクに複数のケースがある場合は、各ケースに1つずつ例を提供するようにしてください。例えば、感情分析ではポジティブ、ネガティブ、ニュートラルをカバーします。
- 形式の一貫性:すべての例の形式は完全に同一でなければなりません。そうでないとモデルが混乱します。
- 明確なラベル:「例1」「例2」や「入力」「出力」などのラベルを使用して、例とタスクを区別します。
構造化出力
DeepSeekに特定の形式でデータを出力させたい場合、構造化出力プロンプトが最適です。JSON、テーブル、CSV、カスタム形式のいずれでも、形式を明確に指定することで出力をすぐに利用できます。
JSON出力
JSONはAPI呼び出しやプログラム処理で最も一般的に使用される出力形式です。DeepSeekはJSON形式を非常にうまくサポートしており、プロンプトで明確に要求するだけで済みます。
テーブル出力
DeepSeekはMarkdownテーブルを生成でき、比較分析、データ整理、仕様書などに最適です。
カスタム形式出力
JSONやテーブル以外にも、任意のカスタム形式を指定できます。重要なのは明確な形式テンプレートを提供することです。
ステップバイステップ指示
複雑なタスクでは、1回のプロンプトで完璧な結果を得るのは難しいことがよくあります。ステップバイステップ指示は、複雑なタスクを複数のステップに分解し、各ステップを個別に確認してから次に進む、玉ねぎの皮をむくように段階的に進めます。
なぜステップバイステップ指示が効果的なのか?
複雑なタスクには通常、複数の側面(内容、構造、スタイル、形式など)が含まれます。モデルに一度にすべての要件を満たすよう求めると、あちらを立てればこちらが立たずになります。ステップバイステップ指示はタスクを独立したサブタスクに分解し、各ステップで1つの目標に集中し、最終的に完全な出力を組み立てます。
ステップバイステップ指示 vs 一括指示:
- 一括指示:「3000字のAI業界分析レポートを書いて」-- モデルは構造が混乱し、内容が空虚になる可能性があります
- ステップバイステップ指示:まずアウトラインを決める -> 確認後に序文を書く -> セクションごとに展開 -> 最後にまとめる -- 各ステップの品質が管理可能
ステップバイステップ指示のプロンプトテンプレート
実践例
ステップバイステップ指示のベストプラクティス
- 各ステップで1つの目標:各ステップではモデルに明確なタスクを1つだけ完了させ、複数の目標を詰め込まない。
- 確認を明示:ステップの説明に「確認後に続行」と明確に書き、モデルが一度にすべてを出力しないようにする。
- アウトラインを先に、詳細は後で:ライティングタスクでは、まずモデルにアウトラインを出させ、方向性と構造を確認してから本文を書くことで、方向性の逸脱を防ぐ。
- 迅速に修正:あるステップの出力が不満な場合、直接「このステップはちょっと違う。本当に欲しいのは...」と伝え、そのステップをやり直す。
DeepSeek R1 特別なプロンプトテクニック
DeepSeek R1 は推論強化モデルで、思考連鎖(CoT)機能を内蔵しています。V3 とは異なり、R1 は回答前に自動的に思考プロセスを表示します。R1 の特性に合わせて、プロンプト戦略を調整する必要があります。
R1 と V3 の核心的な違い
汎用対話モデル
日常会話、文章作成、翻訳、知識Q&Aに適しています。回答は直接的で、思考プロセスは表示されません。プロンプトテクニック:ロールプレイング、構造化出力、ステップバイステップ指示が最も効果的です。
推論強化モデル
数学、プログラミング、論理的推論で優れた性能を発揮します。回答前に思考プロセス(think タグ)を表示します。プロンプトテクニック:簡潔で直接的、CoT を過度に使用する必要はありません。
R1 プロンプトの核心原則:シンプルさが最優先
R1 は強力な推論能力を内蔵しているため、手動で CoT プロンプトを書く必要はありません。過剰なプロンプトは R1 の推論プロセスを妨げる可能性があります。R1 のプロンプト原則は次のとおりです:
- 直接質問する:「段階的に考えて」などの CoT プレフィックスは不要です。R1 は自動的に推論します。
- 要件を明確にする:何を望むかを明確に伝えますが、R1 に推論方法を教えないでください。
- System Prompt を避ける:R1 は System Prompt に対する応答が V3 ほど敏感ではありません。ロール情報は User Prompt に含めることをお勧めします。
- 温度パラメータ:R1 の推論では、より安定して正確な結果を得るために、低い温度(0.1〜0.3)を使用することをお勧めします。
R1 実践プロンプト例
R1 の think タグ
R1 の回答には、<think> と </think> タグで囲まれた思考プロセスが含まれます。API 呼び出しでは、これらのタグを解析して「思考プロセス」と「最終回答」を分離できます。
R1 vs V3:どちらをいつ使うか?
| タスクタイプ | 推奨モデル | 理由 |
|---|---|---|
| 数学計算、証明 | R1 | R1 の数学的推論能力は V3 をはるかに上回り、AIME スコアは 79.8 対 39.2 |
| 複雑なプログラミング、アルゴリズム | R1 | アルゴリズム推論とコードデバッグでは、R1 の方が正確 |
| 論理的推論、パズル | R1 | 多段階推論タスクでは、R1 の CoT 能力が自然に適している |
| 日常会話、文章作成 | V3 | V3 はより直接的で流暢な応答を提供し、思考プロセスを表示する必要がない |
| 翻訳、推敲 | V3 | V3 は言語処理が速く、出力が簡潔 |
| クリエイティブライティング | V3 | V3 は創造性と文才に優れ、R1 は理性的傾向 |
| 構造化出力、JSON | V3 | V3 はフォーマット制約への準拠性が高い |
シナリオ別プロンプトテンプレートライブラリ
20以上のすぐ使えるプロンプトテンプレート。ライティング、プログラミング、翻訳、分析、要約、ブレインストーミング、コードレビュー、デバッグ、ドキュメント、メール、レポートなど、頻度の高いシナリオをカバー。そのままコピーして使用し、必要に応じて変更できます。
ライティング
プログラミング
翻訳
分析
要約
ブレインストーミング
メールとレポート
学習と教育
ドキュメントと説明
よくある間違いと最適化
すべてのテクニックをマスターしても、プロンプトを書く際に間違いを犯す可能性があります。以下は最も一般的なプロンプトの間違いとその最適化方法で、問題を迅速に特定して修正するのに役立ちます。
間違い1:プロンプトが曖昧すぎる
| 悪い例 | 「AIについての記事を書いて」 |
| 問題 | テーマの角度、文字数、スタイル、対象読者が指定されておらず、モデルはランダムに生成するしかない |
| 最適化後 | 「一般向けに、『AIが医療診断をどう変えるか』というテーマで、800字の科学解説記事を書いてください。わかりやすく軽快なトーンで、実際の事例を2つ含め、最後に将来の展望を述べてください。」 |
間違い2:情報過多
| 悪い例 | 1つのプロンプトで、モデルに5つの異なるタスク(記事作成、翻訳、データ分析、コード生成、文書要約)を同時に実行させる |
| 問題 | 注意が分散し、各タスクの品質が低下する。モデルがタスク間を切り替えるため、出力品質が低下する |
| 最適化後 | 複数の独立した会話に分割するか、ステップバイステップの指示を使用し、一度に1つのコアタスクに集中する |
間違い3:コンテキストウィンドウの制限を無視する
| 間違い | 長い会話では、初期のコンテキストは徐々に「忘れられる」。DeepSeekローカルデプロイ版のデフォルトのコンテキストは128Kトークンですが、会話が長くなるほど、モデルは初期の情報への注意が低下します |
| 最適化 | 長い会話では、定期的に以前の重要な情報を「要約して振り返る」。重要な指示の前に「以前の議論を振り返りましょう...」を使用してコンテキストを再活性化します。必要に応じて新しい会話を開始します |
間違い4:モデルの「常識」に過度に依存する
| 間違い | モデルがあなたの特定のプロジェクト背景、社内用語、または最新のイベント情報を知っていると仮定する(トレーニングデータには締切日がある) |
| 最適化 | プロンプトに必要な背景情報を提供します。最新情報が必要な質問には、DeepSeekのWeb検索機能を使用します。プロジェクト固有のコンテンツについては、プロンプトで明確に指定します |
エラー5:R1のthink出力を無視する
| エラー | APIでR1を呼び出す際に、思考プロセスと最終回答を分離せずに、完全な出力(thinkタグを含む)を直接使用する |
| 最適化 | R1の出力を解析し、<think>と</think>の間の内容を思考プロセスとして抽出し、タグの後の内容を最終回答として扱います。ユーザー向けのシナリオでは、通常は最終回答のみを表示します。 |
プロンプトデバッグ方法論
DeepSeekの出力が期待どおりでない場合、以下の手順で体系的に調査・最適化します:
- プロンプトが明確か確認する:曖昧な言葉はないか?暗黙の前提はないか?具体的な詳細を追加する。
- コンテキストが不足していないか確認する:モデルは必要な背景情報を知っているか?役割設定や背景説明を追加する。
- 形式が明確か確認する:出力形式を指定しましたか?指定していない場合は、形式要件を追加する。
- 別の角度から試す:同じタスクでも、異なる言い回しや構造で再度質問する。
- Few-shotを使用する:期待する出力の例を1〜2個提供し、モデルに模倣させる。
- 複数のステップに分割する:一度の出力が不十分な場合は、段階的な指示に分割し、徐々に確認する。
- モデルを切り替える:V3とR1にはそれぞれ利点があります。現在のモデルの効果が悪い場合は、もう一方を試してください。
- 新しい会話を開始する:長い会話で蓄積されたコンテキストがモデルに干渉する可能性があります。新しい会話を開始してやり直してください。
反復最適化の例
以下は、プロンプトが「悪い」から「優れている」への反復最適化プロセスです:
DeepSeekプロンプトエンジニアリングFAQ
DeepSeek のその他の学習リソース
DeepSeek モデルの使い方
ゼロから始める、4つの方法で DeepSeek を手軽に使う。
DeepSeek Model 完全ガイド
技術アーキテクチャ、Benchmark 性能比較、モデル選定ガイド。
DeepSeek オープンソースモデル
6シリーズ、20以上のモデルの完全カタログ。最適なモデルを素早く見つける。
DeepSeek モデルのダウンロード
Ollama、Hugging Face、GitHub の3つのダウンロード方法を詳しく解説。
DeepSeek ローカルデプロイ
Ollama、Docker、vLLM によるデプロイ方法。シングルマシンからクラスターまで。
DeepSeek エコシステムツール
30以上の周辺ツール。WebUI、IDE プラグイン、Agent フレームワークを完全カバー。