Немало людей, открыв для себя чудесный мир нейросетей, обнаруживают, что получить желанный результат не так-то просто. Во-первых, нейросеть нужно обучить, во-вторых, правильно сформулировать для нее запрос, то есть создать промпт. Зная, как это сделать правильно, можно решать задачи более эффективно.
Оглавление
Что такое промпт
Промпты (от англ. prompt – «побуждать») для нейросетей — это текстовые инструкции или вопросы, которые пользователь задает нейросети, чтобы получить изображение, текст или код.
Формулировка промпта — очень важный момент. Искусственные нейроны работают по определенным алгоритмам, и часто человеческие запросы, которые нам интуитивно понятны, нейросеть распознает некорректно. Промпт полностью определяет стиль и тон ответа нейросети, а также параметры изображения — качество съемки.
Промпт для текстовой нейросети — правила составления
При составлении запроса для текстовой нейросети, отражайте в нем все основные параметры — TOV, целевую аудиторию, тематику и пр. Допустим, у нас есть аккаунт в соцсети по нейросетям, аудитория которого — разработчики и мы хотим опубликовать в нем пост. Пример промпта для нейросети Chat GPT:
- Слишком общий запрос даст соответствующий результат:
- Уточняем запрос
3. Детализируем запрос
Составление эффективного промпта для текстовой нейросети включает несколько важных шагов:
- Определите цель. Перед созданием промпта важно четко определить результат, который вы хотите получить через текст.
- Определите тип текста, который вы хотите получить от нейронной сети, например, эссе, диалог, рассказ или конкретный ответ на вопрос.
- Выберите формат ввода. Определите формат, в котором вы хотите предоставить ввод для текстовой нейронной сети. У вас есть различные варианты:
- Короткий промпт. Если вы хотите, чтобы нейронная сеть генерировала ответ на основе одного предложения, предоставьте краткую формулировку, которая инкапсулирует желаемый результат. Пример: «Напиши абзац, описывающий важность возобновляемых источников энергии».
- Промпт из нескольких предложений. Такая форма нужна для более сложных задач. Каждое предложение может содержать дополнительную информацию, необходимую нейронной сети. Пример: «Напиши диалог между двумя персонажами, которые обсуждают свои планы на выходные. Персонаж А хочет отправиться в поход, а персонаж Б предпочитает пляжный отдых».
- Промпт, учитывающий контекст. Иногда полезно указывать контекст ― он может содержать справочную информацию или конкретные инструкции. Пример: «Представь, что ты журналист, который пишет статью об изменении климата. Напиши вступительный абзац, в котором освещаются причины и возможные последствия глобального потепления».
- Будьте конкретными и ясными. Избегайте двусмысленности или расплывчатых инструкций, которые могут запутать нейронную сеть.
- Добавьте роль поведения. Это помогает нейронной сети понять нужные стиль, тон и структуру текста. Например: «Представь, что ты контент-менеджер. Ты знаешь целевую аудиторию компании и умеешь анализировать эффективность контента. Составь контент-план на месяц для аккаунта медицинской клиники.
- Экспериментируйте. Задайте несколько выходных данных, используя различные варианты промпта, и оцените результаты. Проанализируйте сгенерированный текст, чтобы определить области для улучшения, и соответствующим образом доработайте формулировку. С каждым новым запросом или его уточнением ИИ будет лучше понимать, что вы от него требуете.
Стоит учитывать, что текстовые нейронные сети справляются с заданием лучше, если задано ограничение по количеству символов. В противном случае вместо, например, эссе, вы можете получить пару поговорок.
Промпт для генерации изображений
Создать запрос для нейросети, генерирующей изображения, существенно сложнее, чем для текстовой. Люди визуализируют желаемое значительно лучше, чем описывают словами. И если в диалоге с человеком многое можно объяснить эмоциями и жестами, то искусственный интеллект подобного не понимает.
Ему нужны четкие формулировки и точная задача. При этом количество символов в вашем промпте всегда ограниченно. Хорошо, если оно составляет 4000 символов, как у Midjourney, а может ведь быть всего 400, как у DALL-E 2.
Поэтому при разработке промпта для изображения надо учесть множество моментов и хорошо обдумать желаемый результат.
Основные шаги
- Определите цель промпта. Перед его созданием важно определить цель создания изображения. Определите стиль, тему или концепцию, которую вы хотите передать сети: постер, плакат, пиксель-арт и пр. Опишите, что вы хотите увидеть в итоге. Пример: Цель — создать красочный пейзаж с яркими оттенками и мечтательной атмосферой.
- Установите входные параметры. Они повлияют на стиль и содержимое выходного изображения. Настройка этих параметров позволяет точно настроить сгенерированное изображение в соответствии с вашими предпочтениями.
- Начальная или случайная инициализация: решите, хотите ли вы предоставить конкретное начальное изображение в качестве входных данных или разрешить сети генерировать его случайным образом. Предоставление начального изображения помогает контролировать начальную структуру сгенерированного.
- Уровень хаоса: укажите количество хаоса в вашем будущем изображении. Чем выше уровень хаоса, тем более абстрактным будет результат. Пример: уровень хаоса: Умеренный (достаточный для разнообразия, но не слишком абстрактный).
- Технические детали: в зависимости от модели сети у вас могут быть варианты настройки параметров, связанных со стилем, таких как цветовая палитра, текстура, толщина обводки или разрешение изображения. Отрегулируйте эти параметры, чтобы направить сеть к желаемому визуальному стилю. Пример: Цветовая палитра: пастельные тона с теплым оттенком. Толщина штриха: тонкие и деликатные штрихи. Разрешение изображения: высокое (для захвата мелких деталей).
- Предоставьте контекстные инструкции. Чтобы эффективно передать свое творческое видение, предоставьте контекстные инструкции, которые помогут сети создать желаемое изображение. Будьте ясны и лаконичны, описывая желаемые функции, композицию и настроение.
Примеры:
— «Сосредоточьтесь на том, чтобы запечатлеть красоту природного ландшафта в спокойной и безмятежной атмосфере».
— «Подчеркните мягкие пастельные тона теплыми полутонами, чтобы создать мечтательную атмосферу».
— «Убедитесь, что горы и озеро занимают видное место в композиции».
Описание желаемого изображения
Формулируя промпт, надо учесть два момента: что именно вы хотите изобразить и как оно должно выглядеть, то есть содержание и стиль. В каждом случае есть свои тонкости.
Описание содержания
Содержание будущего изображения должно быть максимально точным. Когда человек говорит, что на картинке изображен щенок с миской, то другим людям ясно, что щенок сидит или лежит возле миски. Однако нейросеть этого не знает, так что задав подобный промпт, вы вполне можете получить щенка, сидящего в миске или летающего вокруг. Поэтому промпт должен включать следующие параметры:
- Объект, то есть что или кто будет изображено.
- Действия объекта. Указывая, что делает ваш объект, лучше пользоваться глаголами действия, которые легко отразить на картинке. Например, слово «сидит» нейросеть поймет лучше, чем слово «любит». Учтите, что нейросети плохо понимают частицу «не», так что лучше ее в формулировку не включать.
- Описательные прилагательные: красивый, темный, добрый. Старайтесь избегать слова «очень», лучше выберите подходящий синоним.
- Жанр изображения. Если вы укажете, что вам нужна фотография или пиксель-арт, то быстрее получите нужный результат.
- Стиль изображения. Современные нейросети неплохо «разбираются» в стилистике. Например, у Midjourney есть библиотека стилей. Если же вы не нашли того, что вам требуется, можете добавить в формулировку, например, «в стиле Васнецова» или «в стилистике стимпанка».
Вот как нейросеть видит цветущую сакуру в трех разных стилях — Ван Гога, сюрреализм и абстракционизм:
Технические характеристики
Технические детали будущего изображения можно описать словами, задать в настройках нейросети или совместить оба варианта.
При самостоятельном описании вам необходимо указать цветовую палитру, цвета отдельных элементов. Например, указав «рыжий кот в синей шляпе», вы окажетесь к результату ближе, чем при промпте «кот в шляпе». Можно задать текстуру будущей картинки: масляные краски, пастель, карандаш, указать толщину линий, расположение источника света.
Если вы разбираетесь в фотографии, используйте соответствующие термины: выдержка, вид объектива, фокусное расстояние, расположение камеры и пр. Так, камера может располагаться over-the-shoulder shot, выставленные настройки — motion blur или slow shutter speed. В качестве изюминки используйте, например, стиль camera obscura.
Промпт: Собака бежит по лугу, расположение камеры over-the-shoulder shot, настройки motion blur
Достижению результата помогут правильно установленные настройки нейросети. Надо только помнить, что у каждой сети они свои.
Stable Diffusion
Чтобы понять, как писать промты для нейросети Stable Diffusion, надо разобраться в настройках. Сеть Stable Diffusion предлагает 17 алгоритмов-семплеров, из которых самым применяемым остается EULER A. Сеть позволяет заранее задать количество шагов-итераций (Sampling Steps), при каждом из которых изображение будет совершенствоваться. Однако здесь лучше не спешить и начинать с малого количества шагов. Среднее же значение этого параметра колеблется в диапазоне от 30 до 50.
Установить размеры будущего изображения поможет параметр Height / Width. Восстановить или создать портрет — галочка напротив Restore faces. Отдельного внимания заслуживает параметр CGF Scale. Фактически, это уровень свободы, который вы даете сети. В диапазоне от 2 до 6 нейросеть делает, что сочтет нужным. Если ограничения выставлены на 7–11, то во внимание будет принята половина запроса. Ну а при значении этого параметра 16+ запрос будет выполнен в точности. Чем выше ваша уверенность в качестве промпта, тем выше стоит установить значение этого фактора.
Интересная настройка — Seed. Она определяет повторяемость результата. По умолчанию в сети выставляется -1, это выдает максимальную изменяемость при корректировке запроса. Если же вы выбрали удачное изображение, то при нажатии на него под картинкой появится Seed. Его стоит сохранить.
Midjourney
Промпты для нейросети Midjourney будут выглядеть иначе, поскольку настройки Midjourney отличаются от того, что рассмотрено выше. Пожалуй, самым интересным является параметр Вес. Он позволяет качественно уточнить запрос, указав значимость слов в нем. Выставляется параметр через двоеточие и работает так: wild::.7 и cat::.5 даст вам изображение очень дикой кошки. Если параметры поменять, то кошка станет ближе к домашней. Установив же негативные параметры wild::.-1 и cat::.1, вы получите домашнего котейку. Использовать негативные веса можно только тогда, когда сумма всех весов запроса равна нулю. То есть не получится установить wild::.-1, а cat::.2.
Кроме Веса, в сети можно задать соотношение сторон будущей картинки, сделав ее квадратной или прямоугольной, растянув по вертикали или горизонтали. Параметр Качество отвечает за уровень детализации изображения. Чем он выше — тем больше деталей. Установив уровень Хаоса, вы сделаете изображение ближе или дальше к абстрактной картине, а параметр Стилизации поможет вам получить картинку в определенной стилистике.
Полезный параметр Фильтрация слов. Он устанавливается введением в текст запроса двойного дефиса. Например, промпт bouquet — no vase поможет вам получить изображение букета без вазы.
Как собрать все в один промпт
Создание промптов для нейросетей должно учитывать множество моментов. Однако помните, что нейросеть — это в первую очередь компьютер. То есть слова, стоящие ближе к началу промпта, для нее имеют более высокий приоритет. Опыт многих авторов показывает, что правильные промпты для нейросетей имеют следующий порядок:
- Основная характеристика картинки: иллюстрация, портрет, кадр из видео, референс.
- Центральный объект изображения.
- Стилистика картинки: цвета, стиль, текстура.
- Технические параметры: свет, погода, графика, настройки камеры.
- Настройки сети.
Почему нейросеть отвечает неправильно?
В ряде случаев нейросети могут давать не те ответы, которые мы от них закрашиваем. На это есть несколько причин:
- Ограниченность данных обучения. Нейросети учатся на основе большого объема информации. Если входные данные не содержат достаточного разнообразия и не представляют все возможные сценарии, то модель может дать неправильный ответ на новые или неизвестные вопросы.
Пример: Если нейросеть обучена на фотографиях только белых львов, она может дать неправильный ответ, если ей задать вопрос о черном льве.
- Помехи в данных. Если входные данные содержат ошибки, шум или неточности, то нейросеть может сделать неправильные выводы.
Пример: Нейросеть обучена классифицировать предметы по их виду на основе изображений, и в данных есть изображения с ошибочными метками, то модель может дать неправильный ответ при распознавании новых изображений.
- Недостаточное обучение. Нейросети требуют много времени и вычислительных ресурсов для обучения. Если модель не была обучена достаточно долго или на недостаточно большом объеме данных, то ее способность давать правильные ответы может быть ограничена.
Пример: Если нейросеть обучена на небольшом наборе данных изображений цветов, она может дать неправильный ответ, если ей показать изображение редкого или необычного цветка, которого нет в обучающем наборе данных.
Запрос: “Призрачная орхидея” Реальное фото призрачной орхидеи
- Недостаточная архитектура модели. Различные задачи требуют разных типов архитектур нейросетей. Если выбранная архитектура модели неподходящая для конкретной задачи, то результаты могут быть неправильными.
Пример: Если использовать сверточную нейронную сеть для задачи предсказания временных рядов, то модель может дать неправильные прогнозы, так как она не учитывает зависимости во времени.
Однако наиболее распространенная причина ошибок — неверно сформулированный промпт. Если промпт содержит неточности, неверные утверждения или противоречия, то нейросеть может принять эту информацию за истину и дать неправильный ответ на основе неправильного контекста.
Таким образом, нейросеть может допустить ошибку, если ей предоставить неправильный или неточный промпт, который может ввести модель в заблуждение и привести к неправильному ответу. Это одна из особенностей машинного обучения, и важно понимать, что нейросети не всегда могут давать абсолютно точные или правильные ответы.
Теперь вы знаете, как задать запрос нейросети. Помните, что все рассказанное в статье — отнюдь не догма. Пробуйте, экспериментируйте и делитесь с нами своими успехами.