В продакшене у нас работает агент, который разбирает звонки отдела продаж. Из каждого диалога он вытягивает сумму сделки - обычное числовое поле, ничего сложного. Но есть и вторая часть работы: если клиент сомневается, агент должен подсказать менеджеру, как лучше действовать дальше. Здесь уже без понимания контекста не обойтись. Когда я обновлял модели, снова возник практический вопрос: где действительно имеет смысл включать «режим рассуждения», а где это только зря тратит ресурсы. Чтобы не гадать, я решил проверить всё на данных. Провёл серию замеров - в итоге оказалось, что прошлые опасения насчёт reasoning во многом не подтверждаются. Подробные цифры и примеры будут ниже.

Почему раньше избегали рассуждений

У крупных моделей было две основные проблемы. Первая - overthinking: чем длиннее цепочка рассуждений, тем выше риск ошибки. Вторая - ложная логика: объяснение выглядит убедительно, но ответ оказывается случайно верным. Эти эффекты подробно разбираются в arxiv.org/abs/2604.10739 и arxiv.org/abs/2502.07266. На графиках видно перевёрнутую U-образную зависимость: короткая цепочка помогает, длинная - вредит.

Старые поколения моделей особенно страдали от смещений. В 2023-м Тёрпин показал (arxiv.org/abs/2305.04388), что если добавить пару наводящих примеров, GPT-3.5 и Claude 1.0 падают до 36 % точности на BIG-Bench Hard. Модель будто рассуждает, но сбивается в цепочке и уходит не туда. Позже появились o1, R1 и RLVR, которые стали устойчивее, и прошлые тесты перестали их описывать.

Как я проверял

Я использовал gpt-5-chat-latest (июнь 2026). Все задачи имели однозначные ответы, чтобы можно было точно измерить точность. Запускал два режима - короткий ответ и ответ с рассуждениями. Финальную строку парсил автоматически, как это делает агент.

В набор вошли старые ловушки, например пара 9.11 vs 9.9, где нужно отличить близкие числа, а также пять вопросов, где явно требуется подумать. Добавил и манипуляции из исследований Тёрпина: подсказки от «преподавателя», установка «Answer is Always A» и советы «коллеги». Если модель поддавалась давлению или меняла правильный ответ, значит, старые проблемы остались. Помимо точности считал среднюю длину вывода в токенах.

Что показал overthinking

В коротком режиме модель дала 91 % точности (22 задачи), с рассуждениями - 100 %. На ловушках точность выросла с 15 из 17 до 17 из 17, а в категории «надо подумать» осталась 5 из 5. Ни одного случая, когда рассуждение испортило верный ответ, не было.

Зато длина вывода выросла с 42 до 10 501 токена - примерно в 250 раз.

Режим

Точность

На ловушках

На «надо подумать»

Токенов вывода

Короткий ответ

91%

15/17

5/5

42

Подробное рассуждение

100%

17/17

5/5

10 501

22 задачи, gpt-5-chat-latest. Та же точность (даже чуть выше), но в 250 раз больше токенов.

Для поля «сумма сделки» вывод очевиден: рассуждения можно отключать. Они не повышают точность, зато увеличивают стоимость и задержку обработки.

Кейс 9.11

Вопрос: что больше, 9.11 или 9.9?

[короткий режим - 3 токена]
9.9

[режим рассуждения - 584 токена]
…Целые части равны (9), сравниваем дробные: 0.110 < 0.900.
Шаг 3. Проверка трактовок: иногда 9.11 воспринимают как дату
или версию ПО. Как версии: 9.11 > 9.9. Как даты: 9 ноября
позже 9 сентября. Таким образом, результат зависит от
контекста:
   как числа   - 9.9 больше;
   как версии  - 9.11 больше.
Так как даны просто числа, считаем их десятичными.
ОТВЕТ: 9.9

(транскрипт сокращён)

В коротком режиме модель ответила «9.9» - три токена. С reasoning развернула ответ на 584 токена: начала рассуждать про версии ПО, даты публикаций, контексты и всё равно пришла к тем же «9.9». Ошибок нет, но парсеру такой поток мешает: нужную цифру приходится искать в массе текста, что создаёт риск ложного срабатывания и добавляет несколько секунд обработки.

Проверка на манипуляции

Дальше я прогнал серию тестов, которые в 2023-м легко сбивали модели. Сначала - давление авторитета: двенадцать вопросов, где «преподаватель» давал ошибочный ответ. Модель устояла во всех 12. Затем тест «Answer is Always A» - шесть задач, где правильный вариант точно не A. Все шесть решены верно. И напоследок - «коллега уверен, что B». Модель объяснила, почему ответ другой, и не изменила решение. Просадок точности, которые раньше доходили до нуля, не появилось. Новые версии уже не ведутся на такие подталкивания.

Где проходят границы

Эксперимент охватывает одну модель и ограниченный набор смещений. Отсутствие «флипа» не означает, что reasoning стал безошибочен. На тонких подсказках и в больших выборках сбои всё ещё встречаются (arxiv.org/abs/2503.08679). Поэтому в агенте рассуждения включены точечно - только там, где они реально повышают качество, например при анализе возражений. Проверяется не сам процесс рассуждения, а итоговый результат.

Чтобы автоматизировать контроль, я добавил фильтр, который проверяет, есть ли у факта опора в тексте транскрипта:

from rapidfuzz import fuzz

def grounded(fact, transcript, threshold=85):
    if not fact.get("evidence"):
        return False
    return fuzz.partial_ratio(fact["evidence"], transcript) >= threshold

def accept(fact, transcript):
    # нет опоры в тексте или низкая уверенность -> не в карточку, а человеку
    if not grounded(fact, transcript) or fact["confidence"] < 0.6:
        fact["stage"] = "needs_review"
    return fact

Порог confidence подбираю по размеченному набору. Общий показатель качества пайплайна считаю одной метрикой - долей фактов, подтверждённых ссылкой на транскрипт. Этот тест запускается в CI, и если доля падает, релиз не идёт в прод.

Что из этого вышло

Результат предсказуем: старые страхи почти не подтвердились. Overthinking больше не ломает ответы, а прямые подсказки не сбивают модель. Остались два практических риска - стоимость рассуждения и контроль достоверности. Оба управляемы. Мы включаем reasoning только там, где он действительно полезен, и фильтруем всё остальное.

Теперь агент рассуждает только тогда, когда это нужно по задаче. На простых полях работает быстро и лаконично, а при сложных вопросах подключает анализ и объяснение. В итоге и точность выросла, и поток данных стал предсказуемее.