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

На днях я наткнулся на статью на VC.ru о том, как инженер Anthropic Тарик Шихипар работает с Claude. В основе довольно простая конструкция: перед большой задачей он раскладывает знания на четыре категории. То, что мы знаем. То, про что понимаем, что не знаем. То, что знаем настолько хорошо, что даже не считаем нужным проговаривать. И, наконец, то, о существовании чего вообще не подозреваем.

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

Тут я поймал дежавю, потому что эта конструкция напоминала что-то из старой психологии. Полез разбираться и довольно быстро провалился в кроличью нору из prompt engineering в работы 1970-х о метакогниции, затем в исследования того, способны ли языковые модели оценивать собственное знание, а оттуда обратно в Anthropic, только уже в их работы по introspection и mechanistic interpretability.

Короче, исходный совет «сначала разберитесь, чего вы не знаете» оказался только верхушкой гораздо более интересной истории.

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

Но началось всё, конечно, не с Claude.

Что вообще такое метакогниция

В 1979 году американский психолог Джон Флавелл опубликовал одну из классических работ о metacognition and cognitive monitoring. Если не издеваться над читателем терминологией, метакогниция означает примерно «знание о собственном знании»: способность не только что-то помнить, понимать или решать, но и оценивать качество собственного понимания.

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

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

Условно эту механику можно разложить на две части. Monitoring: понимаю ли я, что происходит с моим знанием? И control: что я делаю после того, как это понял?

«Я не уверен в ответе» - monitoring.
«Значит, сначала проверю источник» - control.

Спустя несколько десятилетий перед разработчиками ИИ возникла удивительно похожая задача. Только теперь система способна написать очень убедительный ответ задолго до того, как у неё появились достаточные основания быть в нём уверенной.

Anthropic спрашивали «знает ли модель, что она знает?» ещё в 2022 году

В 2022 году команда Anthropic опубликовала работу с почти буквальным названием Language Models (Mostly) Know What They Know. Исследователей интересовал вполне инженерный вопрос: способна ли языковая модель оценить, правильный ли ответ она только что дала, и понять ещё до ответа, знает ли она его вообще.

Для этого использовали две оценки. P(True) показывала оценку вероятности того, что конкретный ответ правильный. P(IK) - вероятность того, что модель вообще обладает необходимым знанием.

Результат был обнадёживающим и неудобным. Модели действительно демонстрировали некоторую способность различать более и менее надёжные собственные ответы. Но перенос на новые распределения данных и новые типы задач ухудшал calibration. Иными словами, если модель пишет «уверенность 93%», эти 93% ещё не становятся объективным измерительным прибором просто потому, что рядом появился знак процента.

Но сам вопрос уже был поставлен очень интересно: может ли система знать не только ответ, но и границы собственного знания?

К 2024 году похожая идея добралась непосредственно до prompt engineering. В работе Metacognitive Prompting Improves Understanding in Large Language Models исследователи построили prompting-схему, вдохновлённую человеческим introspective reasoning, и протестировали её на нескольких семействах моделей и NLU-задачах. Авторы получили улучшения относительно ряда сравниваемых prompting-методов.

Примерно одновременно вышла работа с ещё более прямым названием: Can AI Assistants Know What They Don't Know? Там исследователи пытались научить ассистента различать вопросы, на которые у него действительно есть необходимые знания, и вопросы за пределами его знания, где лучше отказаться от уверенного ответа.

Здесь стоит сделать важную остановку. Всё это ещё не означает, что у модели появилась метакогниция в том же смысле, в котором психолог использует этот термин применительно к человеку. Гораздо безопаснее говорить о метакогнитивном поведении или функциональных механизмах самооценки: система демонстрирует полезное нам поведение, похожее на отдельные функции человеческого monitoring и control. А что именно происходит внутри и насколько уместна психологическая аналогия - отдельный вопрос.

И Anthropic как раз пытается добраться до него с другой стороны.

Пока исследователи учили модель видеть собственные пробелы, Anthropic вернула проблему пользователю

Свежий материал Тарика Шихипара о работе с Claude начинается с хорошей аналогии: карта и территория.

Карта - всё, что пользователь передал агенту: prompt, инструкции, файлы, документация, описание проекта. Территория - реальный код, организация, пользователи, legacy, ограничения и все странные обстоятельства, которые обнаруживаются только в процессе работы.

