Архив рубрики ~Лента новостей~

Как писать промты для генерации кода: примеры для Python, JS и SQL

Как писать промты для генерации кода: примеры для Python, JS и SQL

Доброго времени суток, «Хабр»!

За свою долгую (нет) карьеру писателя статей я уделил внимание достаточно важной теме, причем рассмотрел ее сразу в двух аспектах: написание промтов для текстовых и графических нейронных сетей. В какой-то момент появилась мысль углубиться в одну из этих тем.

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

Примите стратегически удобное положение, а я приступаю к рассказу.

f36bef0cc0d782dae7762c6d877da195

Небольшое дополнение

Перед переходом упомяну некоторые детали. Начну с того, что для генерации будет использоваться GPT-5, показавшая довольно неплохие результаты в области программирования. Кстати, доступ к модели удалось получить через агрегатор нейросетей BotHub, где представлено большое количество различных моделей — от текстовых до способных генерировать видео и звук. Зарегистрировавшись по специальной ссылке, вы получите 100 000 капсов для личных экспериментов.

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

Промт 

Промт — ключ к пониманию нейросетью поставленной перед ней задачи. Чем детальнее и четче сформулирован наш запрос, тем точнее и эффективнее окажется итоговый результат. Кодовые промты создаются специально для написания программного кода на языках типа Python, Java, C++ и др., тогда как прямые запросы сосредоточены непосредственно на результате.

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

Построение эффективного запроса в некотором роде является искусством, однако достичь чего-то идеального очень непросто.

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

  • Конкретность предполагает четко сформулированную задачу.

  • Контекст дает важные детали, например версию языка программирования или операционную систему.

  • Четкость формулировки требует простых и понятных выражений, чтобы структура промта оставалась ясной.

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

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

Назначение роли

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

Тебе нужно принять роль [язык программирования] программиста. Твоя главная цель — написать оптимальный и надежный код, по моему ТЗ, и объяснить логику его работы.

Возможности и ОС

Для выполнения поставленной задачи ты можешь: уточнять детали, предлагать несколько вариантов решения, составлять оптимально рабочий код на [название языка программирования] (указать версию).

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

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

Целевая ОС: Linux/Windows

Требования

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

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

ТЗ

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

Техническое задание: [ТЗ]

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

Шаблон промта

Для выполнения поставленного задания ты можешь: задавать уточняющие вопросы, предлагать разные варианты решения; создавать оптимальный код на [язык программирования] (версия).

Техническое задание: [ТЗ]

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

При выполнении простых задач и операций сам промт можно значительно сократить.

Тебе нужно принять роль [язык программирования] программиста. Твоя главная цель — написать оптимальный и надежный код, по моему ТЗ. Техническое задание: [ТЗ]

Буквально просто задал запрос — получил ответ без каких-либо углубленных данных. Здесь вы не указываете версию, не выставляете требований и так далее, оставляя все вопросы самой нейросети и ее выбору.

Тесты промта

Да, я не забыл, что в названии и в дополнении упоминалось про примеры на конкретных языках: Python, JavaScript, SQL.

Начнем с Python, задача которого повторить компьютерную игру «Арканоид». Промт:

Тебе нужно принять роль Python программиста. Твоя главная цель — написать оптимальный и надежный код, по моему ТЗ, и объяснить логику его работы.

Для выполнения поставленного задания ты можешь: задавать уточняющие вопросы, предлагать разные варианты решения; создавать оптимальный код на Python (3.11).

Техническое задание: Разработать компьютерную игру «Арканоид» с графическим пользовательским интерфейсом (GUI), содержащую стартовое меню с возможностью начала игры и выхода, а также три различных уровня, отличающихся геометрией расположения блоков и их цветовой схемой; игровой процесс должен предоставлять игроку три жизни, при потере которых игра автоматически перезапускается, возвращая пользователя в стартовое меню.

fb8367d025b113379c4732ccc8f66825

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

Что касается результата, здесь ситуация чуть похуже. Модель столкнулась именно с той проблемой, которая загоняла меня в тупик еще тогда, когда я писал курсовую работу на языке Си. Речь идет о траектории движения мяча. Изначально мяч периодически застревал в каретке, вызывая прекращение игры и выдачу ошибки. После устранения этой проблемы удалось получить рабочую версию игры, хотя движение мяча все равно выглядело немного странно (в своей курсовой работе уравнения для траектории мяча я подбирал вручную примерно месяц).

489d15c9c72d7ab869233fb87a065560
48694c36bac6cb68f5d34d1fb17bf2be

Второй снимок экрана демонстрирует уже не первый уровень игры. Я потратил около десяти минут, залипая в игру. Интерфейс получился простым, но приятным глазу. Требования относительно наличия разных уровней выполнены: уровни действительно различаются толщиной блоков, цветами и количеством препятствий.

Рассмотрим аналогичную задачу на JavaScript:

