В продакшене у нас работает агент, который разбирает звонки отдела продаж. Из каждого диалога он вытягивает сумму сделки - обычное числовое поле, ничего сложного. Но есть и вторая часть работы: если клиент сомневается, агент должен подсказать менеджеру, как лучше действовать дальше. Здесь уже без понимания контекста не обойтись. Когда я обновлял модели, снова возник практический вопрос: где действительно имеет смысл включать «режим рассуждения», а где это только зря тратит ресурсы. Чтобы не гадать, я решил проверить всё на данных. Провёл серию замеров - в итоге оказалось, что прошлые опасения насчёт 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 только там, где он действительно полезен, и фильтруем всё остальное.
Теперь агент рассуждает только тогда, когда это нужно по задаче. На простых полях работает быстро и лаконично, а при сложных вопросах подключает анализ и объяснение. В итоге и точность выросла, и поток данных стал предсказуемее.
