Contents
DeepSeek の概要と主要モデル
DeepSeek は大規模言語モデル(LLM)を中心に、対話・コード支援など多様なユースケース向けのサービスを提供しています。本セクションでは、代表的な DeepSeek‑Chat と DeepSeek‑Coder の特徴と選び方を解説し、読者が自分のプロジェクトに最適なモデルを判断できるよう導きます。まずは各モデルの設計思想と利用シーンを把握し、次に比較表で違いを可視化します。
DeepSeek‑Chat の特徴
DeepSeek‑Chat は対話型タスク向けにチューニングされた LLM です。長文会話や自然な文章生成が得意で、多言語対応も標準装備されています。以下のポイントは、実際にプロダクトへ組み込む際の判断材料となります。
- 高い一貫性:会話履歴を保持しやすく、前後関係が崩れにくい
- 多言語対応:日本語・英語・中国語など主要言語で同等の性能を発揮
- 柔軟なカスタマイズ:system prompt・temperature などで出力スタイルを調整可能
活用の目安:対話や文章生成が主目的の場合、DeepSeek‑Chat がコストパフォーマンスと品質のバランスで最適です。
DeepSeek‑Coder の特徴
DeepSeek‑Coder はプログラミング支援に特化したモデルで、コード補完・デバッグ提案・ドキュメント生成など幅広いシーンで活躍します。技術者向けのプロダクトや自動化ツールのバックエンドとして利用する際のポイントは次の通りです。
- 多言語サポート:Python、JavaScript、Go、Rust など主要言語を網羅
- 長いコンテキスト保持:最大 32k トークン(約24k 単語)まで処理可能(公式ドキュメント[2024‑11‑版]参照)
- 安全性フィルタ:危険なコードや既知の脆弱性を自動で警告
活用の目安:コード生成・レビュー支援、CI/CD パイプラインへの組み込みには DeepSeek‑Coder が最適です。
モデル比較表
| 項目 | DeepSeek‑Chat | DeepSeek‑Coder |
|---|---|---|
| 主な利用シーン | 対話、文章生成、要約 | コード補完・デバッグ・ドキュメント生成 |
| 最大コンテキスト長 | 16 k トークン(≈12 k 単語) | 32 k トークン(≈24 k 単語) |
| 対応言語数 | 日本語+主要10言語 | Python、JS、Go、Rust 等多数 |
| 安全性フィルタ | 基本的な有害コンテンツ除去 | コード脆弱性・危険コード検知 |
| 推奨用途例 | カスタマーサポートチャットボット | AI ペアプログラマ、コードレビュー支援 |
プロンプトエンジニアリング入門
LLM を思い通りに動かす鍵は「プロンプト」の設計です。本章では、プロンプトの基本概念・構造・品質向上テクニックを初心者向けにまとめます。まずは「プロンプトとは何か」を定義し、その後で実践的な書き方へと進めます。
プロンプトとは何か
プロンプトは LLM に対して「何を入力し、どんな出力を期待するか」を指示するテキストです。構成要素は大きく 入力情報 と 期待出力の形 の 2 つに分けられます。
- 入力情報:質問内容・コンテキスト・コードスニペットなど、モデルが理解すべき素材
- 期待出力:回答形式(箇条書き・JSON・自然文)や制約条件(文字数・トーン)を明示
要点:具体的かつ限定的に指示するほど、モデルは目的通りの応答を生成しやすくなります。
基本構造と役割分担
一般的なプロンプトは以下の 3 部分で構成されます。各部分が果たす役割を把握しておくことが、品質向上への第一歩です。
- システム指示(System Prompt)
-
モデルの「役割」や「口調」「制約」を設定します。例:
You are a helpful AI assistant specialized in JavaScript. -
ユーザー入力(User Prompt)
-
実際に解決したい課題や質問を記述します。例:
次のコードを最適化してください。 -
アシスタント指示(Optional)
- 出力形式や評価基準など、追加で細かく指定したい場合に使用します。例:
回答は JSON 形式で出力し、キーは "suggestion" とすること。
実践ポイント:システム指示とユーザー入力を明確に分離すると、同一タスクでもプロンプトの組み替えだけで多様な結果が得られます。
DeepSeek 向けプロンプト最適化テクニック
DeepSeek の API では生成パラメータ(temperature・top_p)とシステム指示の書き方が出力品質に大きく影響します。ここでは、実務で即活用できる具体的なテクニックを紹介します。
システム指示の効果的な書き方
- 役割設定:
You are a senior JavaScript engineer who always writes clean code.のように専門領域と期待される振る舞いを明示 - トーン指定:
Answer in polite Japanese, each sentence ≤ 30 characters.と文字数や敬語表現を具体化 - 制約条件:
Do not import external libraries unless absolutely necessary.のように禁止事項も併記
コツ:1 行あたり 80 文字以内、全体で 3〜5 行程度にまとめると読み取りミスが減ります。
温度・トップP の推奨設定
| パラメータ | 用途例 | 推奨範囲 |
|---|---|---|
| temperature | 事実ベースの質問、コード生成 | 0.2 ~ 0.5(安定) |
| top_p | 多様なアイデア創出、クリエイティブ文章 | 0.85 ~ 0.95(バランス) |
- 低温度は正確性が重要なタスクに適し、高温度は発想の幅を広げたいシナリオで有効です。
- 初回は
temperature=0.3, top_p=0.9から試し、出力を観測して微調整してください。
トークン制御とコンテキスト長管理
DeepSeek の公式ドキュメント(2024‑11‑版)によると、Chat 系モデルは最大 16k トークン、Coder 系モデルは最大 32k トークン を処理できます。実運用では以下の手法でトークン消費を抑えることが重要です。
- 入力削減
-
不要なコメント・空行を除去し、情報密度を高める
-
要点抽出
-
長文は事前に要約してからプロンプトへ組み込む(要約モデルや手動でも可)
-
スライディングウィンドウ
- 会話履歴が長くなる場合、古いターンを削除し最新数ターンだけ保持するロジックを実装
運用ヒント:API 応答の
usage.total_tokensをログに残し、毎回のトークン残量をモニタリングするとコストと品質のバランスが取りやすくなります。
実践サンプルと API 呼び出し方法
ここでは DeepSeek の 無料 API キー取得手順 と、Python・cURL での基本呼び出し例を示します。コードはそのままコピーして動作確認が可能です。また、タスク別に最適化したプロンプト例も併せて掲載します。
API キー取得とエンドポイントの正式情報
- キー取得:DeepSeek 公式サイト(https://platform.deepseek.com)でアカウント作成後、「API Keys」ページから新規キーを生成
- エンドポイント:2024 年 11 月時点の公式エンドポイントは
https://api.deepseek.com/v1/chat/completions(※将来的に変更される可能性があるため、常に公式リファレンスを確認)
注意:環境変数
DEEPSEEK_API_KEYにキーを設定し、コード内で直接ハードコーディングしないことがベストプラクティスです。
Python での簡易呼び出しコード
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import os import requests # 環境変数から API キー取得(事前に設定しておく) API_KEY = os.getenv("DEEPSEEK_API_KEY") ENDPOINT = "https://api.deepseek.com/v1/chat/completions" def call_deepseek(messages, model="deepseek-chat", temperature=0.3, max_tokens=1024, top_p=0.9): """DeepSeek API を呼び出し、最初の選択肢のテキストを返す""" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } payload = { "model": model, "messages": messages, "temperature": temperature, "top_p": top_p, "max_tokens": max_tokens } resp = requests.post(ENDPOINT, headers=headers, json=payload) resp.raise_for_status() data = resp.json() # 使用トークン量をログに出力(コスト管理のため) usage = data.get("usage", {}) print(f"使用トークン: {usage.get('total_tokens', 'N/A')}") return data["choices"][0]["message"]["content"] # ---- サンプル呼び出し ------------------------------------------------- system_prompt = {"role": "system", "content": "あなたは丁寧な日本語で回答するAIです。"} user_prompt = {"role": "user", "content": "春の旅行プランを3日間で提案してください。"} result = call_deepseek([system_prompt, user_prompt]) print("\n--- 生成結果 ---\n", result) |
cURL での呼び出し例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
curl https://api.deepseek.com/v1/chat/completions \ -H "Authorization: Bearer ${DEEPSEEK_API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-chat", "messages": [ {"role":"system","content":"あなたは丁寧な日本語で回答するAIです。"}, {"role":"user","content":"春の旅行プランを3日間で提案してください。"} ], "temperature": 0.3, "top_p": 0.9, "max_tokens": 1024 }' |
タスク別プロンプト例
| タスク | システム指示(例) | ユーザー入力 | 想定出力 |
|---|---|---|---|
| 文章生成 | You are a travel consultant. Output in bullet points. |
春の3日間旅行プランを作成してください。 |
1️⃣ 日程・目的地・交通手段… |
| コード補完(Coder) | You are an expert Python developer. Return only the completed code block. |
def fibonacci(n): |
完全な関数実装が返る |
| 要約 | Summarize in ≤200 characters, focusing on key points. |
長文記事本文(省略) |
要点のみの短い文章 |
| 翻訳 | Translate from Japanese to natural English. |
このプロジェクトはオープンソースです。 |
"This project is open source." |
| 質問応答 | Prioritize factual accuracy. If uncertain, reply with "情報が見つかりません". |
DeepSeek の最新リリース日は? |
正式発表日と公式サイトへのリンク(テキスト) |
実践ヒント:タスクごとにシステム指示を変えるだけで、同一モデルでも期待通りの出力が得られます。
評価・改善サイクルと落とし穴回避
プロンプトやパラメータの変更は定量的に評価し、フィードバックループで継続的に改良することが成功の鍵です。本章では評価指標、改善フロー、よくある課題への対策、および公式リソースの活用方法をまとめます。
プロンプト評価指標
| 指標 | 説明 | 計測手段 |
|---|---|---|
| 正確性 (Accuracy) | 期待情報が含まれているか | 人手チェック、BLEU/ROUGE スコア |
| 一貫性 (Consistency) | 同一プロンプトでの出力ばらつき | 複数回実行し差分を比較 |
| コスト (Cost) | 使用トークンと料金 | usage.total_tokens の集計 |
運用ポイント:まず正確性をベースラインとして測定し、次に一貫性・コストの順で最適化を進めます。
改善フロー(A/B テスト中心)
- ベースライン取得
-
標準プロンプトで
usage.total_tokensと出力品質を記録 -
課題抽出
-
指標が基準値を下回る項目を特定(例:正確性 80% 未満)
-
プロンプト改変
-
システム指示の追加、temperature の調整、コンテキスト削減などを実施
-
A/B テスト
-
改変前後で同条件下に出力を比較し、統計的に有意か判定
-
自動化
- 評価スクリプトと CI パイプラインに組み込み、継続的インテグレーションの一部として実行
ベストプラクティス:小規模実験は手作業で高速回転させ、大規模になるほど自動化して人的コストを削減します。
よくある課題と具体的対策
| 課題 | 原因 | 対策 |
|---|---|---|
| 長文切れ | コンテキストトークンが上限超過 | 重要情報だけ要約、スライディングウィンドウで履歴を分割 |
| コンテキスト保持不足 | messages 配列の順序ミスやシステム指示の欠落 |
時系列で正しく配置し、システム指示は常に先頭に置く |
| 出力が曖昧 | temperature が高すぎる、指示が抽象的 | temperature を 0.2 ~ 0.3 に下げ、具体的なフォーマットを明記 |
| コスト増大 | 不要な長文や過剰な max_tokens 設定 |
必要最低限の max_tokens に設定し、前処理でトークン削減 |
診断フロー:課題が発生したら「設定」か「プロンプト」のどちらが原因かをまず切り分け、その後上表の対策を適用します。
公式リソースと情報取得の習慣化
- DeepSeek 公式ドキュメント:モデル概要、API リファレンス、利用規約(https://platform.deepseek.com/docs)
- GitHub リポジトリ:サンプルコード・SDK が公開(Python, Node.js 等)
- Discord / Slack コミュニティ:最新アップデートや実装例がリアルタイムで共有される場
推奨アクション:週 1 回は公式ドキュメントの「更新情報」ページをチェックし、変更点があれば自社コードベースに反映させましょう。
まとめ
この記事では DeepSeek の主要モデル紹介からプロンプトエンジニアリング、実装サンプル、評価・改善まで一連の流れを網羅しました。以下のステップで導入を進めることをおすすめします。
- 公式サイトで API キー取得 → 環境変数に設定
- Python(または cURL)でベースライン呼び出し → トークン使用量と正確性を記録
- タスク別システム指示を作成 → temperature・top_p を調整しながら最適化
- 評価指標(正確性・一貫性・コスト)で測定 → A/B テストで改良サイクルを回す
- 公式リソースを定期的にチェック → 変更点に迅速に対応
継続的な評価とプロンプトの改善を行うことで、DeepSeek を用いた AI アシスタントやコード支援ツールの品質は着実に向上します。ぜひ本稿の手順を試し、貴社プロダクトに最適な LLM 活用をご体感ください。
※ 本記事の情報は 2024 年 11 月時点の公式データに基づいています。API エンドポイントやトークン上限は将来的に変更される可能性があるため、最新情報は必ず公式ドキュメントをご確認ください。