2026-04-15
Python で DeepSeek V4 を使う:ゼロから本番まで
DeepSeek V4 は OpenAI 互換 API を提供しているので、Python 側は新しい SDK を覚える必要がありません。標準の openai パッケージで、base URL と API キーを切り替えるだけで動きます。本記事ではインストールから最初のチャット呼び出し、ストリーミング、function calling、そして大規模利用時の tokens コスト管理までを解説します。
1. SDK のインストールと API キーの設定
DeepSeek 専用パッケージは不要です。公式 openai Python SDK がそのまま使えます。API キーは必ず環境変数に置き、コードへのハードコードは避けてください。
API キーは DeepSeek 公式コンソールで発行するか、/pricing の割引ルートで同一スペックのものをより安く入手できます。DEEPSEEK_API_KEY としてシェルに登録しておきます。
pip install "openai>=1.40.0" python-dotenv
echo "DEEPSEEK_API_KEY=sk-..." >> .env2. 最初の chat completion 呼び出し
OpenAI クライアントを作り、base_url を DeepSeek のエンドポイントに向けます。chat.completions.create は OpenAI と完全に同じで、model 名だけ変えます。deepseek-chat が汎用、deepseek-reasoner が推論特化です。
import os
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://api.deepseek.com/v1",
)
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a concise technical assistant."},
{"role": "user", "content": "Write a Python one-liner to flatten a nested list."},
],
temperature=0.2,
)
print(response.choices[0].message.content)
print("tokens used:", response.usage.total_tokens)3. 低遅延な UI のためのストリーミング
チャット UI や CLI、エージェントループでは tokens を生成し次第表示したいはずです。stream=True を渡し、返ってくる chunk を逐次処理します。各 chunk は OpenAI 互換の delta オブジェクトです。
stream = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": "Explain MoE in 3 sentences."}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)4. Function calling(tool use)
DeepSeek V4 は OpenAI スタイルの tool use に対応しています。JSON Schema を宣言し、モデルが tool 呼び出しを判断、アプリ側で実行して結果を次のターンに返す、という流れです。V3 と比べて明らかに安定しました。
モデルが返してくる引数は必ずバリデーションしてから実行してください。ユーザー入力と同じ扱いです。
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
response = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": "Weather in Tokyo?"}],
tools=tools,
)
call = response.choices[0].message.tool_calls[0]
# call.function.name == "get_weather"
# call.function.arguments == '{"city":"Tokyo"}'5. tokens コストを抑えるコツ
DeepSeek は入力 tokens と出力 tokens を別々に課金します。出力は入力の約 2 倍。system prompt と会話履歴はすべて入力 tokens に加算されるので、長い会話でそのまま使い続けると請求額がすぐ膨らみます。
実用的な 3 つの工夫:system prompt を短く安定させる(キャッシュしやすい)、6k tokens を超えたら履歴を要約、max_tokens に上限をつける。量が多ければ /pricing の割引公式キーで単価をさらに下げられます。
FAQ
DeepSeek 専用の Python SDK は必要ですか?
不要です。標準 openai パッケージに加え、LangChain・LlamaIndex・Instructor など OpenAI 互換のライブラリもそのまま使えます。
deepseek-chat と deepseek-reasoner の使い分けは?
まずは deepseek-chat。数学・厳密なロジック・長い連鎖推論が必要になったら deepseek-reasoner に切り替えます。
非同期で呼びたい
AsyncOpenAI を使うだけで、API 形状は同じです。そのまま await できます。
割引のある API キーはどこで?
/pricing に公式仕様と同じ割引キーがあります。エンドポイントも context window も公式準拠です。
Python × DeepSeek V4 は、2026 年現在もっとも費用対効果の高い LLM スタックと言っていい組み合わせです。既存の SDK、GPT-4o に伍する品質、個人や小規模チームでも現実的に支払える価格帯。