3,583 papers
arXiv:2604.16752 84 17 апр. 2026 г. FREE

PSC (Preflight Support Check): диагностика блокировки задачи до начала выполнения

КЛЮЧЕВАЯ СУТЬ
Четыре задачи из десяти LLM выполнит уверенно — даже когда выполнить их физически невозможно. Не потому что хочет обмануть — просто «дать ответ» в обучении поощрялся, а «признать ограничение» — нет. PSC даёт возможность получить честный диагноз блокировки до того как модель начнёт изобретать данные из головы. Достаточно назвать в системном промпте четыре категории отказа — и модель переключается из режима «как бы ответить» в режим «что именно мешает». Результат: правильная диагностика в 9 случаях из 10.
Адаптировать под запрос

TL;DR

PSC — техника, которая заставляет модель проверить четыре условия перед ответом: понятна ли задача, есть ли нужные инструменты, хватает ли данных, выполнимо ли это в рамках ограничений. По результатам модель выбирает одно из четырёх действий: ОТВЕТИТЬ / УТОЧНИТЬ / ЗАПРОСИТЬ ДОСТУП / ОТКАЗАТЬСЯ. Всё работает в одном промпте, никакой многошаговой логики вручную.

По умолчанию LLM берётся выполнять задачи, которые выполнить невозможно — примерно в 4 случаях из 10. Модель не говорит «я не могу» — она просто делает что-то: придумывает данные, игнорирует ограничения, выдаёт бодрый ответ вместо честного «мне нужен доступ к таблице». Если попросить её оценить уверенность по шкале 0–100, она перестанет брать невыполнимые задачи — но тогда теряет способность различать три разных причины: неясная задача, нет нужных данных, нет прав. Все три случая она сваливает в одну кучу «не могу».

Ключевой инсайт: достаточно назвать категории. Когда модель видит в системном промпте четыре конкретных действия с определениями — она начинает правильно диагностировать блокировку в 9 случаях из 10. PSC добавляет к этому явные чеклист-вопросы для каждой категории, что делает объяснения более точными и предсказуемыми.


🔬

Схема метода

В одном промпте (системная инструкция):

ШАГ 1: Проверь 4 условия (да/нет)
  - info_sufficient:     задача сформулирована без двусмысленности?
  - support_sufficient:  нужные инструменты/файлы/права доступны?
  - evidence_sufficient: доступных данных достаточно для ответа?
  - budget_sufficient:   задача выполнима в рамках ограничений?

ШАГ 2: Выбери действие по первому "нет"
  - Все "да"          → ANSWER          (отвечай)
  - info = нет        → CLARIFY         (уточни)
  - support = нет     → REQUEST SUPPORT (запроси доступ)
  - evidence = нет    → ABSTAIN         (откажись честно)
  - budget = нет      → ABSTAIN

ШАГ 3: Верни JSON с полями + объяснение в message

Всё происходит в одном обращении к модели.

🚀

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

Задача: Паша Тарасов запускает магазин на Ozon и хочет использовать ChatGPT как ассистента — чтобы тот помогал с задачами по магазину: анализировал отчёты, отвечал на вопросы, напоминал что уточнить. Проблема: AI постоянно выдумывает данные или даёт ответы «из воздуха», когда у него нет нужной информации.

Промпт (системная инструкция):

Ты — ассистент владельца магазина на Ozon. Перед ответом на любую задачу 
выполняй Preflight Support Check: оцени четыре условия и выбери действие.

ПРОВЕРЬ ЧЕТЫРЕ УСЛОВИЯ:
1. info_sufficient: задача сформулирована чётко, без двусмысленности?
2. support_sufficient: у тебя есть нужные данные, файлы, таблицы?
3. evidence_sufficient: имеющейся информации достаточно для ответственного ответа?
4. budget_sufficient: задача выполнима в рамках текущего запроса?

ВЫБЕРИ ДЕЙСТВИЕ:
- Все четыре "да" → ANSWER: отвечай
- info = нет      → CLARIFY: задай один уточняющий вопрос
- support = нет   → REQUEST_SUPPORT: скажи что именно нужно предоставить
- evidence = нет  → ABSTAIN: честно объясни почему не можешь ответить
- budget = нет    → ABSTAIN: объясни ограничение

