3,583 papers
arXiv:2610.07948 87 6 окт. 2026 г. FREE

Confidence Reasoning Graphs: оценка вероятности успеха агента через разбор его работы на проверяемые утверждения

КЛЮЧЕВАЯ СУТЬ
Агент пишет «готово», модель-судья отвечает «уверен на 90%+», а на деле задача решена примерно в половине случаев. Метод Confidence Reasoning Graphs (CRG) позволяет понять, можно ли принимать работу AI-агента без ручной проверки, и показывает, какой именно пункт сомнителен. Фишка: подробный промпт «разложи на части и оцени» в одном запросе почти не помогает. Эффект даёт оценка каждого пункта в отдельном чате. Утверждение «агент справился» режется на мелкие проверяемые листья. К каждому прикрепляются шаги из журнала работы агента. Потом каждый лист получает вероятность отдельным запросом, и всё перемножается. Одно слабое звено тянет итог вниз, и уверенный тон отчёта его не спрячет.
Адаптировать под запрос
⚡

TL;DR

Confidence Reasoning Graphs (CRG) — способ узнать, можно ли доверять результату агента. Утверждение «агент справился» разбивается на мелкие проверяемые утверждения. Для каждого из них из лога агента выбираются доказательства. Затем каждое утверждение оценивается отдельным запросом, а итоговая уверенность получается перемножением этих оценок.

Главная боль в том, что на вопрос «насколько ты уверен, что агент справился?» модель отвечает «90%+» почти всегда, даже когда успех на деле около 50%. Агент часто не ошибается, а просто не добирается до проверки: тесты не запустились, зависимость не встала, а в отчёте написано «готово». Общая оценка этого не замечает. Подробный промпт «разложи на части и оцени» в одном запросе тоже не помогает: авторы проверили, и калибровка почти не улучшилась.

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


🔬

Схема метода

ШАГ 1: Декомпозиция → дерево утверждений
   «Агент справился» → [необходимые и вместе достаточные подутверждения]
   + уточнение под конкретную задачу (то же утверждение, но конкретно)
   (глубина до 5 уровней)

ШАГ 2: Доказательства → к каждому «листу» привязаны шаги лога
   метка: Подтверждено / Подорвано / Не проверено
   (один запрос: на входе задача + лог + дерево)

ШАГ 3: Оценка каждого листа → вероятность 0–1
   (ОТДЕЛЬНЫЙ запрос на каждый лист; на входе лист + его доказательства + лог до последнего цитируемого шага)

ШАГ 4: Агрегация → итог = произведение вероятностей листьев
   (простой подсчёт, можно вручную)

Шаги 1–2 можно выполнить в одном чате. Шаг 3 нужен в отдельных чатах или вызовах.


🚀

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

Задача: Вы руководите небольшим интернет-магазином. Разработчик попросил Claude Code перенести приём платежей на новую версию API ЮKassa. Агент отчитался: «Готово, всё работает». Деплой в пятницу вечером, и нужно решить: принимать как есть или проверять руками.

Промпт (шаг 1–2, один чат):

Ты — аудитор работы AI-агента. Ниже задача и полный лог работы агента.

<Задача>
Перенести приём платежей с ЮKassa API v2 на актуальную версию.
Сохранить обработку вебхуков, возвраты и чек по 54-ФЗ.


<Лог>
{вставь лог / историю шагов агента с номерами}


Утверждение G0: «Агент успешно выполнил задачу».

Шаг 1. Разложи G0 на дерево утверждений.
Используй два приёма:
- РАЗДЕЛЕНИЕ: раздели утверждение на части, каждая из которых необходима, а все вместе достаточны. Части не должны зависеть друг от друга.
- УТОЧНЕНИЕ: перепиши общее утверждение так, чтобы оно проверялось именно в этой задаче (смысл тот же).
Максимальная глубина — 5 уровней. Остановись, когда утверждение можно проверить по конкретным шагам лога.

Шаг 2. К каждому конечному утверждению привяжи доказательства из лога:
- номера шагов
- что именно произошло на этих шагах
- метка: Подтверждено / Подорвано / Не проверено
(«Не проверено» — если агент не пытался проверить или попытка оборвалась.)

Выведи: дерево утверждений, затем таблицу «утверждение → доказательства → метка».

Промпт (шаг 3, отдельный новый чат для каждого листа):

Утверждение: «{конечное_утверждение}»

Доказательства из лога агента:
{доказательства_с_метками}

Лог агента до последнего упомянутого шага:
{лог_до_нужного_шага}

Оцени вероятность, что утверждение истинно, числом от 0 до 1.
Опирайся только на лог. Если проверки не было — вероятность не должна быть высокой.
Ответ: число и 2 предложения обоснования.

Затем перемножьте числа.

Результат: После шагов 1–2 вы получите дерево из 4–8 конечных утверждений (например, «вебхуки принимаются и подпись проверяется», «возвраты проходят», «чек формируется»). У каждого будут шаги-доказательства и метка. Скорее всего, у части пунктов окажется «Не проверено»: агент не смог запустить тесты вебхуков. После шага 3 вы получите набор вероятностей, а после перемножения — итоговую оценку. Видно, какой именно пункт тянет её вниз, так что руками проверять нужно только его.


🧠

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

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

Сильная сторона. Модель хорошо проверяет узкое конкретное утверждение по конкретным шагам лога: «функция вызвана с нужными параметрами?», «тест запускался и прошёл?». Она также неплохо находит в логе место, где агент остановился, не дойдя до подтверждения.

Как метод это использует. Он превращает одну размытую оценку в серию узких, каждая из которых опирается на цитируемые шаги. Пометка «Не проверено» отделяет «не подтверждено» от «подорвано». Произведение делает так, что одно слабое звено снижает итог, и общее впечатление его не прикроет. Авторы показали, что выигрыш даёт именно оценка каждого листа отдельно плюс агрегация, а не само построение графа.

Рычаги управления: - Глубина дерева (в статье максимум 5): для простых задач ограничьте 2–3 уровнями, это дешевле. - Метки доказательств: можно добавить свои, например «Подтверждено только на тестовых данных». - Отдельные запросы на лист — рычаг, который нельзя убирать. Без него эффект пропадает. - Агрегация: перемножение — это допущение независимости. Она занижает итог при множестве листьев (см. ограничения). - Лог до последнего цитируемого шага экономит токены, но если шаг не процитирован, оценщик его не увидит.


📋

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

Метод состоит из трёх промптов. Структуру (дерево, метки, отдельные оценки, произведение) сохраняйте.

<Роль>
Ты — аудитор работы AI-агента. Твоя задача — оценить вероятность,
что агент выполнил задачу, опираясь только на лог.


<Задача>{описание_задачи}
<Лог>{лог_агента_с_номерами_шагов}

<Утверждение_G0>Агент успешно выполнил задачу.

<Логика>
1. РАЗДЕЛЕНИЕ(G): раздели G на подутверждения G1..Gm так, чтобы
   G истинно ⇔ истинны все Gj (необходимы и достаточны),
   и Gj не зависят друг от друга.
2. УТОЧНЕНИЕ(G): перепиши G как G' для конкретной задачи (G ≡ G').
3. Применяй 1 и 2 рекурсивно к листьям, глубина ≤ {макс_глубина}.
   Остановись, когда лист проверяется по конкретным шагам лога.
4. Для каждого листа: найди доказательства,
   укажи номера шагов, опиши событие,
   метка: Подтверждено | Подорвано | Не проверено.


<Вывод>
Дерево утверждений + таблица: лист | шаги | событие | метка.
Вероятности пока не ставь.

Затем для каждого листа — отдельный новый чат:

