3,583 papers
arXiv:2610.34887 81 26 окт. 2026 г. FREE

Паспорт числа (NumTrace): проверка не только «верно ли число», но и «к чему оно относится»

КЛЮЧЕВАЯ СУТЬ
Агенты почти не ошибаются в самих цифрах. Они ошибаются в том, к чему число относится. От 68 до 82% всех ошибочных утверждений у трёх протестированных агентов — именно такие. Метод NumTrace позволяет ловить числа, которые скопированы верно, но взяты не оттуда: не та компания, период, единица или охват. Фишка: для каждого числа модель пишет «паспорт» — цитату, пять полей привязки и способ получения. Потом идут три отдельных проверки: значение, привязка, поддержка. Жесть в том, что обычная сверка «число есть в источнике» такие ошибки просто пропускает.
Адаптировать под запрос
⚡

TL;DR

NumTrace — бенчмарк, который проверяет каждое число в ответе агента по трём отдельным вердиктам: значение (цифры совпадают с источником), привязка (число относится именно к тому, что заявлено) и поддержка (цитируемый источник это подтверждает). Привязка — это пять полей: кто (компания или группа), что (показатель), когда (период), в чём (единица) и в каком охвате (группа или одно юрлицо, план, сегмент). Из этого получается простой приём: требовать от модели «паспорт» для каждого числа и отдельно проверять привязку.

Главная находка: агенты почти не ошибаются в самих цифрах, они ошибаются в том, к чему число относится. Модель честно находит в документе 256 акций и выдаёт их за holding всей группы фондов, хотя реальная сумма по группе — 2 854 645. Проверка «число есть в источнике» это пропустит. Проверка «сверь с эталонным ответом» скажет «неверно», но не объяснит почему. Модель цепляется за похожую строку в таблице и не замечает, что у неё другой охват, период или единица измерения. От 68 до 82% всех ошибочных утверждений у трёх протестированных агентов — именно такие.

Метод требует записать для каждого числа источник, пять полей привязки и способ получения. Затем нужно прогнать три проверки: значение, привязка, поддержка. Привязку проверяет человек или второй прогон модели по документу.

🔬

Схема метода

ШАГ 1: Агент достаёт число → цитата из источника (документ, место)
ШАГ 2: Агент заявляет привязку → кто / что / когда / единица / охват
ШАГ 3: Агент указывает способ → «скопировано» или «посчитано» (формула + входные числа с цитатами)
ШАГ 4: Аудит значения → цифры и арифметика совпадают с цитатой?
ШАГ 5: Аудит привязки → у цитируемого числа те же кто/что/когда/единица/охват?
ШАГ 6: Аудит поддержки → источник главный (не устаревший) и подтверждает и число, и привязку?

Шаги 1–3 можно уложить в один промпт или в инструкцию агента. Шаги 4–6 лучше делать отдельным запросом, лучше в новом чате.

🚀

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

Задача: Финансовый аналитик инвесткомпании готовит инвестмемо по Т-Технологиям (бывший Тинькофф). Он загрузил в чат годовой отчёт по МСФО и презентацию для инвесторов. Нужно вытащить чистую прибыль за год и сравнить с прошлым годом. В отчётах разные охваты (группа или отдельный банк), разные периоды (год или 4 квартал) и разные единицы (млн или млрд руб.). Здесь правдоподобное число из соседней строки таблицы легко принять за нужное.

Промпт:

Ты помогаешь готовить инвестмемо. Во вложении годовой отчёт МСФО и презентация для инвесторов.

Задача: найди чистую прибыль группы за 2024 год и за 2023 год и посчитай темп роста в процентах.

Правила ответа. Для КАЖДОГО числа, которое попадёт в ответ, заполни паспорт:


  число так, как оно напечатано, с единицей
  документ, страница/раздел, дословная цитата строки таблицы
  
    чья это цифра (группа / банк / сегмент)
    какой показатель именно (например, «прибыль, приходящаяся на акционеров» или «прибыль за период»)
    за какой период
    единица и масштаб (млн руб., млрд руб.)
    охват: консолидированно или отдельно, МСФО или РСБУ
  
  скопировано ИЛИ посчитано (формула и входные числа, у каждого своя цитата)


Если в документе несколько похожих чисел (разные охваты, периоды, показатели), перечисли их в строке  и объясни, почему выбрал именно это.
Если нужного числа в документе нет, напиши «в документе не найдено». Не подставляй близкое по смыслу.

Результат: Модель выдаст паспорт для каждого числа: прибыль 2024, прибыль 2023, плюс формулу роста с обоими входами. В каждом паспорте будет дословная цитата и пять полей привязки. Там, где в отчёте есть конкурирующие числа (например, прибыль до и после доли меньшинства), появится список альтернатив с объяснением выбора. Аналитик быстро сверит цитату с PDF и увидит расхождение в охвате, периоде или единице, если оно есть. Если число в документах не нашлось, модель так и скажет.

🧠

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

Слабость. Модель ищет в документе кусок текста, похожий на вопрос, и копирует число. Копировать она умеет почти идеально. Но смысл числа часто нигде не напечатан рядом с ним: единицы зависят от даты подачи, поправка заменяет строки или добавляет их, итог по группе зависит от списка участников. Модель не замечает разницы между «похожим» и «нужным», и ответ выглядит убедительно.

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

Как метод использует это. Паспорт превращает невидимую ошибку («число правильное, но не то») в видимое несовпадение: цитата говорит одно, заявленная привязка другое. Три раздельных вердикта показывают, где именно поломка. Если значение верное, а привязка нет, число взято не оттуда. Если и значение неверное, ошибка в копировании или арифметике.

Рычаги управления: - Убери поля, которые не нужны задаче (например, Unit для безразмерных показателей), чтобы паспорт был короче. - Добавь свои поля привязки под домен: «валюта», «НДС: с учётом или без», «МСФО/РСБУ» в бухгалтерии, «до/после вычета комиссий» в продажах. - Ужесточи правило отказа («не найдено»), если цена ошибки высока, и смягчи его, если нужен черновик. - Раздели роли: одна модель заполняет паспорта, другая, в новом чате, проверяет три вердикта.

📋

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

Шаблон 1 — для агента или чата, который достаёт числа (вставь в системный промпт или в начало запроса):

Для КАЖДОГО числа в твоём ответе заполни паспорт. Числа без паспорта в ответ не включай.


  {число как напечатано, с единицей}
  {документ, раздел, дословная цитата строки}
  
    {чья это цифра}
    {какой показатель именно}
    {за какой период}
    {единица и масштаб}
    {{охват: например, группа/юрлицо/сегмент, МСФО/РСБУ}}
  
  скопировано | посчитано: {формула}; входы: {число 1 + цитата}, {число 2 + цитата}
  {похожие числа в документе и почему они не подходят}


Правила:
- Привязку выводи из документа, а не из формулировки моего вопроса.
- Если нужного числа в документе нет, ответь «не найдено» и объясни, чего именно нет. Близкое по смыслу число не подставляй.
- Единицы и масштаб проверяй по заголовку таблицы и дате документа, а не по привычке.

Шаблон 2 — аудитор (отдельный запрос, лучше в новом чате):

Ты аудитор числовых утверждений. Ниже паспорта чисел из ответа аналитика и исходные документы.

Для каждого паспорта вынеси три отдельных вердикта: pass, fail или не применимо.


  цифры и арифметика совпадают с цитатой? (масштаб пока не учитывай)
  у числа в источнике те же кто/что/когда/единица/охват, что заявлены в StatedBinding? Проверь каждое из пяти полей отдельно и укажи, какое не совпало
  источник основной (не устаревший, не пересказ) и подтверждает и число, и привязку?


Особо отметь случай «Value=pass, Binding=fail»: число верно скопировано, но относится не к тому.

Паспорта: {паспорта}
Документы: {документы}

Что подставлять. {число как напечатано} и прочие поля заполняет модель. Вам нужно в {{охват...}} подставить типичные для вашей области охваты. В шаблоне 2 в {паспорта} и {документы} вставьте ответ первого шага и те же файлы.

🚀 Быстрый старт — вставь в чат:

Вот шаблон «паспорт числа» и шаблон аудитора. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

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

⚠️

Ограничения

⚠️ Нет проверенного промпта: Авторы не тестировали, снижает ли «паспорт числа» ошибки у агента. Они построили бенчмарк и измерили, как часто возникают ошибки привязки. Шаблоны выше — перенос структуры записи, по которой авторы оценивали ответы. Эффект от паспорта нужно проверить на своих документах.

⚠️ Проверяли кодом, не промптом: Оценку в статье делал детерминированный скрипт с эталонными ответами по правилам учёта. В чате аудит выполняет другая модель или человек, и они тоже могут ошибаться. Паспорт не заменяет сверку цитаты с оригиналом.

⚠️ Узкий материал: Документы — американская отчётность SEC. В других областях ловушки другие, и поля привязки придётся подбирать самому.

⚠️ Часть ошибок — не про привязку: Агенты искали по документам слабым поиском с ограниченным числом запросов. По части вопросов нужных кусков просто не находилось. Паспорт этого не лечит.

⚠️ Сравнение моделей неравное: Два агента работали через коддинг-интерфейсы, третий через API. Нельзя сказать «модель X лучше Y». Вывод про класс ошибки устойчив, рейтинг нет.

⚠️ Автоматическая проверка тоже ошибалась: Экспертная проверка нашла ошибки скорера в обе стороны. По оценке эксперта, доля верных привязок ниже, чем показывал скрипт (88,0% против 90,6%).

🔍

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

Исследователи собрали замороженный срез из 2 163 документов SEC EDGAR и написали 540 вопросов. Для 120 нужны обычные финансовые отчёты, для 200 — таблицы отложенной компенсации топ-менеджеров, для 220 — отчёты 13F о том, кто владеет акциями. Последние два типа в бенчмарках раньше почти не встречались. Ловушки встроили намеренно: единицы зависят от даты подачи, поправки то заменяют, то добавляют строки, итог по группе зависит от списка участников.

Три агента прошли один и тот же четырёхшаговый конвейер: поиск, извлечение, расчёт, итоговый отчёт. Каждое число из отчёта получило запись с источником, заявленной привязкой и тремя вердиктами. Собственный же эталон авторы проверили: финансовый аналитик с опытом восемь лет сверил 200 вопросов (точность 96,1% по полям), а программист реализовал правила заново и совпал в 443 из 444 случаев.

Результаты: число копируют почти идеально (значение верно у 95–99% утверждений), но привязка хуже, особенно в 13F (65–83% верных). Для групповых итогов около 91% утверждений проходят проверку значения, а привязку проходит меньше половины. Доля RNWA среди всех ошибочных утверждений составила 67,5–81,8%. Удивительнее всего, что сама проверка оказалась источником ошибок: после исправления 18 классов артефактов скрипта доля верных привязок у Claude выросла с 70,8% до 93,8% без единого изменения в ответах модели. Вывод для практики: если проверка не разделяет «значение» и «привязку», она либо пропускает ошибки, либо создаёт ложные.

💡

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

🔧 Техника: добавить обязательный отказ → модель не подставляет близкое число

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

Если показатель в документе не раскрыт или раскрыт в другом охвате/периоде, ответь «не найдено в документе» и перечисли, какие числа есть рядом и чем они отличаются. Использовать их вместо нужного нельзя.

Это защищает от ситуации, когда модель берёт ближайшую строку, лишь бы дать число.

Экстраполяция: «ловушки документа» перед извлечением

Авторы заранее знали три ловушки для своих документов: единицы по дате, тип поправки, состав группы. Сделай то же для своих файлов: сначала получи от модели список мест, где число легко перепутать, потом извлекай.

Прежде чем искать числа, изучи {документы} и выпиши, где в них возможна путаница:
— какие единицы и масштабы используются в разных таблицах;
— какие периоды и охваты (группа/юрлицо, МСФО/РСБУ) встречаются;
— какие показатели называются похоже, но различаются;
— где есть версии и поправки к документу.
Для каждой ловушки напиши, по какому признаку в тексте её отличить. Затем отвечай на вопрос: {вопрос}, заполняя паспорт на каждое число.
🔗

Ресурсы

  • NumTrace: Auditing the Number Provenance of Financial Analyst Agents — Tianlei Zhu, Matt White, Xue Liu, Xiao-Yang Liu (Columbia University, UC Berkeley, Linux Foundation, MBZUAI, McGill University, Mila).
  • Связанные работы, на которые ссылаются авторы: FinGround, VeriFin, FinFIRST, BigFinanceBench.
  • Источники данных: SEC EDGAR, форма 13F, Item 402(i), XBRL.

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

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

Агенты почти не ошибаются в самих цифрах. Они ошибаются в том, к чему число относится. От 68 до 82% всех ошибочных утверждений у трёх протестированных агентов — именно такие. Метод NumTrace позволяет ловить числа, которые скопированы верно, но взяты не оттуда: не та компания, период, единица или охват. Фишка: для каждого числа модель пишет «паспорт» — цитату, пять полей привязки и способ получения. Потом идут три отдельных проверки: значение, привязка, поддержка. Жесть в том, что обычная сверка «число есть в источнике» такие ошибки просто пропускает.

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

Число без паспорта в ответ не попадает. Паспорт — это пять полей привязки: кто (компания или группа), что (показатель), когда (период), в чём (единица и масштаб), в каком охвате (вся группа или одно юрлицо, план, сегмент). Плюс дословная цитата и способ получения: «скопировано» или «посчитано» (формула и входные числа, у каждого своя цитата). Дальше три проверки, лучше отдельным запросом и в новом чате: 1. Значение: цифры и арифметика совпадают с цитатой? 2. Привязка: у цитируемого числа те же пять полей, что заявлены? 3. Поддержка: источник главный (не устаревший) и подтверждает и число, и привязку? Три раздельных вердикта показывают, где именно поломка. Значение верное, а привязка нет — число взято из соседней строки. Неверно и то и другое — модель ошиблась при копировании или в арифметике. Это как анализ крови вместо одного слова «болен»: видно, какой показатель не в норме.

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

Слабость модели. Она ищет кусок текста, похожий на вопрос, и копирует число. Копирует почти идеально. Но смысл числа часто нигде не напечатан рядом с ним. Единицы зависят от даты подачи. Поправка заменяет строки или добавляет новые. Итог по группе зависит от списка участников. Пример из исследования: модель честно нашла в документе 256 акций и выдала их за долю всей группы фондов. Реальная сумма по группе — 2 854 645. Число есть в источнике, поэтому проверка «найдено в тексте» это пропускает. Сильная сторона модели. Просишь явно назвать «кто, что, когда, в чём, в каком охвате» и привести цитату. Модель вынуждена сверить заявленное с написанным, а сравнивать ей проще, чем выбирать из десятка похожих строк. Человеку тоже легче: сверить две строки быстрее, чем перечитывать весь отчёт. Честная оговорка: авторы не проверяли, снижает ли паспорт ошибки у агента. Они построили тест-набор и измерили, как часто бывают ошибки привязки. Шаблоны ниже — перенос структуры, по которой они оценивали ответы.

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

Финансовый анализ → извлечение чисел из отчётности, где рядом лежат похожие показатели, особенно когда есть разные охваты (группа или отдельный банк), периоды (год или четвёртый квартал) и единицы (млн или млрд). Подходит и для бухгалтерии (МСФО или РСБУ, с НДС или без) и для продаж (до или после вычета комиссий). Для своей области добавь свои поля привязки. НЕ подходит, если проблема в поиске: когда нужного куска документа агент просто не нашёл, паспорт этого не лечит. И он не заменяет сверку цитаты с оригиналом: аудитор-модель тоже может ошибаться. Исследование делали на американской отчётности SEC, так что в других областях ловушки будут другими.

