3,583 papers
arXiv:2610.19536 76 14 окт. 2026 г. FREE

Перезапрос в другом формате: как поймать нестабильные решения LLM на таблицах

КЛЮЧЕВАЯ СУТЬ
Обнаружено: общая точность LLM на таблицах почти не меняется, но около трети ответов по отдельным строкам «плавают» при смене оформления. Метод позволяет находить строки, где модель на самом деле гадает, не имея разметки и не веря её словам про уверенность. Фишка: задай тот же вопрос второй раз в другой упаковке (другой формат строки, другой порядок вариантов) и сравни ответы. Расхождение выдаёт хрупкое решение. Перепроверка только 25% самых спорных строк даёт 64–86% выигрыша от перезапроса всех строк, а случайные 25% дают лишь 23–44%.
Адаптировать под запрос
⚡

TL;DR

Исследование показывает, что решение модели по строке таблицы зависит от оформления запроса. Меняется порядок вариантов ответа, их названия, формат строки (список, JSON, Markdown, предложения) и порядок колонок. Если пересказать тот же запрос другим способом, модель может выдать другой ответ. Практический приём: задать вопрос ещё раз в другом оформлении, сравнить ответы и отправить на ручную проверку те строки, где ответы разошлись.

Главная боль в том, что итоговая точность почти не меняется, а отдельные ответы «плавают». По каждой модели в среднем примерно треть решений по строкам хотя бы раз меняется при переписывании таблицы. Если развернуть порядок вариантов, у части моделей меняется до 30% ответов, и почти все перескоки идут на вариант, который стоит первым в списке. Формат «да/нет» тоже опасен: одна из моделей отвечала «Да» так часто, что половина её ответов оказалась непригодной. Причина в том, что многие решения пограничные: модель колеблется между двумя вариантами, и мелкое изменение подачи перевешивает.

Метод простой: спросить одно и то же 2–5 раз в разной упаковке, смотреть на согласие ответов. Где ответы совпали, решение устойчиво. Где разошлись, это зона риска. Перезапрос только 25% самых неуверенных строк вернул большую часть выигрыша от перезапроса всех строк: 64–86% для LLM и 79–89% для моделей-решателей. Случайные 25% строк дали только 23–44%.

(Исследуют и «типизированные модели решений» (Jev, Clef и др.), которые возвращают вероятности вместо текста. Они доступны через API, а не через чат, поэтому ниже разобрано то, что работает в обычных LLM.)


🔬

Схема метода

ШАГ 1: Классификация строки в исходном формате → ответ A
ШАГ 2: Тот же вопрос, но другой формат строки + другой порядок/названия вариантов → ответ B
        (опционально: ещё 1–3 формата → ответы C, D, E)
ШАГ 3: Сравнить ответы → совпали = устойчиво; разошлись = «хрупкое» решение
ШАГ 4: Хрупкие строки → голосование большинством или ручная проверка

Шаги 1–2 это отдельные запросы. В чате их можно сделать в одном диалоге, в автоматизации без кода это два блока подряд.


🚀

Пример применения

Задача: Отдел продаж онлайн-школы выгрузил из amoCRM 300 заявок. Колонки: источник, бюджет в рублях, город, число касаний, дней с последнего контакта. Нужно разметить заявки как «горячая / тёплая / холодная» и не пропустить заявки, на которых модель сама колеблется.

Промпт (запрос 1: массив значений, порядок «горячая, тёплая, холодная»):

Ты классифицируешь заявки онлайн-школы. Варианты ответа:
- горячая: готов купить в ближайшие 7 дней
- тёплая: интересуется, но не готов покупать сейчас
- холодная: вероятность покупки низкая

Колонки: источник, бюджет_руб, город, касаний, дней_с_контакта

Заявка 1: [«Яндекс Директ», 45000, «Казань», 4, 2]
Заявка 2: [«Telegram-канал», 15000, «Омск», 1, 19]
Заявка 3: [«VK Реклама», 80000, «Москва», 6, 1]

Ответь для каждой заявки одним словом из списка. Без пояснений.

Промпт (запрос 2: тот же смысл, другой формат и порядок вариантов):

