TL;DR
Когда модель решает математику или сложную логику, язык, на котором она рассуждает, влияет на точность сильнее, чем язык самого вопроса. Задача на английском + инструкция думать на суахили → точность рушится в 10 раз. Та же задача на суахили + рассуждения на английском → модель справляется нормально. Это не очевидно: большинство думает, что главное — правильно сформулировать задачу. Оказывается, важнее — на каком языке течёт внутренняя цепочка шагов.
Проблема в том, что при рассуждении на "слабом" языке модель теряет промежуточные результаты — как если решать задачу и забывать записать вычисления. Она пропускает ключевые шаги, нарушает порядок зависимостей (использует результат раньше, чем его вычислила) и начинает зацикливаться.
Из этого вытекают два практических приёма. Formula-Retry — перед решением явно перечисли известные величины, формулы и связи, не раскрывая ответа. Это даёт модели структурный каркас, который удерживает её на правильном пути. Loop-Retry — если модель ходит по кругу, принудительно прерви и попроси начать заново с другого угла.
Схема метода
FORMULA-RETRY (один промпт):
ШАГ 1: Задай задачу + перечисли структуру
→ Известные величины: [список]
→ Формулы и зависимости: [список]
→ Цель: найти [X]
ШАГ 2: Попроси решить пошагово
→ Модель работает по каркасу, не теряет шаги
---
LOOP-RETRY (два промпта, если первый завис):
ПРОМПТ 1: Обычный запрос на решение
→ Наблюдаешь: модель повторяется / не даёт ответ
ПРОМПТ 2: Прерывание + перезапуск
→ "Ты повторяешь одни и те же шаги. Начни заново с другого подхода"
→ Модель меняет стратегию
Пример применения
Задача: Ты ведёшь юнит-экономику SaaS-продукта и хочешь проверить, при каком LTV окупается текущий CAC. Модель при первой попытке ходит по кругу и не даёт чёткого ответа.
Промпт (Formula-Retry):
Реши задачу по юнит-экономике.
Известные данные:
- CAC = 4 200 руб.
- Средний чек = 1 400 руб./мес.
- Churn rate = 8% в месяц
- Gross margin = 70%
Зависимости:
- Средний срок жизни клиента = 1 / Churn rate
- LTV = Средний чек × Средний срок жизни × Gross margin
- LTV/CAC ratio = LTV / CAC
Задача: вычисли LTV и LTV/CAC ratio.
Реши пошагово, используя эту структуру.
Не пропускай промежуточные результаты.
Промпт (Loop-Retry — если модель зависла):
Ты повторяешь одни и те же шаги, не двигаясь к ответу.
Остановись.
Начни решение заново, с другого подхода — начни с вычисления среднего срока жизни клиента.
Результат: С Formula-Retry модель пройдёт все промежуточные шаги по порядку — срок жизни → LTV → отношение к CAC — без пропусков и без ошибок из-за "забытых" величин. С Loop-Retry при зависании модель сбросит предыдущую стратегию и пойдёт по другому пути. В обоих случаях результат будет конкретным числом с объяснением каждого шага.
Почему это работает
Слабость LLM при рассуждении — в длинных вычислениях модель "теряет нить". Она генерирует текст токен за токеном и не удерживает все промежуточные результаты одновременно. При рассуждении на языке с меньшим количеством тренировочных данных (русский — терпимо, суахили — катастрофа) этот эффект многократно усиливается: структурные паттерны вычислений слабее закреплены, и модель начинает "изобретать" шаги вместо корректных.
Сильная сторона LLM — она отлично следует явной структуре. Если ты заранее выложил список известных величин и зависимостей, модель использует это как рельсы: каждый шаг опирается на предыдущий, не нужно держать всё "в оперативке".
Formula-Retry использует это: каркас из известных данных и формул убирает необходимость "вспоминать" структуру задачи на каждом шаге — она уже перед глазами. Loop-Retry работает иначе: явный сигнал о зависании переключает модель на генерацию с другой стартовой точки, разрывая паттерн повтора.
Рычаги управления: - Детализация каркаса → больше явных зависимостей = меньше пропусков на сложных задачах - Язык каркаса → попробуй дать формулы и величины на английском, задачу на русском — модели легче удерживать математическую структуру - Инструкция "не пропускай промежуточные результаты" → сигнализирует модели показывать каждый шаг, а не перепрыгивать
Шаблон промпта
Formula-Retry:
Реши {задачу}.
Известные данные:
- {величина_1} = {значение}
- {величина_2} = {значение}
- {величина_3} = {значение}
Зависимости и формулы:
- {промежуточный_результат_1} = {формула использует величины выше}
- {промежуточный_результат_2} = {формула использует предыдущие результаты}
- Цель: {что нужно найти}
Реши пошагово, используя эту структуру.
Не пропускай промежуточные вычисления.
Loop-Retry:
Ты повторяешь одни и те же шаги, не продвигаясь к ответу.
Остановись.
Начни решение заново с другого подхода — начни с {конкретный_шаг}.
Плейсхолдеры:
- {задачу} — формулировка вопроса
- {величина} / {значение} — все числа и данные из условия
- {формула} — явная зависимость между величинами
- {что нужно найти} — финальная цель
- {конкретный_шаг} — альтернативная точка входа в решение
🚀 Быстрый старт — вставь в чат:
Вот шаблон Formula-Retry для сложных вычислений.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит какие данные известны и что нужно найти — потому что для каркаса нужно явно разделить "вход" (известные величины) и "цель" (что ищем). Она возьмёт структуру и заполнит её под твою задачу.
Ограничения
⚠️ Только структурированные задачи: Formula-Retry не поможет там, где нет чёткой зависимости величин — творческие задачи, анализ субъективных данных, генерация текста.
⚠️ Нужно знать структуру заранее: Чтобы заполнить каркас, ты сам должен понимать задачу достаточно, чтобы выписать величины и формулы. Если не знаешь — каркас не составить.
⚠️ Loop-Retry не панацея: При системной ошибке в понимании задачи перезапуск даст другой неверный путь. Метод помогает при зависаниях, а не при принципиальном непонимании.
⚠️ Высокоресурсные языки почти не выигрывают: Для рассуждений на английском, французском, китайском, русском — эффект Formula-Retry заметен, но не драматичен. Главная польза — для языков с меньшим покрытием.
Как исследовали
Исследователи поставили хирургически чистый эксперимент: взяли одну и ту же задачу и подали её в четыре конфигурации — задача на английском + рассуждения на английском, задача на английском + рассуждения на целевом языке, задача на целевом + рассуждения на английском, всё на целевом. Это позволило разделить "не понял вопрос" от "не смог вывести цепочку шагов" — два разных источника ошибок, которые раньше сваливали в одну кучу.
Тестировали на трёх моделях семейства Qwen3 (от 1.7B до 8B параметров), 12 языках разного "веса" — от французского и китайского до суахили и телугу — и трёх уровнях сложности задач из бенчмарка PolyMath. Результат оказался резким: для Qwen3-4B на задачах средней сложности точность на суахили при рассуждениях на английском составила 29.2%, а при рассуждениях на суахили (при той же английской задаче) — 2.0%. Одна переменная, в 15 раз разница.
Самое неожиданное: увеличение модели помогает, но не закрывает разрыв. Qwen3-8B на суахили в сложном режиме — 3.2% против 33.2% при переключении на английские рассуждения. Больший размер модели не "выучил" суахилийскую математику — он просто лучше использует английские паттерны. Это означает, что проблема структурная, а не масштабная — и именно поэтому Formula-Retry и Loop-Retry могут частично закрыть её прямо в промпте.
Оригинал из исследования
Исследователи описывают Formula-Retry следующим образом:
Formula-Retry, which provides a compact symbolic scaffold of
known quantities, relations, and formula templates without
revealing the final result.
Пример языкового префикса для управления языком рассуждений (Swahili):
Nitaanza kufikiri kwa Kiswahili.
Kwanza,
Что означает: "Я начну думать на суахили. Во-первых,"
Контекст: Исследователи управляли языком рассуждений через языковой префикс в начале блока . Это стандартный способ направить рассуждение модели в нужный язык без дополнительных инструкций.
Адаптации и экстраполяции
💡 Адаптация: язык рассуждений как явная инструкция
Ключевой вывод исследования переводится в прямую технику: для задач с вычислениями и строгой логикой попроси модель рассуждать на английском, а вывод — на русском.
Реши задачу.
Пошаговые вычисления веди на английском (это повышает точность расчётов).
Финальный ответ и объяснение дай на русском.
Задача: {задача}
Это не магия — просто модели лучше закреплены математические паттерны на английском. Финальный ответ на русском, но "мышление" — там, где оно надёжнее.
🔧 Техника: каркас как pre-solve, а не как часть задачи
Вместо того чтобы просить модель самой структурировать данные, сделай это до запроса на решение — двумя промптами.
Промпт 1 — структуризация:
Прочитай задачу и выпиши:
1. Все известные величины с значениями
2. Что нужно найти
3. Формулы или зависимости, которые понадобятся
Задача: {задача}
Только выписывай структуру, не решай.
Промпт 2 — решение:
Теперь реши задачу, используя структуру выше.
Не пропускай промежуточные шаги.
Эффект: в первом промпте ты заставляешь модель "разложить по полочкам", во втором она использует готовый каркас. Модель дважды обращается к структуре задачи — это снижает шанс пропустить ключевой шаг.
Ресурсы
Название работы: Beyond Input Understanding: Diagnosing Multilingual Mathematical Reasoning with Directed Acyclic Trace Graphs
Авторы: Jiaqiao Zhang (Southwest University), Zhoujun Li (Southwest University), Raoyuan Zhao, Jian Lan, Thomas Seidl, Michael A. Hedderich, Hinrich Schütze, Yihong Liu (LMU Munich & MCML)
Бенчмарк: PolyMath — мультиязычный бенчмарк математических задач трёх уровней сложности
Модели в эксперименте: Qwen3-1.7B, Qwen3-4B, Qwen3-8B (Yang et al., 2025)
