TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Regional compilations Thematic compilations Платные каналы Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
  • Promotion
    Advertising through Yandex Business Advertising in channels through TGStat Agency Advertising on TGStat.ru website
Dimension AI | Dmitry Sirakov

21 Jan, 22:42

Open in Telegram Share Report

Как на самом деле работает 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 -%}
{{ '' + reasoning_content.strip() + ''}}
{%- else -%}
{{ '' }}
{%- 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 вряд ли такое видели и вряд ли это будет также производительно, но это решается тестами на вашей задаче.

1.5k 0 30 6 31
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot