LLM API и интеграция

Промпт для генерации кода: как формулировать

Промпт для генерации кода: как формулировать

Промпт для генерации кода отличается от обычного одним обстоятельством: у вашего проекта есть договорённости, которых нет нигде, кроме самого кода. Как называются функции, где лежат ошибки, какую библиотеку вы используете вместо стандартной, почему здесь стоит странная проверка — модель этого не знает и заполняет пробелы наиболее вероятным вариантом. Отсюда весь рецепт: показывать, а не объяснять. Один соседний файл из вашего репозитория задаёт стиль точнее, чем абзац требований, а названная версия библиотеки снимает целый класс ошибок с несуществующими методами. Разбираем структуру запроса и типовые промахи.

Из чего состоит хороший запрос

Шесть элементов. Первые три дают почти весь результат.

Задача одним абзацем. Что должно получиться и как это проверить. Не «напиши обработчик», а «функция принимает список заказов и возвращает сумму по завершённым, отменённые исключаются».

Пример из вашего проекта. Соседний файл или похожая функция. Это единственный надёжный способ передать соглашения: именование, структура, как у вас принято обрабатывать ошибки.

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

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

Границы. Что не трогать: не менять сигнатуру, не добавлять зависимости, не переписывать соседние функции.

Формат ответа. Только код или код с объяснением. Если результат идёт в файл, объяснение мешает.

Что показывать из проекта

Здесь ошибаются в обе стороны: показывают слишком мало или отправляют репозиторий целиком.

Нужный файл. Тот, куда пойдёт код.

Прямые зависимости. Типы и функции, которые вызываются.

Один похожий пример. Функция, решающая близкую задачу в том же стиле.

Тесты, если есть. Они лучше любого описания показывают, что считается правильным поведением.

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

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

Шесть формулировок, которые работают

Проверены на практике и дают заметную разницу.

«Напиши так, как написано в приложенном файле». Работает лучше, чем перечисление правил стиля.

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

«Если данных недостаточно — задай вопрос, а не придумывай». Модель охотно достраивает; явное разрешение спросить это гасит.

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

«Объясни, какие допущения ты принял». Самая полезная строка: обычно там и обнаруживается расхождение с вашими ожиданиями.

«Сначала перечисли граничные случаи, потом пиши код». Список читается за минуту, вы отбираете нужное — и код получается сразу с учётом отобранного.

Последний приём особенно окупается: он же даёт готовую основу для тестов — как это устроено.

Что не работает

Пять привычек, которые тратят время.

Описывать стиль словами. «Пиши чисто и читаемо» не значит ничего. Показать пример дешевле и точнее.

Просить «лучший вариант». Модель не знает ваших критериев. Спросите два варианта с объяснением разницы — выберете сами.

Наращивать инструкции после каждой неудачи. Промпт разрастается, а качество не растёт: правила противоречат друг другу, и часть перестаёт действовать — как этого избежать.

Просить сразу большой кусок. Модуль целиком получается хуже, чем три функции по очереди с проверкой между ними.

Полагаться на память о проекте. Модель ничего не помнит между запросами: всё, что нужно, кладётся в текущий запрос.

Что проверять в ответе

Четыре проверки, которые стоит сделать привычкой.

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

Не появились ли новые зависимости. Каждая — ваше решение, а не её.

Обрабатываются ли ошибки. Сгенерированный код часто предполагает, что всё пройдёт удачно.

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

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

Работа с ошибками

Отдельный сценарий, где модель полезна больше всего.

Показывайте текст ошибки целиком. Со стектрейсом, а не пересказом.

Прикладывайте код, где она возникла. Не только строку, а функцию.

Называйте версии. Одна и та же ошибка в разных версиях лечится по-разному.

Скажите, что уже пробовали. Иначе получите те же советы по кругу.

Для незнакомых ошибок это одна из самых окупаемых операций: разбор чужого стектрейса занимает у модели секунды, у человека — минуты поиска.

Сколько это стоит

Считаем, потому что расход здесь определяется контекстом, а не длиной ответа.

Файл с зависимостями — это тысячи токенов на входе. Ответ обычно короче. При ставках за миллион даже сотня задач в месяц обходится недорого — как считать токены.

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

В каталоге на 9 сентября 2026 года 49 позиций в пятнадцати семействах, из них 38 текстовых. Платные позиции начинаются от 1 ₽ за миллион, шесть текстовых тарифицируются по нулевой ставке — что там доступно.

Как выбрать модель под код

Коротко, потому что подробно разбирали отдельно.

Универсального ответа нет: результат зависит от языка, размера кодовой базы и типа задачи. Разброс внутри одного семейства часто больше, чем между семействами.

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

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

Как работать с длинной задачей

Отдельный порядок для случаев, когда нужен не один метод, а модуль.

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

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

Просите заглушки для несделанного. Явные, а не молчаливо возвращающие пустоту: так видно, что ещё не готово.

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

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

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

Чего мы не утверждаем

Не даём готовых промптов. Они пишутся под стек и соглашения проекта; чужие переносятся плохо.

Не сравниваем модели по качеству кода. Своих замеров мы не делали.

Не обещаем, что проверки ловят всё. Они ловят несуществующие вызовы и новые зависимости; логические ошибки ловит ревью.

Цифры каталога — на дату. Состояние на 9 сентября 2026 года; актуальное в живой выдаче.

Что нужно, чтобы попробовать

Ключ заводится за минуту на keydealer.ru/login — почта и пароль, без документов и без зарубежной карты. Оплата российской картой в рублях, один ключ на весь каталог: перебрать три модели на своих задачах — правка строки в конфигурации.

Платные текстовые модели доступны сразу на приветственном бонусе: взять одну реальную задачу, приложить соседний файл и сравнить с тем, что написали бы сами, — эксперимент на десять минут без пополнения.

Что держать в голове

Показывайте, а не объясняйте: один файл из вашего проекта задаёт стиль точнее абзаца требований, а названная версия библиотеки снимает самый частый класс ошибок.

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

Как мы проверяем факты и что храним из запросов — на странице о проекте и в llms.txt. Проверить на своей задаче: keydealer.ru/login.

Частые вопросы

Как правильно составить промпт для генерации кода?

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

Почему модель пишет код в чужом стиле?

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

Нужно ли показывать весь проект?

Нет. Нужный файл, его прямые зависимости и один похожий пример. Лишние файлы разбавляют внимание и увеличивают счёт.

Почему модель вызывает несуществующие функции?

Она не знает вашей версии библиотеки. Версии надо называть явно, а результат проверять — это самая частая ошибка в сгенерированном коде.

Какая модель лучше пишет код?

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

Сколько стоит генерация кода через API?

Основной расход — контекст, который вы показываете. Файл с зависимостями это тысячи токенов; при ставках за миллион даже сотня задач в месяц обходится недорого.

Источники