Утверждение: «{лист}»
Доказательства: {доказательства_с_метками}
Лог до шага {последний_шаг}: {лог}

Оцени вероятность истинности утверждения (0–1).
Опирайся только на лог. Метка «Не проверено» не может давать высокую вероятность.
Ответ: число + 2 предложения обоснования.

Итог: уверенность = p1 × p2 × … × pn.

Подставляйте: {описание_задачи} — что просили агента сделать, {лог_агента} — историю шагов с номерами, {макс_глубина} — 3–5.

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

Вот шаблон метода Confidence Reasoning Graphs. Адаптируй под мою задачу: [твоя задача и что делал агент].
Задавай вопросы, чтобы заполнить поля.

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

LLM спросит, что именно просили агента сделать, какие критерии «готово» у вас есть и как выглядит лог. Это нужно, чтобы дерево утверждений было заточено под вашу задачу, а не было общим. Затем она составит промпты шагов 1–2 и 3 под ваш случай.


⚠️

Ограничения

⚠️ Один промпт не заменяет метод: если «влить» всё в один запрос («разложи на части и оцени уверенность»), калибровка почти не улучшается. Эффект даёт оценка каждого листа в отдельном запросе.

⚠️ Нужен лог агента: метод смотрит на траекторию (шаги, вызовы инструментов, результаты). Без лога его не применить. Оценить по одному финальному отчёту нельзя.

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

⚠️ Разделение ролей не сравнено: вероятность выставляет сама модель. Если пункт не попал в дерево или доказательство не процитировано, оценщик его не увидит.

⚠️ Ранжирование не улучшилось: различать удачные и неудачные запуски CRG стал не заметно лучше простых вербальных оценок (AUROC близок). Выигрыш — в калибровке и решениях под риском.

⚠️ Стоимость и ручной труд: в статье это автоматизировано (4–7 центов за траекторию). В чате вручную — много копирования. Для каждой правки в продакшн это избыточно.

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


🔍

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

Авторы взяли три сложных бенчмарка агентов: исправление багов в реальных репозиториях (SWE-Bench Verified), корпоративные многошаговые сценарии с инструментами (EnterpriseOps-Gym) и задачи на использование навыков (SkillsBench). Три модели-агента прогнали через OpenHands, всего больше 2000 траекторий. Каждая траектория получила честную метку «успех/провал» от проверяющей программы бенчмарка. Затем разные «оценщики» должны были заранее сказать, насколько они уверены в успехе, и это сравнивали с реальностью.

Сравнивали CRG с тремя вариантами с обычным промптом: прямой вопрос об уверенности, тот же вопрос с описанием декомпозиции в промпте и десять голосований с рассуждением. Четвёртым был «суррогат»: вероятности токенов другой модели. Мерили, насколько уверенность совпадает с фактической долей успехов (ECE и Brier), умеет ли она отличать удачи от провалов (AUROC) и сколько стоит ошибка, если принимать решения по ней (BAS).

Результаты. Прямые вербальные оценки были сильно завышены: более 90% уверенности у большинства траекторий при успехе около 40–50%. У CRG ошибка калибровки примерно 0,09–0,13 против 0,18–0,49 у прямой вербализации. Её итоговая решающая польза положительна на всех бенчмарках. Ещё CRG работал на траекториях Codex и Claude Code, не только OpenHands.

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


💡

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

Это не из статьи, а мои идеи по её мотивам.

🔧 Техника: добавить требование отчёта «Подтверждено / Не проверено» в инструкцию агенту → видеть пробелы сразу.

Центральная находка статьи: типичный сбой агента — остановиться, не подтвердив результат. Это можно закрепить в файле инструкций (CLAUDE.md, AGENTS.md):

В финальном отчёте раздели результат на утверждения:
- Подтверждено: что именно ты проверил и как (команда, вывод).
- Не проверено: что не удалось проверить и почему.
Не пиши «готово», если в разделе «Не проверено» есть критичные пункты.

Это не заменяет аудит CRG, но делает слабые места видимыми без отдельного прогона.

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

Если произведение вам кажется слишком пессимистичным, возьмите минимальную вероятность по листьям и покажите, какой пункт её определяет. Авторы сравнивали правила агрегации (приложение A.9), но этот вариант не рекомендуют в тексте, поэтому используйте как грубый ориентир.


🔗

Ресурсы

  • Работа: Confidence Reasoning Graphs: Structured Confidence Estimation for LLM Agents (pre-print)
  • Авторы: Brendan King (University of California, Santa Cruz); Farima Fatahi Bayat, Jean-Flavien Bussotti, Pouya Pezeshkpour, Estevam Hruschka (Megagon Labs)
  • Код: https://github.com/megagonlabs/crg_ce
  • Идейная основа: assurance cases (аргументация безопасности в инженерии), Goal Structuring Notation (Kelly & Weaver, 2004)
  • Бенчмарки: SWE-Bench Verified, EnterpriseOps-Gym, SkillsBench; агентные фреймворки OpenHands, Codex, Claude Code
  • Точные промпты метода приведены в приложении A.12 статьи. В переданном фрагменте их нет, поэтому шаблон выше собран по описанию метода.

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

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

Агент пишет «готово», модель-судья отвечает «уверен на 90%+», а на деле задача решена примерно в половине случаев. Метод Confidence Reasoning Graphs (CRG) позволяет понять, можно ли принимать работу AI-агента без ручной проверки, и показывает, какой именно пункт сомнителен. Фишка: подробный промпт «разложи на части и оцени» в одном запросе почти не помогает. Эффект даёт оценка каждого пункта в отдельном чате. Утверждение «агент справился» режется на мелкие проверяемые листья. К каждому прикрепляются шаги из журнала работы агента. Потом каждый лист получает вероятность отдельным запросом, и всё перемножается. Одно слабое звено тянет итог вниз, и уверенный тон отчёта его не спрячет.

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

Процесс из четырёх шагов. 1. Дерево. Утверждение «агент справился» делится на части. Каждая необходима, все вместе достаточны. Глубина до 5 уровней. 2. Доказательства. К каждому листу привязаны номера шагов из журнала. Метка: «Подтверждено», «Подорвано» или «Не проверено». 3. Оценка. Каждый лист получает число от 0 до 1. Один лист — один новый чат. 4. Итог. Перемножаешь числа. Это можно сделать на калькуляторе. Метка «Не проверено» отделяет «агент не доказал» от «агент сломал». Тесты не запустились, а в отчёте «всё работает». Это именно такой случай. Он как врач, который написал «здоров», но анализы не назначил.

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

Спросишь «агент справился?» — модель смотрит на общее впечатление. Много действий, отчёт уверенный, значит, скорее всего да. Один оборвавшийся запуск тестов тонет в длинной истории. Отсюда вечные 90%+. Узкий вопрос модель решает хорошо. «Тест запускался и прошёл?» Для этого нужно найти один кусок журнала, а не оценить всё сразу. Она также неплохо замечает место, где агент остановился, не дойдя до проверки. Перемножение делает так, что одна оценка 0.2 обрушает итог, даже если остальные по 0.95. Авторы проверили, что выигрыш даёт именно оценка листьев по отдельности плюс перемножение, а не красивое дерево. Честно про минусы. Ранжировать удачные и неудачные запуски метод стал не заметно лучше простых оценок словами. Выигрыш в том, что числа стали ближе к реальности. Помогает это там, где нужно решать «принять или проверить». Перемножение предполагает, что пункты независимы. Поэтому при многих листьях итог занижен. Читай его как сигнал, а не как точную вероятность.

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

Приёмка работы AI-агента → код, миграции, настройка окружения, задачи с вызовами инструментов, особенно когда журнал длинный, а отчёт слишком оптимистичный. Решение «выкладывать или проверять руками» тоже сюда: метод покажет, какой один пункт проверять. НЕ подходит, если журнала шагов нет: по одному финальному отчёту оценить нельзя. Для творческих задач с субъективным «успехом» дерево честным не получится. Для мелких правок это лишняя возня: вручную придётся много копировать. В статье процесс автоматизирован, и один прогон стоит 4–7 центов.

Мини-рецепт

1. Забери журнал: выгрузи шаги агента с номерами. Без номеров доказательства не привязать.
2. Построй дерево в одном чате: дай задачу, журнал и утверждение «Агент успешно выполнил задачу». Попроси разделить его на независимые части и уточнить под вашу задачу. Глубина 2–3 уровня для простых задач, до 5 для сложных.
3. Привяжи доказательства: для каждого листа номера шагов, что произошло и метка. Вероятности пока не проси.
4. Оцени каждый лист отдельно: новый чат на каждый лист. Дай лист, его доказательства и журнал до последнего процитированного шага. Попроси число 0–1 и два предложения обоснования.
5. Запрети поблажки: впиши <правило>метка «Не проверено» не даёт высокую вероятность.
6. Перемножь: p1 × p2 × … × pn. Найди самый низкий лист и проверь руками именно его.
7. Не ломай схему: нельзя сливать шаг 4 в один чат. Без этого эффект пропадает.

Примеры

[ПЛОХО]: `Вот лог работы агента. Насколько ты уверен, что он справился? Ответь в процентах.` [ПЛОХО, вариант 2]: `Разложи задачу на части, оцени каждую и дай итоговую уверенность.` Всё в одном запросе, и калибровка почти не улучшается. [ХОРОШО, шаги 1–2]: `Ты — аудитор работы AI-агента. Задача: перенести приём платежей на новую версию API ЮKassa, сохранить вебхуки, возвраты и чек по 54-ФЗ. Ниже журнал шагов. Утверждение G0: «Агент успешно выполнил задачу». Раздели G0 на необходимые и независимые части, глубина до 3. Для каждой части укажи номера шагов, что произошло и метку: Подтверждено / Подорвано / Не проверено. Вероятности не ставь.` [ХОРОШО, шаг 3, новый чат на каждый лист]: `Утверждение: «Вебхуки принимаются, подпись проверяется». Доказательства: шаги 14–17, метка «Не проверено», тест оборвался на шаге 16. Журнал до шага 17: [вставь]. Оцени вероятность истинности от 0 до 1. Опирайся только на журнал. Если проверки не было, вероятность не может быть высокой. Ответ: число и 2 предложения.` Результат: у вебхуков выходит 0.25, у возвратов 0.85, у чека 0.9. Итог около 0.19. Вместо «Готово, всё работает» ты получаешь «проверь вебхуки руками перед пятничной выкладкой».
Источник: Confidence Reasoning Graphs: Structured Confidence Estimation for LLM Agents
ArXiv ID: 2610.07948 | Сгенерировано: 2026-10-07 05:10

Проблемы LLM

ПроблемаСутьКак обойти
Модель завышает уверенность в успехе длинной работыСпрашиваешь: «Насколько ты уверен, что агент справился?». Модель смотрит на общее впечатление от лога. Много действий, уверенный отчёт, значит «90%+». Один оборвавшийся запуск тестов тонет в длинной истории. Агент часто не ошибается, а просто не дошёл до проверки. В отчёте при этом «готово». Для любой задачи, где нужно решить «принять как есть или проверить руками», такая оценка бесполезнаНе проси одну общую оценку. Разбей «справился» на мелкие проверяемые утверждения. Оцени каждое отдельно по конкретным шагам лога. Подробности в методе ниже

Методы

