DeepSeek отвечает один раз, а затем выдаёт 400: проверьте историю reasoning_content

cybercobra

Administrator
Команда форума
Регистрация
6 Авг 2025
Сообщения
912
Реакции
1
Баллы
777
Веб-сайт
cybercobra.ru
deepseek-thinking-history-tools-400.jpg


Если первый запрос к DeepSeek проходит, а следующий возвращает ошибку про reasoning_content, проверяйте не ключ, а то, какую историю отправляет приложение. Важная развилка: передаёте ли вы tools, параметр с описаниями доступных модели инструментов.

Совет «всегда удаляйте рассуждения из истории» больше не подходит ко всем сценариям.

Проверьте сериализацию: то, как сохранённый диалог превращается в следующий запрос. Клиент может показать ответ пользователю, но потерять поле рассуждений при сохранении или повторной отправке.

Что сейчас требует API​


По документации Thinking Mode, reasoning_content и content приходят отдельными полями. Первое содержит вывод режима рассуждения, второе предназначено для ответа. Дальнейшее обращение с ними зависит от запроса:
  • Без tools возвращать reasoning_content необязательно. Даже переданное поле сервер игнорирует и не добавляет в контекст.
  • С tools нужно полностью передавать reasoning_content предыдущих ходов, включая ходы без фактического вызова инструмента. Потеря поля может привести к 400.
То есть важно наличие tools в запросе, а не только значка инструмента в интерфейсе. Старую памятку для другой модели нельзя автоматически переносить на текущий API.

Как проверить интеграцию​


  1. Сохраните обезличенные структуры первого ответа и следующего запроса. Сравните сообщения роли assistant: сохранились ли ответ content, рассуждения reasoning_content и вызовы инструментов tool_calls. Ключи и рабочие документы в публичный отчёт не включайте.
  2. Проверьте результат каждого инструмента. Его tool_call_id связывает результат с вызовом и является обязательным полем схемы Chat Completions. При потоковой выдаче собирайте reasoning_content и content отдельно, а не только видимый ответ.
  3. Проверьте исправленный клиент в новом коротком разговоре, затем повторите сценарий после перезапуска приложения. Поле может переживать один запрос в памяти, но исчезать при сохранении диалога.

Потерянные данные не восстановятся сами. Если старое reasoning_content уже потеряно, не подставляйте выдуманный текст ради прохождения проверки.

Обновление клиента не возвращает отсутствующие данные задним числом.

Это разбор текущего протокола, а не результат собственного испытания расширения. Проверено 10 ноября 2026 года.
 
Последнее редактирование:
Назад
Сверху Снизу

Экосистема проектов TeleCobra

CyberCobra.ru — форум TeleCobra.com — софт для Telegram TeleCobra.ru — экосистема CyberMindBot — нейрокомментинг Spellbook Academy — AI обучение