Формат рассуждения Deepseek (Содержание рассуждений)
Официальная документация
📝 Введение
Deepseek-reasoner — это модель рассуждения, запущенная DeepSeek. Прежде чем выдать окончательный ответ, модель сначала выводит цепочку мыслей, чтобы повысить точность окончательного ответа. API открывает пользователям содержимое цепочки глубокого поиска и рассуждения для просмотра, отображения и обработки.
💡 Пример запроса
Базовый текстовый разговор ✅
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
}'Пример ответа:
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"model": "deepseek-reasoner",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"reasoning_content": "Дай мне подумать шаг за шагом:\n1. нам нужно сравнить9.11и9.8размер\n2. Оба числа десятичные,Мы можем напрямую сравнить\n3. 9.8 = 9.80\n4. 9.11 `< 9.80\n5. так9.8больше",
"content": "9.8 is greater than 9.11."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 10,
"completion_tokens": 15,
"total_tokens": 25
}
}Ответ в потоковом режиме ✅
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
}'Пример ответа потоковой передачи:
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"deepseek-reasoner","choices":[{"index":0,"delta":{"role":"assistant","reasoning_content":"разрешите"},"finish_reason":null}]}
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"deepseek-reasoner","choices":[{"index":0,"delta":{"reasoning_content":"шаг за шагом"},"finish_reason":null}]}
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"deepseek-reasoner","choices":[{"index":0,"delta":{"reasoning_content":"думать:"},"finish_reason":null}]}
// ... Больше контента для цепочки мышления ...
{"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}]}
// ... Больше окончательного ответа ...
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"deepseek-reasoner","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}📮 Запрос
Конечная точка
POST /v1/chat/completionsМетод аутентификации
Включите в заголовок запроса для аутентификации ключа API следующее:
Authorization: Bearer $API_KEYГде $DEEPSEEK_API_KEY — ваш ключ API.
Параметры тела запроса
$DEEPSEEK_API_KEY
- Тип: массив
- Требуется: Да
Список сообщений, содержащих беседу на данный момент. Обратите внимание: если вы передадите Reasoning_content в последовательности входных сообщений, API вернет ошибку 400.
$DEEPSEEK_API_KEY
- Тип: строка
- Требуется: Да
- Значение: глубокий поиск-разум
Идентификатор модели, который нужно использовать. В настоящее время поддерживается только deepseek-reasoner.
$DEEPSEEK_API_KEY
- Тип: целое число
- Требуется: Нет -По умолчанию: 4096
- Максимальное значение: 8192
Максимальная длина окончательного ответа (исключая вывод цепочки мыслей). Обратите внимание, что объем вывода Thought Chain может достигать 32 тысяч токенов.
$DEEPSEEK_API_KEY
- Тип: Логический
- Требуется: Нет -Значение по умолчанию: ложь
Использовать ли потоковые ответы.
Неподдерживаемые параметры
Следующие параметры в настоящее время не поддерживаются:
-температура
- топ_п
- присутствие_пенальти
- частота_пенальти
- логпробы
- top_logprobs
Примечание. Чтобы обеспечить совместимость с существующим программным обеспечением, установка параметров температуры, top_p, Presence_penalty и Frequency_penalty не приведет к ошибке, но не вступит в силу. Установка logprobs и top_logprobs сообщит об ошибке.
Поддерживаемые функции
- Завершение разговора
- Продолжение префикса разговора (бета)
Неподдерживаемые функции
- Вызов функции
- Вывод Json
- Завершение FIM (бета)
📥 Ответ
Успешный ответ
Возвращает объект завершения чата или, если запрос передается в потоковом режиме, потоковую последовательность объектов блока завершения чата.
$DEEPSEEK_API_KEY
- Тип: строка
- Описание: Уникальный идентификатор ответа.
$DEEPSEEK_API_KEY
- Тип: строка
- Описание: тип объекта, значение «chat.completion».
$DEEPSEEK_API_KEY
- Тип: целое число
- Описание: временная метка создания ответа.
$DEEPSEEK_API_KEY
- Тип: строка
- Описание: используемое название модели, значение «deepseek-reasoner».
$DEEPSEEK_API_KEY
- Тип: массив
- Описание: Содержит сгенерированные варианты ответа.
- Свойства:
$DEEPSEEK_API_KEY: индекс опции$DEEPSEEK_API_KEY: объект сообщения, содержащий роль, содержание цепочки мыслей и окончательный ответ.$DEEPSEEK_API_KEY: роль, значение «помощник».
reasoning_content: содержание цепочки мыслей.reasoning_content: содержание окончательного ответа.reasoning_content: Причина завершения.
reasoning_content
- Тип: Объект
- Описание: статистика использования токенов.
- Свойства:
reasoning_content: Подскажите количество используемых токенов.reasoning_content: количество жетонов, использованных для завершения.reasoning_content: общее количество токенов
📝 Инструкции по склейке контекста
Во время каждого раунда диалога модель выводит содержание цепочки мышления (reasoning_content) и окончательный ответ (content). В следующем раунде диалога вывод содержимого цепочки мышления в предыдущем раунде не будет включен в контекст, как показано на следующем рисунке:

Уведомление
Если вы передадите Reasoning_content в последовательности входных сообщений, API вернет 400. Ошибка. Поэтому перед запуском API удалите поле Reasoning_content в ответе API. Запрос, метод показан в примере использования ниже.
Пример использования:
from openai import OpenAI
client = OpenAI(api_key="<DeepSeek API Key>`", base_url="https://api.deepseek.com")
# первый раунд диалога
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
# Второй раунд диалога - монтируется только финальное содержание ответа
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
)Пример потокового ответа:
# первый раунд диалога
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
# Второй раунд диалога - монтируется только финальное содержание ответа
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
)