TL;DR
P² — техника двухшагового промптинга: сначала переводишь сложные визуальные или числовые данные в структурированный текст-справку, потом просишь LLM рассуждать уже не по сырым данным, а по этой справке. Суть в том, чтобы не давать модели необработанный массив — давать ей «прочитанный» вариант.
LLM — мощный рассуждатель, но слабый «считыватель». Когда ты показываешь модели изображение глубины, тепловую карту, таблицу координат или сложный график — она видит пиксели или цифры, но не «схватывает» пространственные паттерны. Причина в том, что модель изначально обучена на тексте: её сила в рассуждении по словам, а не в интерпретации плотных числовых матриц. В результате модель начинает угадывать по языковым статистикам («глубокие объекты обычно внизу кадра»), а не по реальным данным.
P² решает это разрывом на два шага: шаг восприятия — «что здесь есть и где?» — и шаг рассуждения — «что из этого следует?». Первый шаг создаёт компактную текстовую справку с перечнем элементов, их положением и ключевыми отношениями. Второй — отдаёт эту справку модели для финального вывода.
Схема метода
ШАГ 1 (Восприятие): Переведи данные/изображение в структурированный текст
→ перечень элементов: что + где + ключевые значения
→ отношения: как элементы соотносятся между собой
ШАГ 2 (Рассуждение): Ответь на вопрос, используя ТОЛЬКО текст из шага 1
→ финальный ответ по структурированной справке, не по сырым данным
Оба шага можно выполнить в одном диалоге: сначала попросить LLM создать P², потом в следующем сообщении попросить рассуждать по полученному тексту. Или вшить оба шага в один промпт-запрос.
Пример применения
Задача: Ты открываешь новую точку доставки и хочешь разобраться, в каком районе города удобнее всего встать. Есть скриншот карты с плотностью заказов: тёмные пятна — много заказов, светлые — мало. Нужно выбрать лучшую локацию.
Промпт:
Шаг 1. Посмотри на изображение и создай структурированное описание:
Для каждой зоны карты заполни:
- Зона: [название или координаты: верх-лево, центр, низ-право и т.д.]
- Плотность заказов: [высокая / средняя / низкая]
- Характеристика: [торговый район / жилые кварталы / промзона / etc.]
Затем добавь раздел «Отношения»:
- Перечисли пары зон и укажи: какая из двух плотнее, насколько они рядом
Шаг 2. Используя ТОЛЬКО структурированное описание выше (не смотри
на изображение повторно), ответь: где лучше всего открыть точку
самовывоза, чтобы охватить максимальный спрос при минимальном
перекрытии конкурентов?
Результат: Модель сначала выдаст «справку» — таблицу зон с их характеристиками и раздел отношений между ними. Потом, опираясь на эту справку, даст логически обоснованную рекомендацию по локации — без угадывания и без апелляции к пикселям.
Почему это работает
Слабость LLM: Модель плохо «читает» плотные данные напрямую — будь то карта глубины, тепловая карта кликов или сложная таблица. Она не ошибается в рассуждении, она ошибается в восприятии: не замечает паттерны в сырых данных и начинает опираться на языковые шаблоны вместо реального сигнала.
Сильная сторона LLM: Зато модель отлично рассуждает по структурированному тексту. Когда данные поданы как «элемент A находится слева, значение 0.8; элемент B справа, значение 0.3; A ярче B» — это уже «родной» формат модели. Она читает его без потерь.
Как P² использует это: Метод вставляет между «сырыми данными» и «финальным рассуждением» промежуточный слой — текстовую справку. Восприятие и рассуждение разделяются. Каждый шаг делает то, что умеет: инструмент (или сама модель на шаге 1) извлекает сигнал, LLM на шаге 2 рассуждает по тексту.
Рычаги управления: - Детализация шага 1 — чем подробнее перечень элементов и отношений, тем точнее рассуждение. Для простых задач можно сократить: только список + 2-3 ключевых отношения - Явный запрет на повторный просмотр — фраза «используй только описание выше, не смотри на изображение повторно» заставляет модель работать исключительно по тексту-справке - Тип отношений — настраивай под задачу: для карт это «ближе/дальше», для текста это «похоже/различается», для временных рядов — «было раньше/позже», «растёт/падает»
Шаблон промпта
Шаг 1 — Восприятие. Изучи {данные/изображение} и создай структурированное описание:
Для каждого элемента:
- Название/ID: [идентификатор]
- Положение: [где находится в {данных/изображении}]
- Значение: [{ключевая характеристика под задачу}]
Отношения между элементами:
- Перечисли пары и укажи: {тип отношений под задачу}
Шаг 2 — Рассуждение. Используя ТОЛЬКО структурированное описание выше,
ответь на вопрос: {вопрос}
Что подставлять:
- {данные/изображение} — скриншот, график, таблица, карта, фото
- {ключевая характеристика под задачу} — плотность, яркость, размер, цвет, значение метрики
- {тип отношений под задачу} — «ярче/темнее», «больше/меньше», «ближе/дальше», «похоже/различается»
- {вопрос} — конкретный вопрос по данным
Если нужно просто улучшить анализ изображения без двух шагов — добавь в начало промпта: «Сначала перечисли все ключевые элементы изображения с их расположением и характеристиками, потом отвечай на вопрос». Это лайт-версия того же принципа.
🚀 Быстрый старт — вставь в чат:
Вот шаблон двухшаговой техники Perception Programs.
Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит что именно ты анализируешь (изображение, таблица, график) и какой вопрос нужно решить — потому что тип данных определяет, какие характеристики и отношения важно извлекать на шаге 1. Она возьмёт структуру шаблона и адаптирует под твой контекст.
Ограничения
⚠️ Не выгодно для простых задач: Если вопрос однозначный и изображение простое — разделение на два шага только замедляет. Метод нужен там, где модель уже ошибается при прямом ответе.
⚠️ Шаг 1 требует качественного описания: Если ты сам составляешь справку вместо инструмента — важна точность. Неточная справка → ошибочное рассуждение. «Мусор внутрь — мусор наружу» работает и здесь.
⚠️ Субъективные данные работают хуже: Метод силён там, где есть чёткий сигнал — пространственные отношения, числовые значения, структурные паттерны. Для оценки «красиво/некрасиво» или «интересно/скучно» справка не поможет: там нет объективного сигнала для извлечения.
⚠️ Мелкие модели выигрывают меньше: Маленькие модели уже ограничены в рассуждении, поэтому даже хорошая справка даёт меньший прирост. Метод раскрывается на мощных моделях — GPT-4o, Claude 3.5+.
Как исследовали
Исследователи взяли шесть задач из бенчмарка BLINK — набора перцептивных испытаний для мультимодальных моделей: определение относительной глубины, анализ оптического потока, нахождение соответствий на парных изображениях, пространственный пазл и детекция объектов. Для каждой задачи они подключили специализированный инструмент (программа оценки глубины, трекер оптического потока и т.д.) и протестировали три режима: модель без инструментов; модель с сырым выводом инструмента; модель с P² — текстовой справкой из того же вывода.
Самый показательный результат — GPT-5 Mini на задаче многоракурсного рассуждения: без инструментов точность 41%, с сырым инструментом 45% (почти ничего), с P² — 86%. Сырые данные почти не помогли. А переведённые в текст — дали скачок в два раза. Не менее важно, что при добавлении сырого инструмента к Gemini 2.5 Pro точность вообще упала на 14 процентных пунктов — значит, неправильное представление данных активно мешает.
Любопытная деталь дизайна: исследователи специально проверили, понимает ли GPT-5 Mini карту глубины. Попросили её описать словами — и обнаружили, что при увеличении разрешения сетки модель вообще теряет относительный порядок патчей. Число ячеек в сетке растёт, а понимание глубины стремится к нулю. Это объясняет, почему «покажи картинку» не работает: у модели нет механизма читать плотные числовые паттерны.
Адаптации и экстраполяции
🔧 Адаптация: P² для анализа данных в таблицах
Тот же принцип работает с CSV и Excel-выгрузками. Вместо «вот таблица на 200 строк — что интересного?» — попроси сначала создать справку-выжимку:
Техника: Структурированная выжимка данных → резкий рост качества инсайтов
Вместо прямого анализа сырой таблицы сначала создай «перцептивную справку»: топ-5 строк по ключевой метрике, 3 аномальных значения, динамика по периодам (растёт/падает/стабильно), кластеры схожих строк. Потом просишь рассуждать только по справке.
Шаг 1. Из этих данных создай справку:
- Топ-5 строк по {метрика}: [список]
- Аномалии (выбросы >2σ от среднего): [список]
- Общая динамика: [растёт / падает / волатильна]
- Видимые кластеры или группы: [описание]
Шаг 2. Используя только справку выше, ответь: {вопрос}
🔧 Адаптация: Цепочка P² для сложных сравнений
Если нужно сравнить несколько изображений или документов — создай P² для каждого отдельно, потом попроси сравнить только справки, без повторного обращения к оригиналам:
Шаг 1А. Для {объект A} создай справку: [элементы, положение, значения]
Шаг 1Б. Для {объект B} создай справку: [те же поля]
Шаг 2. Используя только справки 1А и 1Б, укажи:
- В чём ключевые различия?
- Что у обоих одинаково?
- Вывод: {вопрос для сравнения}
Это полезно при сравнении двух коммерческих предложений, двух дизайн-макетов или двух стратегий.
Ресурсы
Статья: Don't Show Pixels, Show Cues: Unlocking Visual Tool Reasoning in Language Models via Perception Programs
Репозиторий: github.com/AISmartPerception/perception-programs
Авторы: Muhammad Kamran Janjua, Hugo Silva (Huawei Technologies, Canada), Di Niu (University of Alberta), Bahador Rashidi (Huawei Technologies, Canada)
Бенчмарк: BLINK — arxiv.org/abs/2404.12390
