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