88API88API
User GuideAI ApplicationsAPI ReferenceHelp & Support
Chat

Format de discussion de raisonnement Deepseek (contenu de raisonnement)

📝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/completions

Mé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_KEY

$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 options
  • message: Objet de message contenant le rôle, le contenu du raisonnement et la réponse finale
  • role: Rôle, la valeur est "assistant"
  • reasoning_content: Contenu de chaîne de pensée
  • content: Contenu de la réponse finale
  • finish_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'invite
  • completion_tokens: Nombre de jetons utilisés pour la réalisation
  • total_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:

Diagramme de concaténation du contexte de raisonnement Deepseek

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
)