Классифицируй заявки онлайн-школы. Возможные ответы (в таком порядке):
- холодная: вероятность покупки низкая
- тёплая: интересуется, но не готов покупать сейчас
- горячая: готов купить в ближайшие 7 дней

Заявка 1:
- источник: Яндекс Директ
- бюджет_руб: 45000
- город: Казань
- касаний: 4
- дней_с_контакта: 2

[…аналогично заявки 2 и 3 в виде списка…]

Ответь для каждой заявки одним словом из списка. Без пояснений.

Результат: Модель вернёт по одному слову на заявку в каждом запросе. Затем вы сравниваете два столбца. По совпавшим заявкам можно верить ответу. Разошедшиеся заявки идут в ручную проверку или в третий запрос с новым форматом, например с JSON, и решаются большинством голосов.


🧠

Почему это работает

Слабость LLM. Модель читает таблицу как текст, а не как структуру. Поэтому порядок строк, формат записи и порядок вариантов для неё часть смысла. Многие решения лежат на границе двух классов, и маленький сдвиг в подаче переворачивает ответ. Общая точность при этом почти не меняется: перескоки в одну сторону и в другую взаимно гасятся.

Сильная сторона LLM. Там, где модель «уверена», ответ держится при любой упаковке. Устойчивость хорошо видна по согласию нескольких ответов. В исследовании согласие десяти повторных ответов ранжировало «хрупкие» решения заметно лучше, чем уверенность, которую модель называет сама. Заявленная модельная уверенность («я уверен на 90%») оказалась самым слабым индикатором.

Как метод использует это. Мы не пытаемся угадать правильный формат. Лучший формат для разных моделей разный, а самым слабым у шести из семи моделей оказался исходный массив значений. Мы используем разногласие ответов как датчик риска. Это дешевле, чем перепроверять всё, и точнее, чем верить словам модели про уверенность.

Рычаги управления: - Число форматов (2–5) → больше форматов дают надёжнее голосование, но дороже. - Доля перепроверяемых строк → 25% самых спорных вернули основную часть выигрыша. - Формат строки (список, JSON, Markdown, предложения) → менять, чтобы получить независимые «взгляды» на данные. - Порядок и названия вариантов → переворачивать между запросами, чтобы выявить «тяготение к первому варианту». - Формулировка вопроса → избегай переформулировки в «да/нет», если модель слабая: часть моделей отвечает «Да» по умолчанию.


📋

Шаблон промпта

Классифицируй {объекты} по правилу: {критерий}.

Варианты ответа (в этом порядке):
{вариант_1}: {описание_1}
{вариант_2}: {описание_2}
{вариант_3}: {описание_3}

Данные ({формат_строки}):
{строки_данных}

Для каждой строки ответь одним вариантом из списка. Без пояснений.

Второй запрос (для сверки): возьми тот же шаблон, но поменяй {формат_строки} (например, список «поле: значение» вместо массива) и переверни порядок вариантов.

Сверка:

Вот ответы на один и тот же набор в двух запросах: {ответы_1} и {ответы_2}.
Выведи таблицу: № строки | ответ 1 | ответ 2 | совпало (да/нет).
В конце — список номеров, где ответы разошлись.

Что подставлять: {объекты}: заявки, обращения, отзывы, транзакции. {критерий}: понятное правило с описаниями классов. {формат_строки}: массив, список, JSON, Markdown-таблица или предложения.


⚠️

Ограничения

⚠️ Устойчивость ≠ правильность: Если модель стабильно ошибается, перекрёстные запросы этого не покажут. «Стабильные ошибки» составили заметную долю решений (почти пятую часть в классификации строк и в поиске аномалий), и ни один сигнал неустойчивости их не ловит.

⚠️ Ни одна модель не защищена от формата таблицы: Все семь моделей меняют ответы при переписывании таблицы. Переход на «лучшую модель» проблему не снимает.

⚠️ Примеры в промпте тоже чувствительны: Если дать 16 размеченных примеров, но перемешать их порядок или сменить формат, у значительной доли строк ответ меняется.

⚠️ Дороже в несколько раз: Перезапрос всех строк в нескольких форматах увеличивает расход пропорционально числу форматов. Выгода от выборочного перезапроса есть только если вы умеете определить «неуверенные» строки, а в чате это требует нескольких прогонов.

