Outcome-First Prompting: почему короткие промпты работают лучше длинных инструкций

Outcome-First Prompting: почему короткие промпты работают лучше длинных инструкций

В апреле 2026 года OpenAI выпустила официальный гайд по промптингу для GPT-5.5, который перевернул устоявшиеся практики. Главный тезис: короткие промпты, описывающие желаемый результат, работают лучше тяжёлых стэков с пошаговыми инструкциями. Это не рекомендация — это вывод из внутренних тестов на новой архитектуре.

Разберём технику Outcome-First Prompting на конкретных примерах и цифрах.

Что изменилось в подходе к промптам

Традиционный подход к промпт-инжинирингу строился на детализации процесса: чем подробнее описать каждый шаг, тем выше шанс получить нужный результат. Разработчики добавляли императивы ALWAYS, NEVER, MUST, описывали алгоритмы действий и создавали промпты на сотни строк.

OpenAI в новом гайде прямо заявляет: «Shorter, outcome-first prompts usually work better than process-heavy prompt stacks». Это касается GPT-5.5, но эксперименты показывают, что принцип работает и на Claude Opus 4.7.

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

Практический пример: обработка логов ошибок

Рассмотрим реальный кейс из рабочего проекта — скилл для обработки логов ошибок. Исходная версия промпта занимала 663 строки и содержала 36 капс-блоков с императивами.

Старый подход (134 слова):

Промпт содержал четыре блока с буллетами, четырнадцать пунктов инструкций. Основные проблемы:

  • Дублирование одной мысли четырьмя способами: «Fix root cause», «not symptoms», «not workarounds», «not just patches»
  • Императивы на judgment calls: «Never ignore errors» противоречил таблице из 60 правил auto-mute
  • Отсутствие stopping condition — модель не понимала, когда остановиться
  • Judgment под видом invariant: «Quality over speed» звучит как абсолют, но иногда быстрый патч важнее идеального решения

Новый подход (50 слов):

Промпт переписан через outcome и явные критерии остановки. Одна мысль про root cause — один раз. Outcome описывает, что значит «чисто». Отдельная фраза про границы — «не расширяй скоуп».

Результат: при тестировании на реальной ошибке (getaddrinfo EAI_AGAIN во время деплоя) короткий промпт на обеих моделях (Opus 4.7 и GPT-5.5) корректно классифицировал проблему как infrastructure, не пытался чинить application-код и не предлагал рефакторинг. Длинный вариант на обеих моделях привёл к избыточному анализу кода вокруг DNS-вызовов.

Четыре принципа техники

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

Второй принцип: императивы только для true invariants. Используйте ALWAYS/NEVER/MUST только там, где нарушение приведёт к катастрофе. Например: «NEVER DELETE FILES AUTOMATICALLY» для агента удаления кода — это инвариант безопасности. А «всегда сначала проанализируй» — это рекомендация, модель должна решить сама.

Третий принцип: явные stopping criteria. Модель должна понимать, в какой точке задача решена. Без этого она либо недокапывает, либо уходит в overthinking. Пример: «Stopping criteria: similar pattern checked, fix is committed, related issues documented as separate tasks».

Четвёртый принцип: минимум доказательств. OpenAI вводит новое понятие: «Use the minimum evidence sufficient to answer correctly, cite it precisely, then stop». Модель должна думать ровно столько, сколько нужно, и останавливаться, а не продолжать анализ поверх готового ответа.

Эксперимент: Google Stitch

Самый быстрый способ проверить принцип — Google Stitch, инструмент для генерации UI-экранов. Возьмём два промпта на одну задачу.

Промпт А — жёсткий и подробный (технический): Создай экран онбординга. Используй карточки 16:9 с тенью box-shadow: 0 4px 12px rgba(0,0,0,0.08). Заголовок 32px, подзаголовок 18px, отступы 24px, межблочные 16px. Цвета: primary #2563EB, secondary #F1F5F9, текст #0F172A.

Промпт Б — смысловой и короткий (outcome): Экран онбординга для AI-приложения. Должен ощущаться лёгким, дружелюбным, без бюрократии. Цель — чтобы новичок захотел дойти до конца за 30 секунд.

На дистанции десятков прогонов промпт Б выигрывает почти всегда. Когда вы зажимаете модель в техническую решётку — отступы, цвета, шрифты — она перестаёт делать дизайн. Она начинает заполнять решётку.

Различия между моделями

Принцип Outcome-First работает на разных моделях, но с нюансами. OpenAI рекомендует: outcome + constraints, минимум структуры, всё остальное модель решит сама. Anthropic в курсе по промпт-инжинирингу для Claude предлагает: outcome + структура (XML-теги, чёткое разделение), модель решит сама внутри структуры.

На GPT-5.5 промпт описывает «куда прийти и каких границ не пересекать». На Claude — «куда прийти, в какой структуре сложить ответ, и каких границ не пересекать». Больше структуры на Claude (XML, разделители), меньше на GPT-5.5.

Важное наблюдение: если попросить одну модель написать промпт для другой — результат избыточен. Opus 4.7 пишет для GPT-5.5 слишком структурированно, GPT-5.5 для Claude — слишком сжато. Кросс-модельная генерация промптов ломается.

Где императивы остаются

Три категории, где императивы оправданы:

  • Safety-критичные операции. Удаление файлов, изменение продакшн-базы — «NEVER DELETE FILES AUTOMATICALLY» это true invariant, нарушение приведёт к потере данных
  • Контракты и схемы. JSON-ответ для API с жёсткой схемой — поле id всегда строка, status всегда из перечня. Без императива модель будет творчески интерпретировать схему
  • Детали, которые модель должна выполнить буквально. Имя файла миграции в формате YYYYMMDD_HHMMSS_description.sql — порядок применения определяется таймстампом, любое отклонение сломает накат

Различие: ALWAYS/NEVER для invariants (нарушение = катастрофа), не для preferences (нам так больше нравится).

Что делать прямо сейчас

Пересмотрите свои промпты через призму четырёх вопросов:

  • Где я описываю процесс вместо результата?
  • Где императив стоит на judgment call, а не на invariant?
  • Есть ли явный stopping criteria?
  • Дублирую ли я одну мысль несколькими формулировками?

Не нужно выкидывать всё подряд. Нужно отличать invariant от preference, outcome от процесса. Длинные промпты с императивами на каждом шагу — это след времён, когда модели плохо держали контекст. Те модели ушли. Те промпты — пора.