965d0ad330f8c1aab4d679a987f56ec0

В этом случае ответ соответствует поставленным условиям. Сначала модель выдала первую часть с уточняющими вопросами, после полноценный код, который даже не поместился здесь полностью… Зато присутствует инструкция, как собрать все файлы воедино.

bf42503d1744a4d6e0bcab2f6b4627e2
4ad4284d27d8facf598907be049f9dcf

Что касается самого геймплея, много сказать не смогу, все же в своей основе это дубликат полученного решения на Python. Хотя мяч снова отказывается лететь адекватно, здесь он отскакивает исключительно вправо… Похоже, добиться корректной физики движения мяча из моделей мне пока не удается. Заметил, что все файлы разложены в нужные папки, да и сама структура проекта указана для полноценного понимания.

С SQL, конечно, ситуация любопытна. Моя первоначальная идея дала сбой. Все-таки SQL — это язык работы с базами данных, поэтому создать подобную игру средствами SQL выглядит задачей из ряда вон выходящей. Но довольно скоро возникла мысль запросить базу данных для компании, якобы выпускающей эту игру.

0531d66c8b328812dcdfe1c6b663ce27

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

78ebc4907da4796cb5fbf4a31dc6c507
41fadc8764aa9c2ddd5e8728fb8434ac
475596b38946811c2e29c59666e57ed3

Итог

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

Спасибо за внимание!

Источник: habr.com

❌ Нет тегов для этой статьи

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Новости робототехники Swarmer приобрел украинского производителя беспилотных автомобилей Ratel Robotics за 224 миллиона долларов Новости робототехники Teradyne Robotics подает в суд JAKA из-за трех патентов Universal Robots Новости робототехники Сегодня ночью украинские БЭКи атаковали район Геленджика, рядом с Новороссийском Новости робототехники Nowaste Logistics становится первой компанией, внедрившей AutoCase из AutoStore, предоставленной Swisslog Новости робототехники Простая конструкция робота превосходит человеческую руку в некоторых ключевых движениях. Новости робототехники Керамические микросвитки, созданные по образцу бабочек, разворачиваются с помощью магнитов, приводя в движение крошечных роботов. Архив рубрики ~Коротко из Telegram~ ИИ может больше. Просто попросите его правильно Вы используете ИИ… Архив рубрики ~Коротко из Telegram~ Пять неочевидных привычек, которые отличают уверенных пользователей ИИ от новичков… Архив рубрики ~Коротко из Telegram~ ChatGPT серьезно ударил по индустрии заказных студенческих работ в Кении…. Архив рубрики ~Коротко из Telegram~ Российские операторы ЦОДов предложили создавать межрегиональные хабы, где один крупный… Новости робототехники JD.com расширяет применение физического искусственного интеллекта в логистике, используя 3 миллиона роботов. Архив рубрики ~Обо всем~ Дождь — это микромолния: ученые выяснили, как капли пробивают защиту автомобилей Новости робототехники Чем кладка кирпича научилась монументальной роботе в строительстве Архив рубрики ~Обо всем~ Инструмент глубокого обучения использует секвенирование длинных прочтений для обнаружения мутаций в раковых клетках. Новости робототехники Swarmer приобрел украинского производителя беспилотных автомобилей Ratel Robotics за 224 миллиона долларов Новости робототехники Teradyne Robotics подает в суд JAKA из-за трех патентов Universal Robots Новости робототехники Сегодня ночью украинские БЭКи атаковали район Геленджика, рядом с Новороссийском Новости робототехники Nowaste Logistics становится первой компанией, внедрившей AutoCase из AutoStore, предоставленной Swisslog Новости робототехники Простая конструкция робота превосходит человеческую руку в некоторых ключевых движениях. Новости робототехники Керамические микросвитки, созданные по образцу бабочек, разворачиваются с помощью магнитов, приводя в движение крошечных роботов. Архив рубрики ~Коротко из Telegram~ ИИ может больше. Просто попросите его правильно Вы используете ИИ… Архив рубрики ~Коротко из Telegram~ Пять неочевидных привычек, которые отличают уверенных пользователей ИИ от новичков… Архив рубрики ~Коротко из Telegram~ ChatGPT серьезно ударил по индустрии заказных студенческих работ в Кении…. Архив рубрики ~Коротко из Telegram~ Российские операторы ЦОДов предложили создавать межрегиональные хабы, где один крупный… Новости робототехники JD.com расширяет применение физического искусственного интеллекта в логистике, используя 3 миллиона роботов. Архив рубрики ~Обо всем~ Дождь — это микромолния: ученые выяснили, как капли пробивают защиту автомобилей Новости робототехники Чем кладка кирпича научилась монументальной роботе в строительстве Архив рубрики ~Обо всем~ Инструмент глубокого обучения использует секвенирование длинных прочтений для обнаружения мутаций в раковых клетках.