⚠️ Модели-решатели недоступны в чате: Основное «чудо» (вероятности вместо текста, устойчивость к порядку вариантов) относится к специальным API. Для вас остаётся только общий вывод про устойчивость и способ проверки.

⚠️ Классификация строк с малым обучающим набором: От примерно 64 размеченных строк обычные методы машинного обучения догоняют или обгоняют LLM. Если разметки много, LLM не лучший инструмент.


🔍

Как исследовали

Команда взяла семь моделей: четыре «типизированные модели решений» (возвращают вероятности вариантов за один запрос) и три обычные LLM. Проверяли на трёх задачах: классификация строк на 10 наборах данных, проверка фактов по таблице (TabFact, 2 000 утверждений) и поиск аномалий (20 источников, 5 059 образцов). Главный трюк в том, что каждый запрос отправляли в исходном виде и в 21 переписанной версии с тем же смыслом: переименованные варианты, развёрнутый порядок, формат JSON, Markdown, предложения, перемешанные колонки. Для честности ввели «долю повторной отправки»: что меняется, если один и тот же запрос отправить дважды. Так видно, какая часть перескоков вызвана шумом, а какая переписыванием.

Результат оказался двойным. Точность почти не страдает, но от трети решений на модель хоть раз меняется. Это значит, что итоговый процент вводит в заблуждение. Удивило то, что закрытая модель решений от OpenAI оказалась такой же чувствительной к порядку вариантов, как обычные LLM: устойчивость не гарантируется самим форматом «вероятности вместо текста». Инсайт для практики в том, что уверенность отражает стабильность сильнее, чем правильность, поэтому перекрёстная проверка в разных упаковках служит хорошим фильтром неуверенных решений.


💡

Адаптации и экстраполяции

🔧 Техника: добавить «разворот» вариантов → ловить тяготение к первому

Во втором запросе перечисли варианты в обратном порядке. Если ответ перескакивает на другой «первый» вариант, модель выбирала по позиции, а не по смыслу. Помечай такие строки как ненадёжные.

🔧 Техника: замена формата вопроса → сравнение «да/нет» и «выбери из списка»

Спроси «Это горячая заявка? да/нет» вместо выбора из трёх. Если ответ противоречит выбору из списка, строка пограничная.

Экстраполяция: сочетание с голосованием большинством для текстовых решений (модерация, приоритеты тикетов):

Прогони это решение три раза с разным порядком вариантов: {варианты_А}, {варианты_Б}, {варианты_В}.
Если два из трёх ответов совпали — зафиксируй. Если все три разные — пометь «на ручную проверку».

Это перенос принципа на другой тип задач, в самом исследовании он проверен только на таблицах.


🔗

Ресурсы

  • Typed Decision Models on Tabular Data — Baowen Zhang (University of Wisconsin–Madison), Hangting Ye (School of AI, Jilin University), Hongyuan Zha (School of Data Science, Chinese University of Hong Kong, Shenzhen).
  • Используемые наборы: TabLLM и FeatLLM (классификация строк), TabFact (проверка фактов), ReTabAD (поиск аномалий).

📋 Дайджест исследования

Ключевая суть

Обнаружено: общая точность LLM на таблицах почти не меняется, но около трети ответов по отдельным строкам «плавают» при смене оформления. Метод позволяет находить строки, где модель на самом деле гадает, не имея разметки и не веря её словам про уверенность. Фишка: задай тот же вопрос второй раз в другой упаковке (другой формат строки, другой порядок вариантов) и сравни ответы. Расхождение выдаёт хрупкое решение. Перепроверка только 25% самых спорных строк даёт 64–86% выигрыша от перезапроса всех строк, а случайные 25% дают лишь 23–44%.

Принцип работы

Это процесс из четырёх шагов: ответ A → тот же вопрос в другой упаковке → ответ B → сверка. 1. Классифицируй строки в исходном виде. 2. Спроси то же самое, но смени формат строки (список, JSON, Markdown, предложения) и переверни порядок вариантов. 3. Сравни ответы. Совпали — решение устойчиво. Разошлись — зона риска. 4. Спорные строки отдай человеку или в третий запрос, где решает большинство. Мы не ищем лучший формат. Мы используем разногласие ответов как датчик риска. Это как показания двух термометров: если цифры совпали, верим, а если нет, идём проверять руками.

