TGViewer
Dimension AI | Dmitry Sirakov Dimension AI | Dmitry Sirakov @dimension_ai · 1.9K subscribers
Post #206 2.69K
Как на самом деле работает Thinking Mode (Interleaved vs Preserved thinking) и как применять в агентных системах?

Мы, как и наверное большинство разрабов, привыкли, что всякие думающие квены очень простые - в инференсе ты указываешь параметр парсинга, а сообщения потом собираешь в стандртном порядке согласно messages и ничего лишнего. Но в GLM-4.5 (и ряд других SOTA-моделей, хотя у Minimax в sglang что-то не так с парсером) выкатили более умный ризонинг, которым можно управлять для решения различных задач (в том числе агентных в зависимости от их сложности)

Interleaved vs Preserved:

1. Interleaved Thinking (см. картинку 1): Режим по умолчанию. Модель думает перед ответом или перед вызовом инструмента (Tool Call). Но как только "мини-сессия" завершена и начинается новый запрос пользователя - промежуточный ризонинг «маскируется».

Зачем?
Экономим токены, Context Engineering, все дела. Идеально для простых тасок (зачем тянуть старый ризонинг, правда ведь?)

2. Preserved Thinking (см. картинку 2): Мысли сохраняются в истории сообщений всегда, на протяжении всего диалога

Зачем?
Сложная отладка, рефакторинг, нетривиальные задачи (например этап exploration в агентных системах)

Как пользоваться?
Что нужно, чтобы это заработало? Тем, кто держит инференс - просто выставить корректный парсер reasoning-токенов. А разработчикам - научиться правильно этим управлять.

Погнали разбираться!

Можно задуматься, воот, нужно писать отдельный класс, хранить диалоги, в нужный момент что-то подсовывать, писать логику на ифах. НО НЕТ. Это сделали уже за нас.

Логика «маскирования» ризонинга зашита прямо в Chat Template у GLM, который работает на стороне инференс-сервере (будь то Sglang / Vllm и тд).

Смотрим в официальный темплейт GLM-4.7:


{%- if ((clear_thinking is defined and not clear_thinking) or loop.index0 > ns.last_user_index) and reasoning_content -%}
{{ '<think>' + reasoning_content.strip() + '</think>'}}
{%- else -%}
{{ '</think>' }}
{%- endif -%}


Что тут происходит?
Параметр clear_thinking, который вы передаете в extra_body у клиента openAI (ну как ризонинг у гибридных моделей прокидываете), прокидывается прямо сюда в чат-темплейт.

1) Если clear_thinking: True (=Interleaved Thinking) -> шаблон попадает в else и не рендерит ризонинг в промпт для модели. Он просто ставит заглушку. Вы не платите за эти токены на входе. И не захламляете контекстное окно

2) Если clear_thinking: False (=Preserved Thinking) -> весь ризонинг учитывается, тратим больше токенов и решаем сложные задачи.

Причем можно разобрать это условие в чат-темплейте с loop, но я думаю вы и без меня поймете, что они просто предусмотрели corner-case.

TLDR:
1. Всегда сохраняете весь ризонинг, который вам присылает GLM и возвращаете его. А выбрать в каком режиме работать - "халявно" или "нужно потрудиться" - может выбрать например сам агент перед выполнением таски)
2. В API всегда отдавайте полную историю сообщений (если это нативно поддерживается в модели).
3. Управляйте режимом только через флаг clear_thinking, не делайте никаких костылей (если не задумано иначе)
4. Чат-темплейт делает бррр
5. Можно на самом деле подобное сделать и с qwen, просто класть ризонинг обратно в поле `content` и варьировать от сложности задачи - когда вам нужно видеть ризонинг, а когда нет. Единственное, новые qwen вряд ли такое видели и вряд ли это будет также производительно, но это решается тестами на вашей задаче.
  • ❤ 17
  • 👍 9
  • 🔥 7
More from @dimension_ai
  1. Feb 18, 2026Sebastian Raschka что-то долго рисует архитектуру нового Qwen3.5-397B-A17B Решил сделать э…
  2. Nov 22, 2025GigaChat 3 Ultra - успех или провал? [Часть 4/4] Lightning 🤔 Модель Lightning - тоже MoE.…
  3. Nov 22, 2025GigaChat 3 Ultra - успех или провал? [Часть 3/4] SFT 🥳😘 Очень люблю команду GigaChat. В…
  4. Nov 22, 2025GigaChat 3 Ultra - успех или провал? [Часть 2/4] Какой вывод из этого можно сделать? В как…
  5. Nov 22, 2025GigaChat 3 Ultra - успех или провал? [Часть 1/4] Команда GigaChat выкатила пост на Хабре п…
  6. Oct 27, 2025Очень качественный подход для генерации синтетических данных для FC. Примечательно, что им…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →