Сегодня мы выпускаем vMira 5.1, в составе которой появляется новая модель — vMira Thinking. Она больше не просто отвечает: пишет черновик рассуждения, проверяет собственные шаги и останавливается, когда сомневается. Рассуждение вслух — не функция, прикрученная сверху; это другой способ пользоваться vMira и другая модель тарификации.
За последние восемнадцать месяцев мы обучили наши модели разделять мышление и ответ. Внутри мы представляем процесс мышления как структурный след, а потом сворачиваем его в чистый ответ. Результат — короткая пауза перед каждым выводом, во время которой модель пишет черновик рассуждения, проверяет арифметику и противоречия и доводит финальный ответ. Эта пауза превращается в более полезные ответы, меньше ошибок в числах и в объяснения, которые можно проверять.
Интересный исследовательский вопрос был не в том, как заставить модель думать больше. Модели, которые думают больше, делать легко. Вопрос был в том, как сделать модель, которая знает, когда достаточно — которая не сжигает тысячу токенов рассуждений на вопрос, требующий десяти, и не сдаётся после пятидесяти на по-настоящему сложном. Сегодня поведение даёт сочетание трёх техник; четвёртая приземляется в следующий тренировочный запуск.
Как модель знает, когда остановиться
Три вещи отличают vMira Thinking от модели long-CoT, которая по умолчанию заполняет бюджет до конца. Первая — обучающие данные с учётом сложности: короткие следы рассуждений сопоставлены с лёгкими задачами, длинные — со сложными, поэтому модель учится, что краткость на простой задаче — положительный сигнал. Вторая — supervised fine-tuning встроил явный сигнал бюджета: модель видит свой бюджет рассуждений как токен в контексте и учится сжимать, когда бюджет жмёт. Третья — preference optimisation на этапе alignment заменён бюджет-осведомлённой целью RL: вознаграждает раннюю остановку, когда ответ уже верен, штрафует — когда нет. Совокупный эффект на наших внутренних оценках — около 67% сокращения токенов рассуждений при равной точности и сокращение долларовой стоимости типичной reasoning-нагрузки на две трети при том же качестве.
Доступно с сегодняшнего дня
vMira Thinking, в API доступная как mira-thinking, включена во все тарифы Plus, Pro и Teams без дополнительной подписочной платы. Тарификация по токенам: ₽150 за миллион входных токенов и ₽500 за миллион выходных, с надбавкой 50% к токенам, сгенерированным внутри следа рассуждений; за «лишние» рассуждения, оказавшиеся ненужными, плата не взимается — счётчик ведут токены, а не секунды.
import { vmira } from "vmira";
const result = await vmira.chat.create({
model: "mira-thinking",
reasoning: { effort: "medium" }, // low | medium | high
messages: [{ role: "user", content: "..." }],
});
console.log(result.reasoning.summary);
console.log(result.message.content);“Самое интересное не в том, что модель думает больше. А в том, что мы знаем, когда она думает недостаточно.”
Что дальше
Два дополнения приземляются в следующем тренировочном запуске. Первое — режим **глубокого рассуждения**, который тратит минуты, а не секунды, на сложные задачи: анализ контрактов, отладку много-файлового кода, ревью большой кодовой базы, черновики математических доказательств. Он отделён в отдельный параметр API, чтобы случайно не сработать на чат-запросе. Второе — оптимизации сервинга, ориентированные на длинные reasoning-нагрузки. Вместе они должны дать ещё кратный прирост пропускной способности на длинных reasoning-задачах. Если хотите ранний доступ к режиму глубокого рассуждения для корпоративного пилота — пишите.
Почему рассуждение — отдельная модель, а не флаг
Первая волна реализаций «рассуждения» — это шаблон системного промпта, прикрученный к существующей чат-модели: «думай по шагам, прежде чем ответить». Это работает частично: модель становится аккуратнее на математике и структурных задачах, чуть реже выдаёт уверенно неправильную арифметику. Но затраты растут линейно по шаблону, многословность одинакова и на одношаговом вопросе, и на двадцатишаговом доказательстве, и нет чистого способа отделить, что модель думала, от того, что она в итоге решила. Мы пошли другим путём. vMira Thinking — отдельно пост-обученная модель: структурный след мышления как первоклассный вывод, бюджет, вшитый в формат входа, и отдельный этап alignment'а, где функция вознаграждения форму сделана именно вокруг компромисса «стоимость–качество» рассуждений. Пользователю — одна ручка `reasoning.effort`, остальное модель решает сама.
Внутри обучающих данных рассуждения
Reasoning-данные собраны из трёх источников. Длинные русскоязычные chain-of-thought-следы: пошаговые объяснения задач по физике и химии, структурный юридический разбор, олимпиадные задачи по программированию с альтернативными подходами, рассмотренными и отброшенными прямо в следе. Олимпиадная математика с курированными решениями: модель учится форме аккуратного доказательства, а не только арифметике. Длинные CoT-следы, дистиллированные из существенно более крупной фронтирной модели, дедуплицированные и отфильтрованные по качеству. Каждый пример снабжён метаданными о сложности — модель учится тому, что короткий ответ верен на лёгкой задаче, а длинный — на сложной, а не наоборот. Сочетание сложностно-осведомлённого курирования и сигнала бюджета во время обучения — то, что даёт модели лаконичность, которой не хватает другим reasoning-системам.
Встроенный сигнал бюджета: как модель «видит», сколько может думать
Каждый пример supervised fine-tuning'а префиксован токеном, сообщающим модели бюджет следа мышления. Модель учится, что это реальная инструкция, а не декорация: бюджет жмёт — она сжимает, бюджет свободен — расширяется. К концу обучения модель усваивает осведомлённый о цене стиль письма: короткие рассуждения, когда вопрос того стоит, длинные — когда вопрос требует, и аккуратный режим отказа («у меня нет бюджета это проверить») вместо уверенного неправильного ответа, когда ни то ни другое невозможно. На инференсе бюджет можно задавать явно на запрос или неявно через параметр `reasoning.effort`: `low` коллапсирует след до нескольких токенов, `medium` — по умолчанию, `high` широко открывает бюджет под задачи, которые этого требуют.
Бюджет-осведомлённый preference optimisation, а не ванильный
На этапе alignment мы заменили стандартное preference learning на RL-цель, явно учитывающую стоимость токенов мышления. Две траектории, дающие один и тот же правильный ответ — одна за 50 токенов, другая за 800 — считаются эквивалентными по качеству, но различными по стоимости, и политика учится предпочитать дешёвую-и-правильную. Важный нюанс: та же функция награды штрафует недо-мышление на сложных задачах — модель, которая сдаётся слишком рано на вопросе, который могла решить, корректируется на этапе RL. Совокупный эффект на наших внутренних оценках — около 67% сокращения средних токенов рассуждений при равной точности, плюс ощутимое улучшение на самой сложной полосе задач, где коротких CoT не хватает.
Что видит разработчик
На API блок `reasoning` стримится рядом с `message.content`. Можно отрисовать рассуждение как сворачиваемую панель «показать ход мысли», просуммировать вторым вызовом, скрыть полностью или пост-обработать, чтобы извлечь промежуточные значения. Сводку, которую мы делаем серверно, типично показывают конечным пользователям — она примерно в десять раз короче сырого следа. Структурный вывод (constraint на JSON-схему, которую вы передаёте) чисто композирует с мышлением: модель свободно размышляет, а потом приводит ответ к схеме. Tool-calling тоже композирует, с тонкостью: модель использует мышление, чтобы решить нужен ли инструмент, делает вызов и продолжает мышление с результатом инструмента в контексте. Каждая такая композиция покрыта стрим-событиями, поэтому UI может показывать прогресс без поллинга.
Честная цена фазы мышления
Платите за токены, никогда — за время. Фаза мышления, закончившая рано, обойдётся дешевле той, что потребовала трёх перезаписей, а вопрос, на котором модель решила не думать вовсе, тарифицируется как обычная генерация. Надбавка 50% применяется только к токенам, сгенерированным внутри следа мышления — обычно это самое дорогое меньшинство ответа. Типичный reasoning-запрос разбивается примерно на 10% входа, 60% мышления и 30% ответа; зажимая бюджет мышления, переносите рубли из середины этой раскладки вправо. Для высоконагруженных продакшенов осознанная цена effort'а означает, что небольшое снижение средней глубины даёт большое снижение стоимости без измеримой просадки качества на лёгкой полосе трафика.
Режимы отказа и как мы их ловим
Мышление добавляет новые поверхности отказа. Следы, которые крутятся на одном неверном предположении. Следы, противоречащие финальному ответу. Следы, придумывающие промежуточные факты, на которые ответ потом опирается. Ловим в трёх местах. На обучении — preference-данные размечались по явным критериям согласованности следа, поэтому модель училась предпочитать следы, чьи промежуточные утверждения переживают финальный ответ. На инференсе — след и ответ серверно сверяются между собой; при существенном расхождении модель просят переписать ответ под след (на практике редко). В публичной системе оценок отдельная категория — fidelity следа — на каждом релизе измеряет, действительно ли публикуемый след поддерживает ответ. Ниже порога — не выпускаем.
Композиция с остальной платформой
Рассуждение — не отдельная поверхность API; это параметр на том же chat-эндпоинте, который обслуживает все остальные продукты vMira. Тот же идентификатор модели, та же авторизация, та же политика лимитов, тот же аудит-лог. Существующий tool-calling-агент включает рассуждение одним параметром. Retrieval-augmented-система запускает рассуждение на этапе синтеза и отключает на этапе извлечения. Анализ длинного контекста тратит бюджет рассуждений один раз в начале сессии и переиспользует выводы в follow-up-репликах. Каждый промежуточный объект мы отдаём наружу, чтобы разработчики строили потоки, которых мы не предусмотрели; единственное, о чём платформа просит взамен, — не вставляйте след мышления обратно в модель дословно: модель уже знает, что думала, и показ следа дважды снижает качество follow-up-ответов.