Почему работает

Модель читает таблицу как обычный текст, а не как структуру. Порядок вариантов и формат записи для неё часть смысла. Многие решения лежат на границе двух классов, и мелкий сдвиг в подаче переворачивает ответ. Ошибки в обе стороны гасят друг друга, поэтому итоговая точность выглядит спокойной. Цифры из исследования: - В среднем около трети решений по строкам хотя бы раз меняется при переписывании таблицы. - Если развернуть порядок вариантов, у части моделей меняется до 30% ответов. Почти все перескоки идут на вариант, который стоит первым. - В формате «да/нет» одна модель отвечала «Да» так часто, что половина её ответов оказалась непригодной. - Лучшая модель не спасает: все семь моделей меняют ответы. Самым слабым форматом у шести из семи оказался исходный массив значений. Согласие нескольких ответов показывает, где модель держится стабильно, а где её решение зависит от оформления. Согласие десяти повторных ответов ранжировало хрупкие решения заметно лучше, чем уверенность, которую модель называет сама. Прикол: фраза «я уверен на 90%» оказалась самым слабым индикатором из всех.

Когда применять

Разметка таблиц с помощью LLM → классификация заявок из CRM (системы учёта клиентов), обращений, отзывов, транзакций, особенно когда строк сотни, готовой разметки нет и нужно понять, каким ответам можно верить. НЕ подходит, если модель стабильно ошибается: «стабильные ошибки» составили почти пятую часть решений, и перекрёстные запросы их не ловят. Также не подходит, если у вас есть от 64 размеченных строк: обычное машинное обучение догоняет LLM или обгоняет её. Учти и цену: расход растёт пропорционально числу форматов.

Мини-рецепт

1. Напиши базовый запрос: критерий, список вариантов с описаниями, строки данных. Попроси один вариант на строку, без пояснений.
2. Сделай второй запрос: тот же смысл, но другой формат строки. Например, вместо массива значений поставь список «поле: значение».
3. Переверни варианты: если в первом запросе порядок «горячая, тёплая, холодная», во втором пусть будет «холодная, тёплая, горячая».
4. Сверь ответы: отдай оба столбца модели и попроси таблицу «№ строки | ответ 1 | ответ 2 | совпало» и список расхождений.
5. Разбери спорные строки: отправь их человеку или в третий запрос в новом формате, например в JSON. Решает большинство голосов.
6. Хочешь надёжнее: добавь ещё 1–3 формата (всего 2–5). Это дороже, но голосование точнее.
7. Не используй «да/нет»: слабые модели отвечают «Да» по умолчанию. Оставляй варианты с названиями классов.

Примеры

[ПЛОХО] : Вот 300 заявок онлайн-школы. Разметь каждую: горячая, тёплая или холодная. Один прогон, один формат. Ответу верят вслепую, хотя около трети решений зависит от оформления.
[ХОРОШО] : Запрос 1: Ты классифицируешь заявки онлайн-школы. Варианты: горячая, тёплая, холодная. Заявка 1: [«Яндекс Директ», 45000, «Казань», 4, 2]. Ответь одним словом из списка, без пояснений. Запрос 2: Классифицируй заявки онлайн-школы. Варианты в таком порядке: холодная, тёплая, горячая. Заявка 1: источник: Яндекс Директ; бюджет_руб: 45000; город: Казань; касаний: 4; дней_с_контакта: 2. Ответь одним словом, без пояснений. Сверка: Вот ответы на один набор в двух запросах: {ответы_1} и {ответы_2}. Выведи таблицу: № строки | ответ 1 | ответ 2 | совпало (да/нет). В конце дай список номеров, где ответы разошлись. Совпавшие заявки идут в работу. Разошедшиеся менеджер смотрит руками.
Источник: Typed Decision Models on Tabular Data
ArXiv ID: 2610.19536 | Сгенерировано: 2026-10-15 05:10

Проблемы LLM

