2026-04-15
Utiliser DeepSeek V4 en Python : du zéro à la prod
DeepSeek V4 expose une API compatible OpenAI, donc en Python on ne change pas de SDK : le paquet openai officiel fonctionne tel quel, il suffit de pointer base_url vers DeepSeek et de changer la clé. Ce guide couvre installation, premier chat completion, streaming, function calling et contrôle du coût par tokens à l'échelle.
1. Installer le SDK et configurer la clé
Pas de paquet DeepSeek spécifique. Le SDK openai Python parle l'endpoint DeepSeek sans modification. Stockez la clé dans une variable d'environnement, jamais en dur dans le code.
Récupérez une clé sur la console officielle ou via /pricing (même API, moins cher). Exposez-la comme DEEPSEEK_API_KEY.
pip install "openai>=1.40.0" python-dotenv
echo "DEEPSEEK_API_KEY=sk-..." >> .env2. Premier chat completion
Créez le client OpenAI avec base_url pointant sur DeepSeek. chat.completions.create est identique à OpenAI ; seul le nom du modèle change : deepseek-chat pour l'usage général, deepseek-reasoner pour du raisonnement poussé.
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. Streaming pour des interfaces réactives
Dans un chat, un CLI ou une boucle d'agent, vous voulez voir les tokens apparaître au fil de l'eau. Passez stream=True et itérez sur les chunks — chaque chunk est un delta compatible OpenAI.
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)
V4 gère le tool use façon OpenAI : vous déclarez un JSON Schema, le modèle décide quand appeler, vous exécutez et renvoyez le résultat au tour suivant. C'est nettement plus stable qu'en V3.
Validez toujours les arguments retournés par le modèle avant d'exécuter — traitez-les comme de l'entrée non fiable.
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. Maîtriser le coût
Tokens d'entrée et de sortie facturés séparément, sortie environ 2×. Le system prompt et l'historique complet comptent en entrée, donc les longues conversations grossissent vite la facture.
Trois bonnes pratiques : system prompt court et stable (cacheable), résumer les tours anciens au-delà de ~6k tokens, plafonner max_tokens. En volume, /pricing propose des clés officielles à tarif réduit.
FAQ
Besoin d'un SDK DeepSeek dédié ?
Non. Le paquet openai fonctionne, tout comme LangChain, LlamaIndex ou Instructor.
deepseek-chat ou deepseek-reasoner ?
Commencez avec deepseek-chat, basculez sur deepseek-reasoner pour math, logique stricte ou longue chaîne de raisonnement.
Asynchrone ?
AsyncOpenAI à la place de OpenAI, le reste ne bouge pas.
Où trouver une clé moins chère ?
/pricing propose des clés officielles avec remise.
Python + DeepSeek V4 est la voie la plus courte vers un stack LLM en production en 2026 : le SDK que vous connaissez, une qualité au niveau de GPT-4o et un prix compatible avec les vrais projets.