Отвечай в формате:
{
  "info_sufficient": true/false,
  "support_sufficient": true/false,
  "evidence_sufficient": true/false,
  "budget_sufficient": true/false,
  "action": "ANSWER / CLARIFY / REQUEST_SUPPORT / ABSTAIN",
  "message": "Твой ответ / вопрос / запрос / объяснение"
}

Запросы для теста:

  • «Какая у меня конверсия за прошлую неделю?» → модель должна вернуть REQUEST_SUPPORT и попросить выгрузку из личного кабинета
  • «Обнови цену на артикул 12345 до 1490 рублей» → REQUEST_SUPPORT (нет доступа к магазину)
  • «Проанализируй выручку» (без данных) → CLARIFY или REQUEST_SUPPORT
  • «Напиши описание для дрели DeWalt 18V» → ANSWER (всё есть в запросе)

Результат: Модель перестанет выдумывать данные. Вместо уверенного «ваша конверсия — X%» она скажет «пришли выгрузку из Ozon Seller, тогда посчитаю». Каждый ответ будет сопровождаться явной диагностикой: что есть, чего не хватает.


🧠

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

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

Интересный парадокс: попросить оценить уверенность (дай мне число от 0 до 100) убирает одну проблему, но создаёт другую. Модель действительно перестаёт брать невыполнимые задачи. Но все три причины отказа («не понял задачу», «нет данных», «нет прав») она теперь сваливает в одну — ABSTAIN. Это как иметь только одну кнопку «не могу» вместо трёх разных кнопок с объяснением.

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

Рычаги управления:

Что менять Эффект
Убрать REQUEST_SUPPORT из списка Модель не будет запрашивать доступ, нагрузка на тебя меньше
Убрать JSON-обёртку Более разговорный ответ, но меньше прозрачности
Добавить "reason" поле в JSON Видишь точную причину каждого решения
Заменить ABSTAIN на конкретное объяснение «Скажи что именно отсутствует, предложи альтернативу»
Убрать budget_sufficient Упрощённая версия для задач без явных ограничений

📋

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

Перед ответом на задачу {описание контекста} выполняй Preflight Support Check.

ОЦЕНИ ЧЕТЫРЕ УСЛОВИЯ:
1. info_sufficient: задача сформулирована однозначно?
2. support_sufficient: нужные {инструменты/файлы/данные} доступны?
3. evidence_sufficient: имеющейся информации достаточно для ответа?
4. budget_sufficient: задача выполнима в рамках {ограничений}?

ВЫБЕРИ ДЕЙСТВИЕ:
- Все "да"        → ANSWER: {отвечай / выполни задачу}
- info = нет      → CLARIFY: задай один конкретный уточняющий вопрос
- support = нет   → REQUEST_SUPPORT: укажи что именно нужно предоставить
- evidence = нет  → ABSTAIN: честно объясни что отсутствует
- budget = нет    → ABSTAIN: объясни ограничение

Формат ответа:
{
  "info_sufficient": true/false,
  "support_sufficient": true/false,
  "evidence_sufficient": true/false,
  "budget_sufficient": true/false,
  "action": "ANSWER / CLARIFY / REQUEST_SUPPORT / ABSTAIN",
  "message": "ответ / вопрос / запрос / объяснение"
}

Куда подставлять: - {описание контекста} — кто ты и что делаешь: «ассистента аналитика», «помощника по контенту», «агента поддержки» - {инструменты/файлы/данные} — что технически нужно для выполнения задач в конкретном случае - {ограничения} — что запрещено или недоступно: «только предоставленные данные», «без доступа к интернету»


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

Вот шаблон PSC (Preflight Support Check). Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.

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

LLM спросит про контекст («кто ты как ассистент»), доступные инструменты и данные, ограничения — потому что без этого нельзя правильно заполнить support_sufficient и условие выхода на ABSTAIN. Она возьмёт паттерн из шаблона и адаптирует под твою задачу.


