Format de discussion de raisonnement Deepseek (contenu de raisonnement)
Documentation officielle
📝Présentation
Deepseek-reasoner est un modèle de raisonnement lancé par DeepSeek. Avant de générer la réponse finale, le modèle générera d'abord une chaîne de pensée (contenu de raisonnement) pour améliorer la précision de la réponse finale. L'API expose le contenu de la chaîne de pensée de Deepseek-reasoner que les utilisateurs peuvent visualiser, afficher ou distiller.
💡 Exemples de requêtes
Chat textuel de base ✅
curl https://api.deepseek.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "deepseek-reasoner",
"messages": [
{
"role": "user",
"content": "9.11 and 9.8, which is greater?"
}
],
"max_tokens": 4096
}'Response Example:
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"model": "deepseek-reasoner",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"reasoning_content": "Let me think step by step:\n1. We need to compare 9.11 and 9.8\n2. Both numbers are decimals, we can compare directly\n3. 9.8 = 9.80\n4. 9.11 `< 9.80\n5. So 9.8 is greater",
"content": "9.8 is greater than 9.11."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 10,
"completion_tokens": 15,
"total_tokens": 25
}
}Réponse en streaming ✅
curl https://api.deepseek.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "deepseek-reasoner",
"messages": [
{
"role": "user",
"content": "9.11 and 9.8, which is greater?"
}
],
"stream": true
}'Streaming Response Example:
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"deepseek-reasoner","choices":[{"index":0,"delta":{"role":"assistant","reasoning_content":"Let me"},"finish_reason":null}]}
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"deepseek-reasoner","choices":[{"index":0,"delta":{"reasoning_content":"think step by step"},"finish_reason":null}]}
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"deepseek-reasoner","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
// ... more reasoning content ...
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"deepseek-reasoner","choices":[{"index":0,"delta":{"content":"9.8"},"finish_reason":null}]}
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"deepseek-reasoner","choices":[{"index":0,"delta":{"content":" is greater"},"finish_reason":null}]}
// ... more final answer content ...
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"deepseek-reasoner","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}📮 Demande
Point de terminaison
POST /v1/chat/completionsMéthode d'authentification
Incluez les éléments suivants dans l'en-tête de la demande pour l'authentification par clé API:
Authorization: Bearer $API_KEYOù $DEEPSEEK_API_KEY est votre clé API.
Paramètres du corps de la requête
messages
- Type : Tableau
- Obligatoire : Oui
La liste des messages dans la conversation jusqu'à présent. Remarque: Si vous transmettez Reasoning_content dans la séquence des messages d'entrée, l'API renverra une erreur 400.
model
- Type : Chaîne
- Obligatoire : Oui
- Valeur: recherche profonde-raisonneur
L'ID du modèle à utiliser. Actuellement, seul le raisonneur Deepseek est pris en charge.
max_tokens
- Type : Entier
- Obligatoire: Non
- Par défaut : 4096 -Maximum : 8192
La longueur maximale de la réponse finale (hors contenu du raisonnement). Remarque: La sortie du contenu de raisonnement peut contenir jusqu'à 32 000 jetons.
stream
- Type: Booléen
- Obligatoire: Non
- Par défaut: faux
S'il faut utiliser la réponse en streaming.
Paramètres non pris en charge
Les paramètres suivants ne sont actuellement pas pris en charge:
- température
- top_p
- présence_penalty
- fréquence_pénalité
- problèmes de journalisation
- top_logprobs
Remarque: Pour des raisons de compatibilité avec les logiciels existants, le réglage de la température, de top_p, de présence_penalty et de Frequency_penalty ne provoquera pas d'erreur, mais ne prendra pas effet. La définition de logprobs ou top_logprobs provoquera une erreur.
Fonctionnalités prises en charge
- Achèvement du chat
- Suite du préfixe de chat (bêta)
Fonctionnalités non prises en charge
- Appel de fonction
- Sortie Json
- Achèvement FIM (bêta)
📥 Réponse
Réponse réussie
Renvoie un objet de fin de discussion. Si la demande est diffusée en continu, renvoie une séquence de diffusion en continu d'objets de bloc d'achèvement de discussion.
id
- Type : Chaîne
- Description : Identifiant unique de la réponse
object
- Type : Chaîne
- Description: Type d'objet, la valeur est "chat.completion"
created
- Type : Entier
- Description: horodatage de création de la réponse
model
- Type : Chaîne
- Description: nom du modèle utilisé, la valeur est "deepseek-reasoner"
choices
- Type : Tableau
- Description: contient les options de réponse générées
- Propriétés:
index: Indice des optionsmessage: Objet de message contenant le rôle, le contenu du raisonnement et la réponse finalerole: Rôle, la valeur est "assistant"reasoning_content: Contenu de chaîne de penséecontent: Contenu de la réponse finalefinish_reason: motif de fin
usage
- Type : Objet
- Description: statistiques d'utilisation des jetons
- Propriétés:
prompt_tokens: Nombre de jetons utilisés pour l'invitecompletion_tokens: Nombre de jetons utilisés pour la réalisationtotal_tokens: Nombre total de jetons
📝 Explication de la concaténation du contexte
À chaque cycle de conversation, le modèle génère le contenu du raisonnement (chaîne de pensée) et la réponse finale (contenu). Lors du prochain cycle de conversation, la sortie Reasoning_content du cycle précédent ne sera PAS concaténée dans le contexte, comme indiqué ci-dessous:

Remarque
Si vous transmettez Reasoning_content dans la séquence des messages d'entrée, l'API renvoie une erreur 400. Par conséquent, veuillez supprimer le champ Reasoning_content de la réponse de l'API avant de faire la prochaine requête API, comme indiqué dans l'utilisation exemple ci-dessous.
Exemple d'utilisation:
from openai import OpenAI
client = OpenAI(api_key="<DeepSeek API Key>`", base_url="https://api.deepseek.com")
# First round of conversation
messages = [{"role": "user", "content": "9.11 and 9.8, which is greater?"}]
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=messages
)
reasoning_content = response.choices[0].message.reasoning_content
content = response.choices[0].message.content
# Second round of conversation - only concatenate the final answer content
messages.append({'role': 'assistant', 'content': content})
messages.append({'role': 'user', 'content': "How many Rs are there in the word 'strawberry'?"})
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=messages
)Exemple de réponse en streaming:
# First round of conversation
messages = [{"role": "user", "content": "9.11 and 9.8, which is greater?"}]
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=messages,
stream=True
)
reasoning_content = ""
content = ""
for chunk in response:
if chunk.choices[0].delta.reasoning_content:
reasoning_content += chunk.choices[0].delta.reasoning_content
else:
content += chunk.choices[0].delta.content
# Second round of conversation - only concatenate the final answer content
messages.append({"role": "assistant", "content": content})
messages.append({'role': 'user', 'content': "How many Rs are there in the word 'strawberry'?"})
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=messages,
stream=True
)