Разрыв между картой и территорией и создаёт большую часть unknowns.

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

Шихипар раскладывает неизвестность на четыре категории.

Known knowns - факты, которые мы знаем и сообщили модели.

Known unknowns - вопросы, про которые мы понимаем, что ответа пока нет.

Unknown knowns - наши знания и предпочтения, которые кажутся нам настолько очевидными, что мы забыли их сформулировать.

Unknown unknowns - вещи, о которых мы вообще не подумали.

И именно последняя категория делает традиционный совет «просто добавьте больше контекста» немного беспомощным.

Допустим, я прошу агента спроектировать авторизацию для B2B SaaS. Я рассказал про стек, количество пользователей и роли. Возможно, я даже честно написал, что пока не решил, нужен ли SSO.

Но при этом я мог вообще не подумать про SCIM, offboarding сотрудников, service accounts, account recovery, audit logs, нескольких организаций на одного пользователя или требования конкретного compliance-режима.

Модель вполне способна начать строить архитектуру без всего этого. Более того, формально она ничего не сделала неправильно: этого не было в задаче.

Ошибка появилась раньше. Я неверно оценил полноту собственной постановки.

И бац, prompt engineering начинает по чуть-чуть меняться

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

Всё это по-прежнему полезно. Но в случае unknown unknowns есть принципиальная проблема: невозможно добавить в prompt информацию, о существовании которой ты сам не знаешь.

Поэтому между постановкой задачи и её выполнением появляется ещё один этап: исследование самой постановки.

У Шихипара для этого есть blind spot pass: до начала реализации попросить Claude поискать важные обстоятельства, ограничения и вопросы, которые пользователь мог не заметить. Он также предлагает использовать интервью, несколько прототипов, референсы, планирование и implementation notes, чтобы новые неизвестные не растворялись по дороге.

На практике из этого можно собрать довольно простой рабочий протокол:

Не начинай выполнять задачу сразу. Сначала проанализируй её постановку.

1. Зафиксируй факты и ограничения, которые явно следуют из моего запроса.

2. Укажи вопросы, ответы на которые пока неизвестны и способны существенно изменить решение.

3. Перечисли предположения, которые тебе пришлось бы сделать из-за отсутствующего контекста.

4. Сделай blind spot pass: найди важные классы рисков, требований или ограничений, которые я мог вообще не учесть.

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

6. Задай только те вопросы, ответы на которые действительно могут изменить решение. После этого предложи план выполнения задачи.

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

В таком виде метакогнитивный слой становится не психологической метафорой, а довольно понятным механизмом управления неопределённостью.

Но модель ведь может ошибиться даже в том, чего она якобы не знает

Если LLM способна галлюцинировать ответ, почему мы решили, что она не способна галлюцинировать собственную неуверенность?

Никаких причин так считать у нас нет.

В работе Anthropic по introspection исследователи уже не просто спрашивали модель о её внутреннем состоянии, а вмешивались во внутренние активации и проверяли, способна ли она обнаружить искусственно внедрённый концепт. Некоторые модели действительно демонстрировали такую способность, но она была нестабильной и сильно зависела от условий эксперимента.

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

Мы не нашли внутри Transformer маленького психолога, который время от времени сообщает: «Коллеги, кажется, у нас epistemic uncertainty».

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

Почему здесь постоянно появляется Anthropic

Дарио Амодей в эссе The Urgency of Interpretability формулирует проблему ещё жёстче: мы создаём чрезвычайно мощные системы, внутреннюю работу которых сами понимаем лишь частично.

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

Отсюда и большой интерес Anthropic к mechanistic interpretability. Если обычная медицина получила MRI и другие способы заглянуть внутрь организма, исследователи ИИ хотят получить аналогичные инструменты для моделей: не только наблюдать внешний ответ, но и понимать, какие внутренние представления и вычислительные цепочки привели к нему.

И если положить рядом исследования Anthropic последних лет, становится видно несколько разных уровней одной проблемы.

На уровне пользователя: чего я не учёл в задаче?

На уровне поведения модели: понимает ли она, что информации недостаточно?

На уровне self-report: может ли она корректно сообщить о собственном состоянии?

На уровне interpretability: можем ли мы проверить это независимо от её рассказа?

Именно поэтому мне кажется полезным смотреть на всю эту линию через метакогницию.

Где находятся границы знания и как обнаружить их до того, как ошибка превратится в уверенный ответ или действие?

Практический вывод здесь таков

Если свести всё выше к рабочей схеме, получается примерно такой цикл:

задача → карта известного и неизвестного → способ закрыть пробелы → выполнение → внешняя проверка → обновление контекста → следующий шаг

Причём разные типы неизвестности требуют разных действий.

Если неизвестно пользовательское предпочтение, агент должен спросить человека. Если отсутствует факт, найти источник. Если неизвестно поведение кода, запустить тест. Если спор идёт об архитектуре, построить несколько вариантов. Если предположение обратимо и не критично, его можно принять, но явно зафиксировать.

Здесь появляется полноценный control loop.

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

Но, я вообще предлагаю не верить всему написанному выше на слово, а проверить своими руками. Возьмите один сложный запрос, сначала отправьте его модели как обычно, а потом прогоните ещё раз через протокол с known unknowns, предположениями и blind spot pass. А после дайте тот же запрос другой модели. Разница иногда получается гораздо интереснее самого ответа.

Я такие вещи проверяю в LLM Studio от SYNTX.AI: там в одном интерфейсе доступны Claude, GPT, Gemini и другие модели, поэтому не нужно держать несколько подписок и прыгать между сервисами. Один запрос, одинаковый контекст, разные модели — и уже хорошо видно, кто действительно пытается найти пробелы в постановке, а кто бодро начинает додумывать за вас.

Если захотите повторить эксперимент из статьи, можете просто забрать промпт выше и прогнать его там. Для читателей Хабра оставлю промокод CTRLAI - он даёт скидку 20% на тариф. А если получите особенно странный или, наоборот, неожиданно хороший результат, приносите его в комментарии: мне самому интересно посмотреть, насколько сильно эта штука зависит от конкретной модели.

Здесь это, кстати, не только способ выбрать «модель получше». Само расхождение результатов становится полезным сигналом: если несколько сильных моделей независимо находят разные blind spots, возможно, проблема действительно плохо определена.

Конец инженерии и начало антропоморфизации

Здесь для меня остаётся открытый вопрос.

Если система умеет обнаружить нехватку данных, запросить дополнительный контекст, выбрать способ проверки и изменить своё действие после ошибки, достаточно ли этого, чтобы называть поведение метакогнитивным?

Или мы просто взяли термин из психологии и положили его поверх обычного planner → verifier → tools → memory?

У второго ответа есть сильный аргумент. Для инженера всё происходящее действительно можно описать без каких-либо ссылок на человеческое сознание: классифицируем uncertainty, выбираем policy, запускаем verifier, обновляем state.

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

Самый полезный вопрос из всей этой истории

Не:

«Какой правильный ответ?»

А:

«Что должно оказаться правдой, чтобы этот ответ вообще был правильным?»

И второй, который нравится мне ещё больше:

«Что мы сейчас считаем известным только потому, что никто пока не догадался это проверить?»

Где вы проводите границу? Metacognition - полезная инженерная модель для современных агентов или красивая психологическая обёртка вокруг обычного контроля и верификации?

И если модель должна искать наши blind spots, кто в этот момент ищет blind spots самой модели?

Комментарии (4)


  1. agray
    23.09.2026 05:43

    Какие забавные заблуждения.

    Как статистическая модель, которая обучалась исключительно на "знаниях", сможет выдать вероятность того, чего никогда не было, вопроса который никогда не существовал, предложения, которое никогда не писалось? Никак.

    Не существует никакого волшебного промта или подхода. Магии не существует. Волшебства нет. Дед Мороз умер за наши грехи.


    1. olku
      23.09.2026 05:43

      Сломанная логика это показатель слопа. Несколько раз повторенное не становится верным для человека, но похоже будет влиять на результат выдачи ллм


    1. Ka463
      23.09.2026 05:43

      Просто опять пытаются натянуть сову на глобус, выдать то чего нет.


    1. syntxaiofficial Автор
      23.09.2026 05:43

      Я понимаю желание первым зайти в комментарии и сообщить автору, что магии не существует, но с этим в статье вроде никто и не спорил.

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

      Более того, в статье специально несколько раз написано, что self-report модели нельзя принимать за объективную истину, а оценка собственной уверенности не является волшебным детектором ошибок. Именно поэтому там есть ссылки на работы про calibration, introspection и interpretability.

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