МетодСуть
Дерево утверждений с отдельной оценкой каждого листа — честная уверенность в результатеЧто делать. 1) Разложи «задача выполнена» на части. Каждая часть необходима, все вместе достаточны, части не зависят друг от друга. Переформулируй общие пункты под конкретную задачу. Иди вглубь, пока пункт не проверяется по конкретным шагам лога. Для простых задач хватит 2–3 уровней. 2) К каждому конечному пункту привяжи шаги лога. Метка: Подтверждено, Подорвано или Не проверено. «Не проверено» значит: агент не пытался или попытка оборвалась. 3) Оцени каждый пункт в отдельном новом чате. На входе только пункт, его доказательства и лог до последнего цитируемого шага. Запрос: Оцени вероятность от 0 до 1. Опирайся только на лог. Если проверки не было, вероятность не должна быть высокой. Ответ: число и 2 предложения обоснования. 4) Перемножь числа. Итог = p1 × p2 × … × pn. Почему работает: Модель хорошо проверяет узкое утверждение по конкретным шагам. Метка «не проверено» отделяет «нет подтверждения» от «опровергнуто». Произведение не даёт общему впечатлению прикрыть слабое звено. Видно, какой пункт тянет итог вниз, и проверять руками нужно только его. Когда да: есть лог с шагами, у задачи есть чёткие критерии успеха (код, настройка, работа с инструментами), решение несёт риск. Когда нет: нет лога, есть только финальный отчёт. Задача творческая, и успех субъективен. Правка мелкая, а ручное копирование между чатами дороже самой проверки. Если пункт не попал в дерево, оценщик его не увидит

Тезисы

ТезисКомментарий
Модель надёжнее проверяет узкое утверждение, чем оценивает общее впечатлениеВопрос «тест запускался и прошёл?» привязан к конкретным шагам. Ответ можно проверить глазами. Вопрос «справился ли агент?» провоцирует оценку по тону и объёму. Применяй: любую оценку «хорошо ли сделано» превращай в набор вопросов вида «произошло ли X на шаге Y». Требуй номера шагов или цитаты
Разбивка на части в одном запросе почти не помогает. Нужен отдельный запрос на каждую частьЕсли попросить «разложи на части и оцени» одним промптом, модель всё равно возвращается к общему впечатлению. Оценка первых пунктов влияет на следующие. В отдельных чатах каждая оценка независима и опирается только на свои доказательства. Применяй: оценивай части в разных чатах или вызовах. Не складывай всё в один промпт, даже очень подробный
📖 Простыми словами

Confidence Reasoning Graphs: Structured Confidence Estimation forLLMAgents

arXiv: 2610.07948

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

Это как спросить у прораба: «Ну что, ремонт закончил?» Тот уверенно гаркнет: «Всё в ажуре, шеф!», потому что стены покрасил и мусор вынес. А то, что трубу сорвало и вода хлещет на пол, он в общем угаре даже не заметил. Верить отчёту агента целиком — это добровольно согласиться на потоп в пятницу вечером.

Чтобы вскрыть косяки, придумали метод Confidence Reasoning Graphs. Работает просто: утверждение «всё готово» безжалостно режут на мелкие проверяемые тезисы. Для каждого пункта система выдергивает строгие доказательства из логов и отправляет на проверку в изолированных запросах. В конце оценки не усредняют, а считают через перемножение вероятностей: если хоть один критический узел сбоит, итоговая уверенность летит на дно.

В исследовании пилили связку для кода, но принцип универсален. Это критично для любых автономных систем: обновления API интернет-магазина, перенос баз данных, финансовые транзакции или парсинг договоров. Везде, где цена агентской галлюцинации измеряется деньгами, нужен автоматический фактчекинг, а не слепая вера в статус «успешно выполнено».

Короче: хватит спрашивать модель, довольна ли она собой. Дроби результат на атомы, требуй жесткие пруфы и считай уверенность математически. Либо ты внедряешь структурированный аудит, либо вслепую катишь агентский код на прод и разгребаешь последствия вручную.

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

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

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