Мини-рецепт

1. Выдай паспорт: вставь в системный промпт или в начало запроса шаблон с полями , , , , . Добавь правило: числа без паспорта в ответ не включать.
2. Привязку бери из документа: напиши прямо: «выводи привязку из документа, а не из формулировки моего вопроса». Иначе модель просто повторит твои слова.
3. Запрети подстановки: «Если нужного числа нет, ответь «не найдено». Близкое по смыслу не подставляй».
4. Проверь единицы: «масштаб проверяй по заголовку таблицы и дате документа, а не по привычке».
5. Подгони поля: убери лишние (единица для безразмерных показателей), добавь свои (валюта, НДС, МСФО или РСБУ).
6. Позови аудитора: открой новый чат, вставь паспорта и те же документы. Попроси три вердикта: pass, fail или «не применимо» для значения, привязки и поддержки. Отдельно попроси пометить случай «значение верно, привязка нет».
7. Сверь выборочно: цитаты из паспортов проверь по PDF сам. Особенно там, где аудитор поставил fail.
8. Не знаешь, какие поля нужны? Вставь шаблон в чат и напиши: Адаптируй под мою задачу: {твоя задача}. Задавай вопросы, чтобы заполнить поля. Модель спросит, где у тебя числа чаще путаются.

Примеры

[ПЛОХО]: `Найди чистую прибыль Т-Технологий за 2024 и 2023 год и посчитай рост в процентах` Модель возьмёт правдоподобное число из соседней строки. Это может быть прибыль банка вместо группы, четвёртый квартал вместо года, млрд вместо млн. Выглядеть ответ будет убедительно. [ХОРОШО]: `Во вложении годовой отчёт МСФО и презентация для инвесторов. Найди чистую прибыль группы за 2024 и 2023 год и посчитай рост в процентах. Для КАЖДОГО числа заполни паспорт: , (документ, раздел, дословная цитата строки), (Entity, Concept, Period, Unit, Scope), (скопировано или посчитано: формула и входы с цитатами). Если в документе несколько похожих чисел, перечисли их в и объясни выбор. Если числа нет, напиши «в документе не найдено», близкое не подставляй.` Результат: у каждого числа есть цитата и пять полей. Формула роста показывает оба входа с источниками. Расхождение в охвате, периоде или единице видно сразу, когда сверяешь цитату с PDF. [ПЛОХО]: `Проверь, всё ли верно в этом ответе` Модель увидит число в источнике и скажет «верно». Что цифра относится к другому охвату, она не заметит. [ХОРОШО]: `Ты аудитор числовых утверждений. Для каждого паспорта вынеси три отдельных вердикта: значение, привязка, поддержка. Привязку проверяй по каждому из пяти полей и укажи, какое не совпало. Отдельно отметь случай «значение верно, привязка нет». Паспорта: {паспорта}. Документы: {документы}` Результат: видно не просто «ошибка», а какое именно поле привязки не сошлось.
Источник: NumTrace: Auditing the Number Provenance of Financial Analyst Agents
ArXiv ID: 2610.34887 | Сгенерировано: 2026-10-27 23:30

Проблемы LLM

ПроблемаСутьКак обойти
Модель берёт верное число, но не того объекта, периода или единицыПросишь достать число из длинного документа. Модель находит строку, похожую на вопрос, и копирует цифры точно. Но смысл числа часто не напечатан рядом с ним. Охват (группа или одно юрлицо), период (год или квартал) и масштаб (млн или млрд) лежат в заголовке, в примечании или в дате документа. Модель путает «похожее» и «нужное». Ответ выглядит убедительно. Проверка «число есть в источнике» такую ошибку пропускает. Это касается любых задач с числами в документах: финансы, договоры, медицина, продажиНе проверяй только цифры. Требуй от модели явно назвать, к чему относится число: чьё оно, какой показатель, за какой период, в каких единицах, в каком охвате. Пусть приведёт дословную цитату. Дальше проверяй привязку отдельно от значения (см. методы ниже)

