Основы промпт-инжиниринга
Промпт-инжиниринг — это процесс создания эффективных и точных промптов для работы с большими языковыми моделями (LLM).
Промпт (от англ. prompt — «подсказка») — это текстовое описание задачи, которую необходимо выполнить с помощью ИИ-модели. Это запрос, который задается модели для генерации текста, изображений, кода или других видов контента.
Например, если вы хотите получить изображение в стиле картины «Звездная ночь» Ван Гога, то ваш промпт может выглядеть так: «Ты — профессиональный иллюстратор. Тебе хорошо известны стиль и манера письма популярных художников. Твоя задача — создавать изображения в манере выбранного художника. Создай изображение ночного неба в стиле Ван Гога». Модель проанализирует этот запрос и создаст изображение, соответствующее вашему запросу. О том, из каких элементов состоит промпт, мы расскажем ниже.
Задача промпт-инжиниринга
Основная задача — создавать и формулировать такие промпты для больших языковых моделей (LLM), чтобы получать от них наиболее точные и релевантные результаты. Для этого нужно:
- уметь формулировать запросы так, чтобы модель могла понять и выполнить задачу максимально точно;
- изучать особенности работы модели, ее ограничения и возможности;
- анализировать данные и требования к результату;
- иметь критерии оценки качественного промпта.
В процессе промпт-инжиниринга может быть собрана библиотека промптов.
Библиотека промптов — это набор качественных промптов, которые можно использовать для обучения или тестирования языковой модели. Промпты в библиотеке могут быть сгруппированы по темам, стилям или другим параметрам, что упрощает их поиск и использование.
Применение библиотеки промптов позволяет ускорить процесс создания контента с помощью языковых моделей, а также обеспечивает более предсказуемый результат, поскольку все запросы уже были предварительно проверены. При этом нужно учитывать, что модели регулярно обновляются и будет полезно тестировать имеющиеся промпты на новых версиях.
Как создать качественный промпт
Качественный промпт — это хорошо структурированный и детализированный запрос, который точно передает намерение пользователя и дает нейросети достаточно информации для генерации корректного и релевантного ответа. Такой промпт повышает вероятность получения желаемого результата.
Для GigaChat API одновременно используются:
-
Системный промпт (system prompt) — специальное сообщение, используемое для управления поведением языковой модели. С помощью системного промпта пользователь передает модели контекст задачи и описывает инструкцию поведения. В системном промпте мы описываем правила и даем инструкции, которым модель должна следовать при генерации ответа. При создании чата или сохранении контекста диалога, системный промпт можно передать только один раз в самом первом сообщении.
-
Пользовательский промпт (user prompt) — это запрос пользователя, который должна выполнить модель, следуя инструкциям, которые описаны в системном промпте.
Вместе они составляют один запрос к нейросети.
Например:
Системный промпт
Ты — учитель русского языка, идеально знающий русский язык.
Во входных данных тебе дадут текст, который надо исправить.
Тебе требуется исправить орфографию и расставить знаки препинания в соответствии с правилами русского литературного языка: точки, запятые и знаки вопроса.
В конце повествовательного предложения обязательно ставь точку.
Ставь знак вопроса в конце предложения, если в нем есть слова, которые относятся к вопросительным или если предложение с большой долей вероятности является вопросом.
Не добавляй дополнительные слова. Не исправляй стиль текста.
В ответе верни ТОЛЬКО входной запрос с расставленными знаками препинания и исправленными орфографическими ошибками. Не давай объяснений, почему ты так или иначе исправил текст
Пользовательский промпт
В нутри меня бушует океан эмоций который сложно обуздать.
Я не могу панять, что со мной происходит.
Но я знаю что это не просто так
Это какбудто новый уровень жизни.
Системный промпт, как правило, включает в себя:
- Роль — специфическую функцию, которая поможет решить задачу в определенных рамках. Роль может быть как условно одушевленной, так и неодушевленной.
Примеры:
1. Ты — профессиональный копирайтер с широкими знаниями в области медицины на уровне выпускника медвуза. Ты умеешь писать как длинные, так и короткие тексты на медицинскую тему.
2. Ты — бот медицинской компании, который дает короткие ответы на вопросы о медицине.
- Входные данные — это информация для получения ответа.
В запросе пользователя (входных данных) будут указаны следующие данные:
- тема текста;
- формат (статья, эссе, заметка);
- размер текста (будет указано количество знаков);
- ключевые слова
- Задача — это четкое указание, что вы хотите получить в качестве ответа модели. Это может быть текст, анализ данных, примеры кода, краткий или развернутый ответ на вопрос и т.д.
Сгенерируй текст, используя входные данные. Используй подтвержденные медицинские источники, давай на них ссылки. Используй данные только за последние 3 года.
- Индикатор вывода — формат или тип ожидаемого ответа от модели после обработки входных данных. Также можно задать ограничения для ответа модели.
Формат ответа:
- у текста всегда есть заголовок, он соответствует заданной теме;
- если используются цитаты, то в скобках надо указать ссылки на источник, автора и название источника;
- придерживайся научного стиля, используй медицинские термины;
- пиши текст только в рамках выбранной темы;
- текст не должен превышать 1500 знаков без пробелов
Пример качественного системного промпта, который включает в себя роль, входные данные, задачу и индикатор вывода:
Ты — профессиональный копирайтер с широкими знаниями в области медицины на уровне выпускника медвуза. Ты умеешь писать как длинные, так и короткие тексты на медицинскую тему.
В запросе пользователя (входных данных) будут указаны следующие данные:
- тема текста;
- формат (статья, эссе, заметка);
- размер текста (будет указано количество знаков);
- ключевые слова.
Сгенерируй текст, используя входные данные. Используй подтвержденные медицинские источники, давай на них ссылки. Используй данные только за последние 3 года.
Формат ответа:
- у текста всегда есть заголовок, он соответствует заданной теме;
- если используются цитаты, то в скобках надо указать ссылки на источник, автора и название источника);
- придерживайся научного стиля, используй медицинские термины;
- пиши текст только в рамках выбранной темы;
- текст не должен превышать 1500 знаков без пробелов или меньше, если это указано.
Пользовательский промпт:
Сгенерируй заметку на тему «Профилактика ОРЗ в зимний период». Ключевые слова: ОРЗ, вирусы, профилактика.
Основные рекомендации для создания промптов
Создавайте однозначные запросы
В запросе не должно быть двусмысленных формулировок или противоречий.
Ты – дизайнер интерьера.
Твоя задача – разработать интерьер комнаты, который сочетает в себе минимализм и максимализм, создавая ощущение буйства цвета и фактур, но при этом он был прост и лаконичен.
Интерьер должен включать элементы обоих стилей, при этом сохраняя гармонию и функциональность пространства.
Формат ответа:
1. Описание концепции интерьера.
2. Основные элементы минимализма.
3. Основные элементы ма ксимализма.
4. Примеры сочетаний этих элементов.
Комментарий к промпту: минимализм и максимализм — противоположные по стилю направления. Даже если в промпте есть все обязательные элементы: роль, задача и т.д., но есть противоречие, то ответ модели может быть неприменимым
Используйте актуальные данные
Модель может выдать неактуальную информацию, если промпт содержит устаревшие данные.
Ты – аналитик данных.
Твоя задача – спрогнозировать спрос на мобильные телефоны в 2023 году, основываясь на данных продаж мобильных телефонов за 2005 год.
Используй формальные методы анализа данных. Избегай сложных формулировок.
Прогноз должен учитывать изменения технологий, потребительских предпочтений и экономических условий за последние годы.
Формат вывода:
* Описание метода прогнозирования.
* Основные факторы, влияющие на спрос.
* Прогнозируемый объем продаж.
* Рекомендации по корректировке стратегии.
Комментарий к промпту: в промпте есть необходимые элементы, но из-за неактуальных данных ответ, вероятно, будет неприменим.