Введение

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

Промпт-инжиниринг: главное

Промпт-инжиниринг — это процесс создания, настройки и оптимизации текстовых запросов (промптов) для взаимодействия с языковыми моделями, такими как ChatGPT. Эти модели способны генерировать текст, который на удивление точно отвечает на запросы пользователей, но качество ответов напрямую зависит от того, как именно сформулирован промпт. Искусство и наука составления таких промптов и называется промпт-инжинирингом.

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

Интересно отметить, что с развитием языковых моделей их способность понимать и генерировать текст становится всё более тонкой и сложной. Улучшения в LLM (Large Language Models) открывают новые возможности для промпт-инженеров, делая их работу ещё более захватывающей и важной. Современные модели могут обрабатывать сложные контексты и нюансы, что требует от промпт-инженеров глубоких знаний в разных областях и навыков написания промптов. Все большее распространение получают мультимодальные модели, которые могут обрабатывать и генерировать не только текст, но и картинки, звук и тд. Поэтому промпт-инженеры постоянно пополняю свой арсенал эффективных техник.

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

Основные принципы и техники промпт-инжиниринга

Давайте наконец перейдём непосредственно к принципами создания эффективных промптов, которые помогут вам максимально использовать возможности языковых моделей.

Принципы эффективного промптинга

Ясность и точность

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

Пример:

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

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

Проверка и итерация

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

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

Пример:

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

Процесс проверки и итерации напоминает цикл разработки программного обеспечения, в котором вы постоянно обновляете и уточняете свои функции для достижения оптимального результата. Такая адаптивность делает промпт‑инжиниринг особенно интересным и творческим процессом.

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

Разделение на блоки

Согласно опыту многих промпт-инженеров, модели лучше воспринимают инструкции, разделенные на блоки. Например, зачастую промпт можно разделить на 3 блока: контекст, инструкция по обработке контекста и формат вывода ответа. То есть промпт может выглядеть так:

"[Context]:

[Instruction]:

[Answer format]:

…"

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

Техники написания промптов

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

Zero-shot и Few-shot

Если вы хоть раз пользовались ИИ, то наверняка использовали технику Zero-shot, потому что это простой запрос к модели без каких-то дополнений и примеров. Здесь хорошего результата помогает добиться объяснение задачи и выставление требований, таких как стиль, формат вывода и тд.

Техника Few‑shot заключается в предоставлении в промпте примеров, которые позволяют кратковременно обучить модель для разового использования. Например, для классификации письма по фильтрам «спам» или «не спам» можно добавить в промпт несколько примеров писем из каждой категории. Эту технику можно использовать для генерации кода на основе представленного контекста, а также для создания контента с тем же стилем, тоном и структурой, как в примерах.

Пример Zero-shot и Few-shot
Пример Zero-shot и Few-shot

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

Self-Calibration

Еще один простой приём, когда можно попросить модель проверить собственные размышления. Для этого достаточно добавить после основного запроса фразу «Перед тем, как дать ответ, проверь свои рассуждения, чтобы убедиться в правильности ответа». Это повышает вероятность корректного и правильного ответа на запрос.

Пример Self-Calibration
Пример Self-Calibration

Chain-of-thought

Chain-of-thought подразумевает ряд промежуточных шагов рассуждения.

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

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

Пример Chain-of-thought
Пример Chain-of-thought

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

CETO

Помимо техник свое развитие также получили и стратегии промптинга, одной из них является СETO промптинг. CETO акроним — context, expert persona, task, output, который является хорошей формовкой для наполнения смыслами и формулировками. В итоге стратегия позволяет гибко сформулировать задачу разбивая ее на смысловые блоки для адаптации модели к потребностям пользователя.

Пример CETO
Пример CETO

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

Другие приемы

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

Ошибки при создании промптов

Слишком общие вопросы

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

Пример ошибки:

— «Расскажи о климатических изменениях.»

Исправленный пример:

— «Объясни влияние человеческой деятельности на глобальное потепление за последние 50 лет.»

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

Многозначные или двусмысленные промпты

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

Пример ошибки:

— «Какие меры по контролю важны?»

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

Исправленный пример:

— «Какие меры по контролю за кибербезопасностью важны для защиты данных компаний?»

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

Игнорирование контекста

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

Пример ошибки:

— «Опиши преимущества нашего нового продукта.»

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

Исправленный пример:

— «Опиши преимущества нашего нового смартфона, уделяя особое внимание его камере и производительности батареи.»

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

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

Практические примеры успешных промптов

Давайте посмотрим на конкретные примеры применения ИИ для быстрого решения задач.

Пример из бизнеса

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

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

Самый простой промпт здесь будет:

Меня зовут Александр. Напиши письмо от моего имени для [получатель] в [стиль] стиле на тему [тема].

Заполним переменные блоки:

Меня зовут Александр. Напиши письмо от моего имени Ивану Сергеевичу Петрову в формальном стиле на тему Заявка на отпуск с 29.08 по 11.09.24

В ответ от модели получим:

Уважаемый Иван Сергеевич,

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

Благодарю Вас за понимание и надеюсь на положительное решение моего вопроса.

С уважением,

Александр

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

Пример из образования

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

Промпт:

Ты преподаватель программирования в университете. Тебе необходимо составить тест из 5 заданий по теме «Строки в Python». Задания должны идти по уровню сложности: от простого к самому сложному. Напиши только сами задания без ответов.

Ответ модели:

Конечно! Вот тест из 5 заданий по теме "Строки в Python":

---

### Задание 1 (простейшее):

Создайте строку, содержащую текст "Hello, World!", и выведите её на экран.

---

### Задание 2 (простое):

Используя метод строки, преобразуйте строку "hello world" в "Hello World".

---

### Задание 3 (средней сложности):

Дана строка: "The quick brown fox jumps over the lazy dog". Напишите код, который заменит все пробелы в этой строке на символы подчёркивания.

---

### Задание 4 (более сложное):

Напишите функцию reverse_words, которая принимает строку и возвращает новую строку, в которой порядок слов обратный. Например, для строки "hello world" результатом будет "world hello".

---

### Задание 5 (самое сложное):

Напишите функцию, которая принимает строку и возвращает True, если строка является палиндромом (читается одинаково вперед и назад, игнорируя пробелы и регистр), и False в противном случае. Игнорируйте символы, не являющиеся буквами или цифрами.


Удачи с тестом!

Здесь использован Zero shot промпт с ролью преподавателя программирования и просьбой писать только задачи без ответа. Для получения ответа можно прогнать полученные задания от модели и попросить её дать на них ответ. Или предложить модели свои решения на оценку.

Заключение

В статье были рассмотрены общие советы по написанию промптов, частые ошибки и конкретные приёмы, которые можно использовать в повседневной жизни. Надеюсь, вам была полезна эта статья!

Комментарии (2)


  1. UFO_01
    20.09.2024 08:50

    <sarcasm>

    Чем угодно занимаются, лишь бы не работать.

    </sarcasm>


  1. dolovar
    20.09.2024 08:50

    другие необычные приёмы, как например подкуп, угрозы и прочие объяснения почему ИИ нужно сделать что-то качественно

    Это - часть задания контекста. Грубо говоря, LLM всегда решает задачу "как ответил бы человек в такой-то ситуации", опираясь на опыт людей из той базы, на которой модель обучали. Описание ситуации - это и есть создание контекста.

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

    И для этого лучше начинать не с угроз или взяток, а с задания роли - ты такой-то эксперт с многолетним практическим опытом и огромной эрудицией, который ответственно подходит к решению задачи (составления краткого описания к очередному мелкому товару из каталога на десять тысяч позиций).

    В CETO букву E отделили от C, но напрасно, IMHO. Части контекста, которые прямо влияют на ответ: кто ты, кто целевая аудитория, что знаешь о вопросе, что нужно сделать. И последовательные вопросы и ответы в процессе беседы - это тоже часть контекста, которая влияет на последующие ответы.

    Из мелких ухищрений лучше упомянуть "посоветуй что мне следует изменить в промпте, чтобы ты в следующий раз не совершал такую-то ошибку" - ценно для отладки. Также можно добавить негативный промпт "вот этого в ответе не нужно, дай другое", "перед ответом составь и покажи план решения задачи", "улучши свой предыдущий ответ", а еще можно спросить саму модель - вот я в ремесле промптинга уже знаю приемы Zero-shot и Few-shot, Self-Calibration, Chain-of-thought, посоветуй теперь другие. Плюс системный промпт или пользовательские настройки, которые влияют на все ответы.

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

    В статье были рассмотрены общие советы по написанию промптов, частые ошибки и конкретные приёмы, которые можно использовать в повседневной жизни. Надеюсь, вам была полезна эта статья!

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

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