ym88659208ym87991671
Основы промпт-инжиниринга | Документация для разработчиков

Основы промпт-инжиниринга

Обновлено 24 февраля 2025

Промпт-инжиниринг — это процесс создания эффективных и точных промптов для работы с большими языковыми моделями (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 постоянно обновляются, подробнее можно узнать из документации.

Пройдите курс , чтобы научиться составлять наиболее эффективные промпты.

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

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера.