Top.Mail.Ru
Карьера
Бизнес
Жизнь
Тренды

Стратегии по промтингу: как эффективно ставить задачи ИИ

Промт-инжиниринг – это новый иностранный язык, который может выучить любой

Искусственный интеллект с нами уже давно, термин появился еще в 1956 году, но почему только сейчас мы стали активно пользоваться им в повседневной жизни? Все дело в качестве моделей и вычислительных мощностей, которые позволили ученым создать те сервисы, которыми многие из нас пользуются ежедневно.

name

Дарья Касьяненко

Академический руководитель онлайн-магистратуры «Инженерия данных», старший преподаватель и эксперт Факультета компьютерных наук НИУ ВШЭ

В статье «Language Models are Few-Shot Learners» 2020-го года ученые из OpenAI сообщили, что модель GPT-3, которую обучали на почти 600 гигабайтах текстов, может подстраиваться под запросы пользователя в формате диалога. То есть если до этого общаться с ИИ могли только люди, умеющие программировать, то сейчас в формате вопрос-ответ с искусственным интеллектом может общаться каждый. Так наступила эра доступности и открытости генеративного искусственного интеллекта для всех.

Как задавать вопросы машине

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

Поэтому общаться с машиной оказалось труднее, чем мы можем представить. Она не способна понимать вас с полуслова, ей нужны очень четкие инструкции. Возникли понятия «промт», то есть подсказка, вопрос, задача, которую пользователь ставит перед ИИ. И понятие «промт-инжиниринг» – это искусство задавания таких вопросов.

На самом деле, сейчас появилась даже новая профессия, «промт-инженер». Это человек, который разрабатывает и совершенствует модели искусственного интеллекта, используя методы промт-инжиниринга. Для этой профессии не обязательно иметь технические навыки, поэтому даже если у вас плохо с математикой, вы можете стать промт-инженером. На рынке сейчас, например, есть вакансия «промт-инженер и библиотекарь» в одном из зарубежных стартапов. Обязанности: тестирование и документирование лучших промтов для широкого круга задач, создавать учебники с обучающими материалами по промт инжинирингу. Платить обещают до 330 тысяч долларов в год.

Стратегии промтов для создания картинок

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

Давайте приведем примеры для каждой части формулы. Образ результата – это тот вид, в котором вы хотите получить ответ: скульптура, фото, картина. Субъект – это основной объект, что мы рисуем. Например, собаку. В стиле какого художника нарисовать – можно писать как нескольких, так и одного. Большинство моделей указывают, каких художников они могут реплицировать. Например, Пикассо. Далее идет описание деталей, это самая большая часть. Например, не просто собака, а корги на берегу моря жмурится на фоне закатного солнца, снято на пленку. Последняя часть – это выбор ресурса, где выкладываются фотографии. Таких ресурсов очень много, у них у всех прослеживается своя стилистика. Поэтому если вы знаете, где бы могла быть размещена нужная вам фотография, то можете здесь указать «trending on» и название ресурса.

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

Стратегии промтов для создания текста

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

Есть несколько стратегий промтов. Первая – если по теме много информации, то можно использовать ИИ как альтернативу поиска в интернете. Здесь можно использовать тактику one-shot, few-shots. Мы можем просто задать вопрос модели «Напиши рецепт шарлотки». Модель вытащит из своей базы знаний рецепт шарлотки в том виде, в котором он чаще всего встречается в текстах, на которых ее обучали. Это называется zero-shot («нулевая разметка»). А можно свой вопрос уточнить: «Напиши рецепт шарлотки. Например: Ингредиенты: 100 гр муки, 5 яблок. Как готовить: разогрей духовку до 250 градусов…» Это будет one-shot, то есть вы задаете вопрос и сразу учите модель, в каком виде нужен ответ. Можно приводить сразу несколько примеров, это будет стратегия few-shots.

Источник: iStock
Источник: iStock

Второй метод промтов используется для генерации новых идей, создания тезисов. Здесь можно использовать техники с описанием контекста и инструкций. Например, «Напиши в официально-деловом стиле письмо для [имя] с просьбой сообщить желаемую дату выхода в отпуск». Инструкция здесь – «напиши письмо». Контекст – «официально-деловой стиль и причина написания письма».

Другая техника – это позиционные промты. Здесь вы сообщаете ИИ, какую роль он должен на себя принять. Например, «Имитируй собеседование на работу для [позиция], задавая и отвечая на вопросы, как будто ты потенциальный работодатель». Модель сходит в свою память, вытащит релевантные вопросы, задаваемые работодателями конкретной области, и сыграет с вами в эту игру. Однако важно отметить, что если это какая-то уникальная вакансия, то скорее всего у модели просто не хватит данных для изображения экспертности в этой области.

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

А техника «ход мысли» (chain-of-thought) будет полезна, например, начинающим программистам. У программистов есть такой метод утёнка – это когда вы ставите на стол резинового утенка, открываете код, который не работает, и объясняете строчку за строчкой своему утенку. В момент, когда вы пытаетесь объяснить логику решений, вы сами находите нестыковки и ошибки. Искусственный интеллект можно использовать в таком формате, можно поменяться ролями. Вы передаете свой код ИИ, он объясняет каждую строчку, а вы как утенок слушаете и ищете ошибки.

Галлюцинации модели и жадность

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

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

Почему это происходит? Это может происходить в случаях, когда модель пытается создать текст, но не имеет достаточной информации. То есть модель в целом знает, что обычно пишут о космонавтах. Берет за основу накопленные коллективные знания и подставляет ваше имя. Также галлюцинации могут произойти в силу случайных сбоев системы. Хорошая аналогия здесь – это студент на экзамене – расскажет билет, если знает тему, соврет и придумает ответ, если не знает.

Вторая проблема – это лень. Была гипотеза, что если мы модели будем тренировать на еще большем объеме данных, то они будут точнее. Оказалось, наоборот, они стали ленивее. Например, вы можете попросить самые большие модели составить для вас таблицу 20 строк и 20 столбцов с информацией о вузах. Модель может ответить «Из-за большого объема данных составление такой таблицы заняло бы много времени. Я могу предоставить файл с одной строкой для шаблона, а вы заполните остальные данные по мере необходимости». Или, например, модель написала за вас программный код, он не работает, вы просите найти ошибки и исправить их. Модель отвечает «Странно. А у меня все работает». И дальше вы пытаетесь в этом диалоге заставить модель найти ошибки, чаще всего это безуспешно.

Методом проб ученые находят варианты заставить модели переставать быть ленивыми. Например, хорошо работают уточнения в промтах «я дам тебе 10 долларов за правильный ответ» (логика «чем больше предложите, тем лучше ответит» здесь не сработает, но само предложение обычно выводить модель из состояния лени. Еще иногда работает уточнение «никуда не торопись, подумай еще» в конце вашего промта.

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