Перейти к содержимому

Промптинг: как ставить задачу

Главный принцип: ставьте задачу агенту так, как ставили бы её сильному стажёру, который вышел на работу сегодня утром. Он умный, быстрый и много знает, но ничего не знает о вашем проекте, ваших договорённостях и ваших ожиданиях. Всё, что вы не сказали, он додумает сам, и не всегда так, как вам нужно.

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

  • Что сделать. Конкретный результат, а не направление мысли. «Разберись с логином» — направление. «Найди причину, по которой после логина пользователь видит пустую страницу, и исправь её» — результат.
  • Где. Файлы, каталоги, системы, документы. Агент умеет искать сам, но каждая подсказка экономит время и снижает шанс, что он полезет не туда.
  • Что не трогать. Ограничения так же важны, как цель: не менять публичный API, не трогать миграции, не переписывать соседний модуль «заодно», не менять структуру документа.
  • Как проверить. Критерий готовности: тесты проходят, проект собирается, в тексте нет цифр без источника. Если критерий выполняется командой, агент сможет проверить себя сам.

Постановка бага.

Плохо: «Поиск сломался, почини».

Хорошо: «В поиске по каталогу запрос “кофе-машина” возвращает пустой список, хотя товары с таким названием есть. Похоже, дело в обработке дефиса. Логика поиска находится в src/search/. Найди причину, исправь и добавь тест на запросы с дефисом. Индексацию не трогай. Готово, когда npm test проходит и запрос из примера возвращает товары».

Первый вариант заставляет агента угадывать, что именно сломалось и как выглядит «починено». Второй даёт воспроизводимый сценарий, место поиска, границу и проверку.

Новая функциональность.

Плохо: «Добавь экспорт в CSV».

Хорошо: «Добавь на страницу отчёта кнопку “Экспорт в CSV”. Экспортируется текущая отфильтрованная таблица, колонки как на экране. Кодировка UTF-8 с BOM, чтобы файл открывался в Excel. Посмотри, как сделан экспорт в PDF в src/reports/export/, и сделай в том же стиле. Формат отчёта и логику фильтров не меняй».

Не-кодовая задача: черновик документа.

Плохо: «Напиши анонс новой версии».

Хорошо: «Напиши черновик анонса версии 2.4 для рассылки клиентам. Аудитория — администраторы, не разработчики. Источник — CHANGELOG.md: возьми оттуда три заметных для пользователей изменения, внутренние рефакторинги пропусти. Объём до 200 слов, тон деловой, без восклицаний. Не обещай сроков по функциям, которых нет в списке изменений».

Заметьте: в «хороших» вариантах нет никакой магии. Там просто проговорено то, что автор и так держал в голове.

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

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

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

Попросите задать уточняющие вопросы. «Если для уверенного решения чего-то не хватает, сначала спроси». По умолчанию модель склонна додумывать пробелы, а не признаваться в них; эта фраза заметно меняет поведение.

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

Автор учебника — Шахматов Алексей