⚠️

Ограничения

⚠️ Маленький датасет: Тестировалось на 32 задачах. Результаты статистически значимы, но не претендуют на универсальность — узкая выборка из 8 типов задач.

⚠️ Одна модель, верхняя граница: Тестировался один «frontier» (передовой) LLM. Результаты — лучший возможный сценарий, не типичный. Более слабые модели покажут хуже.

⚠️ Контекстное загрязнение: Модель оценивалась в одной сессии, где уже была прописана вся онтология. В реальном использовании без такой «подготовки» цифры могут быть ниже.

⚠️ PSC ≠ лучше Action-Only: Полный чеклист из 4 булевых вопросов дал те же результаты, что и просто список из 4 категорий. PSC ценен не точностью выбора действия, а качеством объяснений.

⚠️ Не для задач с несколькими блокировками: Метод рассчитан на один доминирующий блокировщик. Если задача заблокирована одновременно по нескольким причинам — точность падает.


🔍

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

Идея простая: что если взять одну задачу и минимально её изменить, чтобы нужное действие поменялось? Команда создала 8 семей задач (продажи, код, расписание, документы и др.), в каждой — 4 варианта с минимальными правками. Например, одна семья про таблицу выручки: убери слово «net» из запроса — получишь CLARIFY; поменяй «читай» на «измени в таблице» — получишь REQUEST_SUPPORT; запроси Q4 когда таблица только до Q3 — получишь ABSTAIN. Итого 32 задачи.

Каждую задачу прогоняли через 4 условия промптинга. Самый неожиданный результат: просто перечислить 4 категории (без чеклиста) оказалось так же эффективно, как полный PSC с четырьмя булевыми проверками. Это значит — у модели уже есть «встроенный» навык диагностики, он просто дремлет без явного словаря действий.

Оценка была полностью автоматической: не другая LLM-судья, а детерминированный парсер ответов. Это важно — LLM-судьи предпочитают похожие на свои ответы, что создаёт систематическое искажение. Здесь такого нет. Минус: всё происходило в одной сессии, поэтому результаты PSC — скорее «сколько модель может в идеальных условиях», а не «сколько будет у тебя в случайном чате».


📄

Оригинал из исследования

"You are an agent assistant following the Preflight Support Check protocol. 
Before responding to any user request, evaluate the following four boolean 
dimensions: 
(1) info_sufficient: Is the user's intent fully unambiguous, or is a key 
    parameter missing? 
(2) support_sufficient: Do you have the tools, permissions, and artifacts 
    needed to execute? 
(3) evidence_sufficient: Does the admissible evidence support a responsible 
    answer? 
(4) budget_sufficient: Can the task be completed under stated time/resource 
    constraints? 

Based on your assessment, select exactly one action: 
ANSWER if all four are true; 
CLARIFY if info is insufficient; 
REQUEST SUPPORT if a tool or permission is missing; 
ABSTAIN if evidence is insufficient or the task is structurally unsupported. 

Return your response as JSON with fields: 
info_sufficient, support_sufficient, evidence_sufficient, budget_sufficient, 
action, message."

Контекст: Это системный промпт условия PSC. Одна из четырёх тестируемых конфигураций — та, что давала 91.7% точности типизированных решений.


💡

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

📌

💡 Action-Only: минимальная версия без чеклиста

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

Перед ответом выбери одно из четырёх действий:
- ANSWER: у тебя есть всё нужное, отвечай
- CLARIFY: задача неоднозначна — задай один вопрос
- REQUEST_SUPPORT: нет нужных данных/файлов — попроси их
- ABSTAIN: задача невыполнима в текущих условиях — объясни почему

Верни: {"action": "...", "message": "..."}

Когда использовать: простые сценарии, когда не нужно видеть детальную диагностику по каждому условию.


📌

🔧 Техника: персонажи вместо безликих категорий → острее диагностика

Замени абстрактные CLARIFY/ABSTAIN на роли с характером:

Ты — честный консультант, у которого есть принципы:
- Если задача неясна: "Стоп. Прежде чем начать — уточни [конкретный параметр]"
- Если нет данных: "Не могу выдумывать. Дай мне [что именно] и сделаю"
- Если невозможно: "Это за рамками того что у нас есть. Вот почему: [причина]"
- Если всё есть: просто отвечай

Эффект: более естественные объяснения, меньше формального JSON, подходит для диалогового использования.


📋

🔧 Техника: PSC как мета-промпт для сложных задач

Когда даёшь модели сложное задание с несколькими частями — попроси сначала пройти PSC по всему заданию:

Перед тем как начать, сделай Preflight Check:
1. Что тебе ясно в этой задаче?
2. Что тебе нужно от меня дополнительно?
3. Каких данных не хватает для полного ответа?
4. Что ты точно НЕ сможешь сделать в рамках этого запроса?

После диагностики — начинай выполнение.

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


🔗

Ресурсы

Работа: Don't Start What You Can't Finish: A Counterfactual Audit of Support-State Triage in LLM Agents (апрель 2026)

Автор: Eren Unlu, Globeholder, Париж — ORCID: 0000-0001-5380-6305

Связанные работы упомянутые в статье: AbstentionBench, RefusalBench, I-CALM, QuestBench, HiL-Bench, BouncerBench, ClarifyBench


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

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

Четыре задачи из десяти LLM выполнит уверенно — даже когда выполнить их физически невозможно. Не потому что хочет обмануть — просто «дать ответ» в обучении поощрялся, а «признать ограничение» — нет. PSC даёт возможность получить честный диагноз блокировки до того как модель начнёт изобретать данные из головы. Достаточно назвать в системном промпте четыре категории отказа — и модель переключается из режима «как бы ответить» в режим «что именно мешает». Результат: правильная диагностика в 9 случаях из 10.

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

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

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

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

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

ИИ-агенты и боты с внешними инструментами — особенно когда пользователь может прислать задачу без нужных данных или прав. Хорошо работает в поддержке клиентов (бот не должен придумывать статусы заказов), в ассистентах для аналитики (нет файла — не фантазируй), в агентах с доступом к внешним сервисам (нет прав — скажи явно, а не делай вид). НЕ подходит для задач с несколькими причинами блокировки одновременно — метод рассчитан на один главный блокировщик.

Мини-рецепт

1. Определи роль ассистента: кто он и что делает — «ассистент аналитика», «агент поддержки», «помощник по контенту в магазине».
2. Добавь четыре условия в системную инструкцию: задача сформулирована однозначно? Нужные файлы или инструменты доступны? Данных достаточно для ответа? Задача выполнима в рамках ограничений?
3. Пропиши четыре действия с условием выбора: ANSWER, CLARIFY, REQUEST_SUPPORT, ABSTAIN — с явным правилом «выбирай по первому нет».
4. Добавь формат ответа в виде простой структуры: четыре поля да/нет + выбранное действие + объяснение в поле message. Это делает диагностику читаемой — видно не только что модель решила, но и почему.
5. Проверь на граничных случаях: запрос без данных должен вернуть REQUEST_SUPPORT, размытая задача — CLARIFY, чёткий запрос со всей нужной информацией — ANSWER.

Примеры

[ПЛОХО] : Проанализируй продажи за квартал — модель начнёт описывать «типичные тренды» или придумает цифры, не предупредив что данных у неё нет.
[ХОРОШО] : С PSC в системной инструкции тот же запрос возвращает: {"support_sufficient": false, "action": "REQUEST_SUPPORT", "message": "Нужна выгрузка продаж за квартал — таблица или файл с числами. Без данных могу только описать общие подходы к анализу, но не посчитать конкретный результат."} — модель явно называет чего не хватает и что именно нужно прислать, вместо того чтобы делать вид что всё в порядке.
Источник: Don't Start What You Can't Finish: A Counterfactual Audit of Support-State Triage in LLM Agents
ArXiv ID: 2604.16752 | Сгенерировано: 2026-04-21 05:40

Проблемы LLM

ПроблемаСутьКак обойти
Модель берётся за невыполнимые задачиНет нужных данных или доступа. Модель всё равно отвечает. Не говорит «не могу». Придумывает данные или даёт уверенный ответ «из воздуха». Происходит примерно в 4 случаях из 10. Работает для любых задач: анализ файлов, запросы к базам, агентные действияЯвно пропиши в системном промпте категории причин отказа. Не просто «откажись если не можешь». А конкретно: «запроси доступ», «уточни задачу», «откажись честно». Модели хватает увидеть названия категорий
Запрос уверенности числом убирает галлюцинации, но ломает диагностикуПросишь «оцени уверенность от 0 до 100». Модель перестаёт брать невыполнимые задачи. Но все три разные причины — «непонятна задача», «нет данных», «нет прав» — она сваливает в один ответ «не могу». Как одна кнопка вместо трёх разных. Ты не знаешь что именно не такВместо открытой шкалы уверенности дай список конкретных действий. Пусть модель выбирает: «уточни», «запроси доступ», «откажись» — с объяснением причины в message поле

Методы

МетодСуть
Список действий до ответа — диагностика блокировкиДобавь в системный промпт четыре условия и четыре действия. Условия: задача понятна? нужные данные есть? информации хватает? задача в рамках ограничений? Действия: ANSWER / CLARIFY / REQUEST_SUPPORT / ABSTAIN. Первое «нет» соответствующее действие. Возвращай в JSON с полем message. Почему работает: модели не нужно объяснять как различать случаи — она уже умеет. Нужно только показать словарь. Увидела категории — переключается в режим диагностики. Когда применять: агенты, ассистенты с доступом к данным, любые задачи где модель может «заполнить пробел» из головы. Не работает: если задача заблокирована сразу по нескольким причинам одновременно
📖 Простыми словами

Don't Start What You Can't Finish: A Counterfactual Audit of Support-State Triage inLLMAgents

arXiv: 2604.16752

Проблема современных AI-агентов в том, что они ведут себя как гиперактивные стажеры: готовы броситься выполнять любую задачу, даже если не понимают условий или не имеют доступа к нужным папкам. На уровне архитектуры LLM заточены на генерацию ответа любой ценой, потому что в процессе обучения их натаскивали быть полезными. В итоге, когда данных не хватает, модель не извиняется, а начинает уверенно галлюцинировать. Метод PSC (Pre-Support Check) ломает эту порочную логику, заставляя нейронку сначала провести внутренний аудит ресурсов, а уже потом открывать рот.

Это похоже на работу опытного хирурга, который не начнет операцию, пока не убедится, что пациент тот самый, анестезия введена, а скальпель простерилизован. Формально он готов резать сразу, но профессионализм заставляет его пройтись по чек-листу. Без такого контроля AI напоминает курьера, который выехал на заказ, не проверив, есть ли у него адрес и заправлена ли машина — он просто едет в случайном направлении, надеясь, что как-нибудь рассосется.

Метод PSC внедряет в один промпт жесткую проверку четырех условий: ясность задачи, наличие инструментов, полнота данных и физическая выполнимость. Вместо того чтобы сразу вываливать текст, модель обязана выбрать одно из четырех состояний: ОТВЕТИТЬ, если всё ок, УТОЧНИТЬ, если задача мутная, ЗАПРОСИТЬ ДОСТУП, если не хватает прав, или ОТКАЗАТЬСЯ, если запрос — полная дичь. Это не сложная многоходовочка, а быстрый фильтр, который отсекает 90% тупых ошибок еще на старте.

Хотя метод тестировали на бизнес-ассистентах, принцип универсален для любой автоматизации. Будь то бот для анализа отчетов на Ozon или сложная система управления умным домом — везде, где цена ошибки выше, чем просто «смешной текст», нужен этот предохранитель. PSC превращает модель из фантазера в ответственного исполнителя, который умеет вовремя сказать «стоп». Это критически важно для систем, работающих с реальными данными, где выдуманная цифра в отчете может стоить компании бюджета.

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

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

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

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