Методы

МетодСуть
Паспорт числа — делает скрытую ошибку видимойТребуй для каждого числа в ответе короткую карточку. Поля: значение, источник (документ, место, дословная цитата), привязка из пяти частей, способ получения. Привязка: Entity (чья цифра), Concept (какой показатель), Period, Unit (единица и масштаб), Scope (охват). Способ: «скопировано» или «посчитано: формула + входные числа, у каждого своя цитата». Добавь поле Alternatives: похожие числа в документе и почему они не подходят. Добавь правило: «Привязку выводи из документа, а не из моего вопроса. Нет числа — пиши "не найдено", близкое не подставляй». Почему работает: Заявленная привязка и цитата стоят рядом. Если они расходятся, несовпадение видно сразу. Человек сверяет две строки быстрее, чем перечитывает отчёт. Поле Alternatives заставляет модель заметить конкурирующие строки до выбора. Как подстроить: убери ненужные поля, добавь свои (валюта, «с НДС или без», «до или после комиссий»). Когда да: важны точные числа из документов, цена ошибки высока. Когда нет: числа берутся из общих знаний, без источника. Паспорт не заменяет сверку цитаты с оригиналом. Важно: авторы не проверяли, снижает ли паспорт ошибки. Проверь на своих документах
Аудит тремя отдельными вердиктами — показывает, где именно поломкаПроверку делай отдельным запросом, лучше в новом чате. Дай аудитору паспорта и документы. Пусть выдаст три независимых вердикта: pass, fail или «не применимо». 1) Значение: цифры и арифметика совпадают с цитатой. 2) Привязка: у числа в источнике те же пять полей, что заявлены. Пусть проверит каждое поле отдельно и назовёт несовпавшее. 3) Поддержка: источник основной (не устаревший, не пересказ) и подтверждает и число, и привязку. Отдельно проси отметить случай «значение pass, привязка fail». Почему работает: Один общий вердикт «неверно» не объясняет причину. Три оси разделяют ошибки. Значение неверно: ошибка в копировании или счёте. Значение верно, привязка нет: число взято не оттуда. Новый чат не тянет за собой уверенность первого ответа. Когда да: проверка чужих или своих числовых утверждений. Когда нет: без доступа к исходникам. Аудитор-модель тоже ошибается, поэтому выборочно проверяй сам
📖 Простыми словами

NumTrace: Auditing the Number Provenance of Financial Analyst Agents

arXiv: 2610.34887

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

Это как послать стажёра узнать стоимость квартиры, а он радостно принесёт тебе сумму коммуналки с последней страницы договора, потому что там стояло слово "итого". Формально цифра взята прямо из документа, не подкопаешься. Но если на основе такой аналитики принять инвестиционное решение, бизнес получит эпический кассовый разрыв на ровном месте.

Чтобы прекратить этот бред, сделали бенчмарк NumTrace. Метод держится на аудите трёх вещей: значение цифры, её поддержка источником и ключевое — привязка. Модель заставляют оформлять «паспорт» на каждое число по пяти жестким параметрам: кто отчитался, какой показатель, за какой период, в каких единицах и в каком охвате бизнеса. Не совпало хоть одно поле — ответ бракуется.

Тестировали на финотчётах уровня МСФО, но принцип универсален. Любая система, где фигурируют цифры — строительные сметы, медицинские дозировки, KPI команд или скидки в контрактах — болеет тем же самым. Число без жесткой привязки гарантированно превращает даже дорогую модель в генератор уверенной дезинформации.

Короче: хватит просить бота просто «найти прибыль в PDF». Требуй паспорт на каждое число и заставляй подтверждать контекст до того, как данные уйдут руководству. Цифры не врут, врёт контекст LLM. Либо ты настраиваешь аудит привязки, либо платишь за галлюцинации алгоритма реальными деньгами компании.

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

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

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