PythonでDeepSeek APIを使う方法:完全ガイド(2026年)
2026-05-05 — by Global API Team
PythonでDeepSeek APIを使う方法:完全ガイド(2026年)
DeepSeekのモデルは、GPT-4クラスのパフォーマンスをその何分の一かのコストで提供します — DeepSeek V4 Flashは $0.14/100万入力トークン、$0.28/100万出力トークン です。このガイドでは、PythonからDeepSeek APIを呼び出すために必要なすべてを説明します:インストール、認証、チャット補完、ストリーミングレスポンス、関数呼び出し、エラーハンドリング、そしてコスト最適化パターン。
要約:DeepSeekのAPIは完全にOpenAI互換です。
openaiをインストールし、base_urlをhttps://global-apis.com/v1に向けるだけで、既存のOpenAIコードが動作します — 74%安いコストで。
前提条件
- Python 3.9+
- DeepSeek APIキー — https://global-apis.com/register で無料(100クレジット、クレジットカード不要)で取得
- PythonとREST APIの基本的な知識
1. インストール
DeepSeekのAPIはOpenAI仕様に従っているため、公式のopenai Pythonパッケージを使用します — ベンダー固有のSDKは不要です。
pip install openai
以上です。基本的な使用には追加パッケージは必要ありません。
2. 認証とクライアント設定
オプションA:環境変数(推奨)
APIキーを環境変数として設定し、ソースファイルにハードコードしないようにします:
# Linux / macOS
export DEEPSEEK_API_KEY="a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
# Windows(PowerShell)
$env:DEEPSEEK_API_KEY = "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
次にクライアントを初期化します:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://global-apis.com/v1",
)
オプションB:インライン(クイックテストのみ)
from openai import OpenAI
client = OpenAI(
api_key="a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4", # 実際のキーに置き換え
base_url="https://global-apis.com/v1",
)
⚠️ 実際のAPIキーをバージョン管理にコミットしないでください。本番環境では環境変数またはシークレットマネージャーを使用してください。
3. 最初のチャット補完
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://global-apis.com/v1",
)
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "あなたは役立つPythonプログラミングアシスタントです。"},
{"role": "user", "content": "ネストされたリストをフラット化するPython関数を書いてください。"},
],
temperature=0.7,
max_tokens=512,
)
print(response.choices[0].message.content)
print(f"\n使用トークン — 入力: {response.usage.prompt_tokens}, 出力: {response.usage.completion_tokens}")
出力サンプル:
def flatten(nested_list):
result = []
for item in nested_list:
if isinstance(item, list):
result.extend(flatten(item))
else:
result.append(item)
return result
使用トークン — 入力: 38, 出力: 71
4. 適切なモデルの選択
Global APIは2つのDeepSeekモデルを公開しています:
| モデル | 最適な用途 | 入力価格 | 出力価格 |
|-------|----------|-------------|--------------|
| deepseek-chat | 日常的なタスク:要約、コーディングアシスト、Q&A、翻訳 | $0.14/Mトークン | $0.28/Mトークン |
| deepseek-reasoner | 複雑な推論:数学の証明、多段階ロジック、コードデバッグ | $0.55/Mトークン | $2.19/Mトークン |
経験則:deepseek-chatから始めましょう。タスクが真に多段階の論理推論を必要とする場合のみ deepseek-reasoner に切り替えます — 出力トークンあたり約8倍高価です。
# 複雑な推論タスクの場合
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=[
{"role": "user", "content": "√2が無理数であることを証明してください。"}
],
max_tokens=1024,
)
5. ストリーミングレスポンス
チャットボットUIやレイテンシが重要なシナリオでは、ストリーミングを使用してトークンが到着するたびに表示します:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://global-apis.com/v1",
)
stream = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "user", "content": "Pythonのasync/awaitを簡単な言葉で説明してください。"}
],
stream=True,
)
print("Response: ", end="", flush=True)
for chunk in stream:
delta = chunk.choices[0].delta
if delta.content is not None:
print(delta.content, end="", flush=True)
print() # 最後に改行
ストリーミングにより、最初のトークンまでの時間がほとんどの応答で約2秒から約200msに短縮され、インタラクティブなアプリケーションでの体感パフォーマンスが劇的に向上します。
6. マルチターン会話
ターンをまたいでコンテキストを維持するには、各リクエストで完全な会話履歴を渡します:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://global-apis.com/v1",
)
def chat(messages: list[dict]) -> str:
response = client.chat.completions.create(
model="deepseek-chat",
messages=messages,
temperature=0.7,
)
return response.choices[0].message.content
# 会話履歴を構築
history = [
{"role": "system", "content": "あなたは簡潔な技術アシスタントです。"}
]
user_inputs = [
"Pythonデコレータとは何ですか?",
"実用的な例を見せてもらえますか?",
"それをリトライデコレータとして動作させてください。",
]
for user_message in user_inputs:
history.append({"role": "user", "content": user_message})
reply = chat(history)
history.append({"role": "assistant", "content": reply})
print(f"ユーザー: {user_message}")
print(f"アシスタント: {reply}\n{'─' * 60}")
プロのヒント:長い会話でのコストを抑えるには、会話がトークン予算を超えたときに古いメッセージを history から削除します。システムプロンプトと直近のNターンを保持します。
7. 関数呼び出し(ツール使用)
DeepSeekはOpenAI互換の関数呼び出しをサポートしています。これにより、モデルがいつあなたのコードを呼び出すかを判断できます:
import json
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://global-apis.com/v1",
)
# 利用可能なツールを定義
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "都市の現在の天気を取得",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "都市名(例:'東京')"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "温度単位"
}
},
"required": ["city"],
},
},
}
]
def get_weather(city: str, unit: str = "celsius") -> dict:
"""スタブ — 実際の天気API呼び出しに置き換えてください。"""
return {"city": city, "temperature": 22, "unit": unit, "condition": "晴れ"}
messages = [{"role": "user", "content": "東京の天気はどうですか?"}]
# 最初のAPI呼び出し — モデルが関数を呼び出すかどうかを判断
response = client.chat.completions.create(
model="deepseek-chat",
messages=messages,
tools=tools,
tool_choice="auto",
)
message = response.choices[0].message
# モデルが関数を呼び出したいかどうかを確認
if message.tool_calls:
tool_call = message.tool_calls[0]
fn_name = tool_call.function.name
fn_args = json.loads(tool_call.function.arguments)
# 関数を実行
fn_result = get_weather(**fn_args)
# 関数の結果を追加して最終応答を取得
messages.append(message)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": json.dumps(fn_result),
})
final_response = client.chat.completions.create(
model="deepseek-chat",
messages=messages,
)
print(final_response.choices[0].message.content)
else:
print(message.content)
8. エラーハンドリングとリトライ
本番コードには堅牢なエラーハンドリングが必要です。指数バックオフ付きのパターンです:
import os
import time
import random
from openai import OpenAI, RateLimitError, APITimeoutError, APIConnectionError
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://global-apis.com/v1",
timeout=30.0,
)
def chat_with_retry(messages: list[dict], max_retries: int = 3, **kwargs) -> str:
"""一時的なエラー時に指数バックオフでAPIを呼び出す。"""
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="deepseek-chat",
messages=messages,
**kwargs,
)
return response.choices[0].message.content
except RateLimitError:
if attempt == max_retries - 1:
raise
wait = (2 ** attempt) + random.uniform(0, 1)
print(f"レート制限。{wait:.1f}秒後に再試行...")
time.sleep(wait)
except (APITimeoutError, APIConnectionError) as e:
if attempt == max_retries - 1:
raise
wait = (2 ** attempt) + random.uniform(0, 1)
print(f"ネットワークエラー: {e}。{wait:.1f}秒後に再試行...")
time.sleep(wait)
raise RuntimeError("最大リトライ回数を超えました") # ここには到達しないはず
# 使用例
result = chat_with_retry(
messages=[{"role": "user", "content": "PythonのGILについて1段落で要約してください。"}],
temperature=0.5,
max_tokens=200,
)
print(result)
9. トークン使用量とコストの追跡
DeepSeek V4 Flashの価格設定($0.14/M入力、$0.28/M出力)では、大量のワークロードでもわずかなコストです。コスト追跡の実装方法です:
import os
from dataclasses import dataclass, field
from openai import OpenAI
INPUT_COST_PER_TOKEN = 0.14 / 1_000_000 # 100万入力トークンあたり$0.14
OUTPUT_COST_PER_TOKEN = 0.28 / 1_000_000 # 100万出力トークンあたり$0.28
@dataclass
class UsageTracker:
total_input_tokens: int = 0
total_output_tokens: int = 0
request_count: int = 0
total_cost_usd: float = field(init=False, default=0.0)
def record(self, usage):
self.total_input_tokens += usage.prompt_tokens
self.total_output_tokens += usage.completion_tokens
self.request_count += 1
self.total_cost_usd = (
self.total_input_tokens * INPUT_COST_PER_TOKEN +
self.total_output_tokens * OUTPUT_COST_PER_TOKEN
)
def report(self):
print(f"リクエスト数: {self.request_count}")
print(f"入力トークン: {self.total_input_tokens:,}")
print(f"出力トークン: {self.total_output_tokens:,}")
print(f"推定コスト: ${self.total_cost_usd:.6f}")
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://global-apis.com/v1",
)
tracker = UsageTracker()
prompts = [
"リスト内包表記を説明してください。",
"Pythonのコンテキストマネージャとは何ですか?",
"ジェネレータとリストのどちらを使うべきですか?",
]
for prompt in prompts:
response = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": prompt}],
max_tokens=200,
)
tracker.record(response.usage)
tracker.report()
# 出力(概算):
# リクエスト数: 3
# 入力トークン: 51
# 出力トークン: 462
# 推定コスト: $0.000136
10. asyncio を使用した非同期処理
高スループットアプリケーションでは、非同期クライアントを使用して複数のリクエストを同時に実行します:
import asyncio
import os
from openai import AsyncOpenAI
async_client = AsyncOpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://global-apis.com/v1",
)
async def summarize(text: str) -> str:
response = await async_client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "以下を一文で要約してください。"},
{"role": "user", "content": text},
],
max_tokens=100,
)
return response.choices[0].message.content
async def main():
documents = [
"Pythonは1991年にGuido van Rossumによって作成されリリースされました...",
"機械学習は人工知能のサブセットで...",
"REST APIはHTTPメソッドを使用してリソースに対するCRUD操作を実行します...",
]
# すべてのリクエストを同時に実行
results = await asyncio.gather(*[summarize(doc) for doc in documents])
for doc, summary in zip(documents, results):
print(f"元のテキスト: {doc[:60]}...")
print(f"要約: {summary}\n")
asyncio.run(main())
3つのリクエストを同時に実行すると、合計レイテンシが約6秒(逐次)から約2秒(並列)に短縮されます。
11. コスト最適化のヒント
1. すべてのリクエストで max_tokens を設定する
max_tokensがないと、モデルは非常に長い応答を生成する可能性があります。妥当な上限を設定します:
# 悪い — 無制限の出力、予測不能なコスト
response = client.chat.completions.create(model="deepseek-chat", messages=[...])
# 良い — 500トークンに制限
response = client.chat.completions.create(model="deepseek-chat", messages=[...], max_tokens=500)
2. 会話履歴をトリミングする
マルチターン会話の各ターンは、完全なコンテキスト長で課金されます。約10ターン後、古いメッセージを要約します:
def trim_history(history: list[dict], max_turns: int = 6) -> list[dict]:
system = [m for m in history if m["role"] == "system"]
non_system = [m for m in history if m["role"] != "system"]
return system + non_system[-max_turns * 2:]
3. ほとんどのタスクに deepseek-chat を使用する
deepseek-reasoner は約8倍高価です。真に複雑な推論タスクのみをルーティングします:
def pick_model(prompt: str) -> str:
reasoning_keywords = {"証明", "導出", "最適化", "デバッグ", "段階的に分析"}
if any(kw in prompt.lower() for kw in reasoning_keywords):
return "deepseek-reasoner"
return "deepseek-chat"
4. 頻繁なプロンプトをキャッシュする
ユーザーが同じ質問を繰り返し行う場合、Redisやローカル辞書に応答をキャッシュします:
import hashlib, json
_cache: dict[str, str] = {}
def cached_chat(messages: list[dict]) -> str:
key = hashlib.md5(json.dumps(messages, sort_keys=True).encode()).hexdigest()
if key in _cache:
return _cache[key]
result = chat_with_retry(messages) # セクション8より
_cache[key] = result
return result
実世界のコスト見積もり
| ユースケース | 月間ボリューム | 推定コスト | |----------|---------------|----------------| | 社内Slackボット(短いQ&A) | 5万リクエスト / 1億トークン | ~$21/月 | | カスタマーサポートチャットボット | 20万リクエスト / 5億トークン | ~$98/月 | | コードレビューパイプライン(CI/CD) | 1万PR / 2億トークン | ~$42/月 | | 文書要約(RAG) | 100万文書 / 20億トークン | ~$420/月 |
同じボリュームでGPT-4o($2.50/M入力、$10/M出力)と比較すると:Slackボットだけで $330/月 — 15倍のコストになります。
失効せず月額サブスクリプションのないクレジットをお求めですか?Global APIクレジットパックをご確認ください。
クイックリファレンス
from openai import OpenAI
import os
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://global-apis.com/v1",
)
# チャット補完
r = client.chat.completions.create(
model="deepseek-chat", # または "deepseek-reasoner"
messages=[{"role": "user", "content": "こんにちは!"}],
temperature=0.7, # 0 = 決定論的、1 = 創造的
max_tokens=512,
stream=False,
)
print(r.choices[0].message.content)
print(r.usage.prompt_tokens, r.usage.completion_tokens)
| パラメータ | 値 | デフォルト |
|-----------|--------|---------|
| model | deepseek-chat, deepseek-reasoner | — |
| temperature | 0.0 – 2.0 | 1.0 |
| max_tokens | 1 – 8192 | モデル最大値 |
| stream | True / False | False |
| top_p | 0.0 – 1.0 | 1.0 |
FAQ
DeepSeek用の特別なSDKは必要ですか?
いいえ。DeepSeekのAPIはOpenAI互換です。pip install openaiだけで十分です。
コンテキストウィンドウのサイズは?
deepseek-chatは1リクエストあたり最大64Kトークン(入力+出力の合計)をサポートします。
APIにレート制限はありますか?
Global APIはアカウントごとのレート制限を適用します。高ボリュームのユースケースについては、お問い合わせください — カスタムのレート制限引き上げを提供しています。
LangChainやLlamaIndexをDeepSeekで使えますか?
はい。LangChainではopenai_api_base、LlamaIndexではopenai_base_urlをhttps://global-apis.com/v1に設定します。既存のチェーンは変更なしで動作します。
クレジットの仕組みは?
1クレジット = $0.01。DeepSeek V4 Flashは100万入力トークンあたり14クレジット、100万出力トークンあたり28クレジットです。クレジットは失効しません。
今日から始めましょう
これでPythonからDeepSeek APIを呼び出すために必要なすべて — 認証、チャット補完、ストリーミング、関数呼び出し、非同期処理、コスト追跡 — が揃いました。
無料で始める: https://global-apis.com/register — 100無料クレジット、クレジットカード不要。
価格を確認: https://global-apis.com/pricing — $19.99からのクレジットパック。
質問や問題がありましたら、ダッシュボードからメッセージをお送りください — 喜んでお手伝いします。
Related Articles
Start Building with Global API
Get 100 free credits on signup — no credit card required. Access 180+ AI models (DeepSeek, Qwen, Kimi, GLM, Doubao & more) with one OpenAI-compatible API key.
PayPal accepted (Visa, Mastercard, Amex). 5-minute setup.