TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Dimension AI | Dmitry Sirakov

21 Jan, 22:42

Открыть в Telegram Поделиться Пожаловаться

Как на самом деле работает 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
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot