Программирование с ИИ
ENRU
3.11

Приём — пусть ИИ задаёт вопросы

способ увидеть, что ты не сказал

Что это

Перед тем как ИИ начнёт работу, попроси его задать тебе вопросы. Приём решает причину 1 из статьи 3.1 — «ты не сказал» — и решает её лучше любых шаблонов, потому что находит пропуски, о которых ты сам не догадывался.

Формулировка в одну строку:

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

Ограничение «3» существенно. Без него вопросов будет десять, половина из них мелкие, и отвечать надоест на четвёртом.

Как выглядит в коде

Задача выглядит ясной:

Запрос
Добавь в бот команду /stats — статистика пользователя за месяц.
Прежде чем писать код, задай мне 3 вопроса, ответы на которые
сильнее всего повлияют на решение.

Ответ:

Ответ ИИ
1. «За месяц» — это последние 30 дней или текущий календарный
   месяц? От этого зависит запрос к базе.
2. Статистика только по своим данным или админ может смотреть
   чужие? Это меняет проверку прав.
3. Что показывать, если данных за период нет совсем —
   нули или сообщение «нет данных»?

Все три — настоящие развилки, и ни одну из них ты в запросе не закрыл. Без вопросов получил бы три чужих решения и узнал бы о них, когда команда повела бы себя не так.

Вариант посильнее

Лучше
Прежде чем писать код: перечисли, какие решения тебе придётся
принять за меня, если я не отвечу. По каждому скажи,
что выберешь по умолчанию.

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

Ответ ИИ
Приму за тебя:
- период: последние 30 дней (проще и привычнее для ботов)
- доступ: только свои данные
- пустой период: сообщение «нет данных», не нули
- формат: список строк, без таблицы

Одной фразой «всё верно, кроме периода — нужен календарный месяц» задача закрыта.

Как сказать ИИ

Когда приём особенно полезен

  • Задача своими словами, без деталей. Когда сам ещё не додумал, как должно работать.
  • Чужая предметная область. Интеграция с незнакомым API, формат, который видишь впервые.
  • Дорогая переделка. Миграции, изменения структуры данных, всё, что потом тяжело откатывать.

Когда не нужен

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

Отвечать можно коротко

Отвечать развёрнуто не нужно, достаточно пометить:

Запрос
1 — календарный месяц
2 — только свои
3 — «нет данных»

На что смотреть

Вопросы ради вопросов. «Какой у вас стиль именования?», «Нужны ли комментарии?» — формальные вопросы, не влияющие на решение. Признак того, что задача и так ясна и приём здесь лишний.

ИИ спросил и тут же ответил сам. Иногда он задаёт вопросы и, не дожидаясь, продолжает писать код со своими допущениями. Это не страшно, но решения он принял сам — прочитай, какие именно.

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

Шпаргалка

  • «Задай 3 вопроса, которые сильнее всего повлияют на решение».

  • Ограничение числом обязательно, иначе вопросов будет десять.

  • Сильнее: «какие решения примешь за меня и что выберешь по умолчанию».

  • Отвечать можно одной строкой на вопрос.

  • На ясной задаче приём лишний — вопросы будут формальными.

  • Десяток вопросов — задача слишком широкая, разбей её.