ПроблемаСутьКак обойти
Ответ на отдельный объект «плавает» при смене оформления запросаКлассифицируешь строки таблицы, заявки или отзывы. Меняешь формат записи (список, JSON, таблица) или порядок колонок. Часть ответов меняется, примерно у трети объектов. Общая точность при этом почти не падает: ошибки в одну и в другую сторону гасятся. Поэтому по среднему результату проблему не видно. Ответ по конкретной строке при этом ненадёженНе верь одному прогону. Задай тот же вопрос второй раз в другой упаковке. Сравни ответы. Совпали — решение устойчиво. Разошлись — проверь вручную или добавь третий запрос
Модель склонна выбирать первый вариант в списке и отвечать «Да»Варианты ответа идут в списке. Когда объект пограничный, модель чаще берёт тот, что стоит первым. При развороте списка у части моделей меняется до 30% ответов. Формат «да/нет» ещё хуже: некоторые модели говорят «Да» почти на всё, и ответы становятся бесполезнымиНе оставляй один порядок вариантов. Во втором запросе переверни список. Не своди задачу к вопросу «да/нет». Вместо «Это горячая заявка?» дай список классов с описаниями

Методы

МетодСуть
Перезапрос в другой упаковке — поиск хрупких решенийЗадай один вопрос 2–5 раз. Меняй формат строки (поле: значение, JSON, Markdown, предложение) и переворачивай порядок вариантов. Смысл и критерии не меняй. Сравни ответы. Совпали — решение устойчиво. Разошлись — это зона риска. Для зоны риска делай голосование большинством или ручную проверку. Почему работает: пограничное решение держится на мелочах подачи. Если ответ не меняется при любой упаковке, модель видит чёткие признаки. Если меняется, значит она колеблется. Экономия: можно перепроверять не всё, а около 25% самых спорных строк. Это даёт большую часть выигрыша от полной перепроверки. Случайные 25% дают заметно меньше. Спорные строки находишь по первым двум-трём прогонам. Когда да: много однотипных объектов, ошибка стоит дорого, есть возможность проверить спорные вручную. Когда нет: один объект, нужен самый дешёвый вариант, или ответы почти всегда стабильны, но ошибочны

Тезисы

ТезисКомментарий
Согласие нескольких ответов надёжнее, чем уверенность, которую модель называет самаФраза «я уверен на 90%» плохо показывает, где модель ошибётся. Согласие повторных ответов в разной упаковке показывает это заметно лучше. Причина: слова об уверенности — тоже текст, который зависит от подачи. Разброс ответов — измеренный сигнал. Применяй: не спрашивай «насколько ты уверен». Задай вопрос несколько раз по-разному и смотри, где ответы совпали
📖 Простыми словами

Typed DecisionModelson Tabular Data

arXiv: 2610.19536

Языковые модели не понимают таблицы как базы данных. Для нейронки любая таблица — это просто обычный текст, где даже смена формата с JSON на Markdown сносит крышу. Стоит поменять местами пару колонок или переименовать варианты ответа, и модель выдаёт другой результат на тех же данных. На пограничных значениях это чистая рулетка, хотя общая статистика цинично врёт, что всё под контролем.

Это как спросить у сонного баристы: "Тебе сначала налить эспрессо или молоко?" — и получить два совершенно разных напитка из одних зёрен. Формально рецепт не изменился, но порядок слов запутал исполнителя. С моделью та же фигня: случайный сдвиг оформления напрочь сбивает логику, превращая строгую классификацию в цирк.

Рабочее решение проблемы — метод перекрёстной валидации формата. Скармливаешь сетке одну строку дважды: сначала через Markdown-таблицу, затем через JSON-объект, попутно перемешав варианты ответов. Если в обоих случаях вылез «горячий лид» — вердикт надёжен. Если ответы разошлись — сетка колеблется на границе, и строчку надо сразу отправлять на ручную проверку человеку.

Тестировали механику на заявках отдела продаж, но принцип универсален. Скоринг заявок на кредит, модерация сомнительных отзывов, фильтрация резюме кандидатов — везде, где ты скармливаешь LLM структурированные табличные данные. Любой Excel-файл превращается в мину замедленного действия, если скармливать его промпту в одном-единственном виде.

Главный вывод простой: один прогон таблицы через нейронку — это иллюзия надёжности. Внедряй контроль расхождений через смену синтаксиса и отсеивай пограничные косяки до того, как они пойдут в прод. Иначе ты просто сидишь на пороховой бочке и гадаешь, куда слились лучшие сделки.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с