Найти в Дзене
In Data We Trust

Перевод руководства Google по промпт инжинирингу. Часть 9. Лучшие практики для написания промптов, 3

Оглавление

Предыдущая часть: Перевод руководства Google по промпт инжинирингу. Часть 8. Лучшие практики для написания промптов, 2

Следующая часть: Перевод руководства Google по промпт инжинирингу. Часть 10. Резюме и полезные ссылки

Перевод руководства Google по промпт инжинирингу (Prompt engineering). Оригинал доступен по ссылке. https://www.kaggle.com/whitepaper-prompt-engineering

Перевод сделан с применением AI.

Поэкспериментируйте с форматами выводы

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

Есть несколько преимуществ в выводе объектов JSON из запроса на извлечение данных. В реальном приложении мне не нужно вручную создавать этот формат JSON, я уже могу возвращать данные в отсортированном порядке (очень удобно при работе с объектами даты и времени), но самое главное, что запрос на формат JSON заставляет модель создавать структуру и ограничивает количество ошибок.

Подводя итог, можно сказать, что использование JSON для вывода данных имеет следующие преимущества:

  • Всегда возвращает данные в одном и том же стиле
  • Сосредоточьтесь на данных, которые вы хотите получить
  • Меньше шансов на ошибки
  • Учитывайте взаимосвязи
  • Вы получаете типы данных
  • Вы можете их сортировать

В таблице 4 в разделе few-shot показан пример того, как получить структурированный вывод.

Восстановление JSON

Хотя возврат данных в формате JSON имеет множество преимуществ, он не лишён недостатков. Структурированный характер JSON, хотя и удобен для синтаксического анализа и использования в приложениях, требует значительно больше токенов, чем обычный текст, что приводит к увеличению времени обработки и повышению затрат. Кроме того, из-за многословности JSON может легко заполнить всё окно вывода, что становится особенно проблематичным, когда генерация внезапно прерывается из-за ограничений на количество токенов. Такое прерывание часто приводит к некорректному JSON, в котором отсутствуют важные закрывающие фигурные или квадратные скобки, что делает вывод непригодным для использования. К счастью, такие инструменты, как библиотека json-repair (доступна на PyPI), могут оказаться бесценными в подобных ситуациях. Эта библиотека интеллектуально пытается автоматически исправить неполные или неправильно сформированные объекты JSON, что делает её незаменимым помощником при работе с JSON, сгенерированным LLM, особенно при решении потенциальных проблем с усечением.

Работа со схемами

Использование структурированного JSON в качестве выходного формата — отличное решение, как мы неоднократно видели в этой статье. Но как насчёт входного формата? Хотя JSON отлично подходит для структурирования выходных данных, которые генерирует LLM, он также может быть невероятно полезен для структурирования входных данных, которые вы передаете. Именно здесь в игру вступают схемы JSON. Схема JSON определяет ожидаемую структуру и типы данных вашего входного JSON-файла. Предоставляя схему, вы даете LLM четкое представление о том, какие данные она должна ожидать, что помогает ей сосредоточиться на релевантной информации и снижает риск неправильной интерпретации входных данных. Кроме того, схемы могут помочь установить взаимосвязи между различными фрагментами данных и даже сделать LLM «осознающей время», включив поля с датой или отметкой времени в определенных форматах.

Вот простой пример:

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

Сниппет 5. Определение структуры схемы
Сниппет 5. Определение структуры схемы

Затем вы можете предоставить фактические данные о товаре в виде объекта JSON, соответствующего этой схеме:

Сниппет 6. Структурированный ответ от LLM
Сниппет 6. Структурированный ответ от LLM

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

Экспериментируйте вместе с другими промпт инженерами

Если вы оказались в ситуации, когда вам нужно придумать хороший промпт, возможно, вам стоит найти несколько человек, которые попробуют это сделать. Когда все будут следовать лучшим практикам (перечисленным в этой главе), вы увидите разницу в эффективности между всеми попытками придумать промпт

Лучшие практики CoT

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

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

Для промптов CoT установите температуру на 0.

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

Документируйте все попытки создания промптов

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

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

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

Помимо полей в этой таблице, полезно также отслеживать версию промпта (итерацию), поле для записи, если результат был ХОРОШИМ / ПЛОХИМ / ИНОГДА ХОРОШИМ, и поле для записи отзывов. Если вам повезло и вы используете Vertex AI Studio, сохраняйте промпты (используя то же имя и версию, что указаны в вашей документации) и отслеживайте гиперссылку на сохранённый промпт в таблице. Таким образом, вы всегда сможете в один клик запустить повторную проверку промпта.

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

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

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

Таблица 21. Шаблон для промптинга
Таблица 21. Шаблон для промптинга

Все части перевода руководства Google по промпт инжинирингу

Перевод руководства Google по промпт инжинирингу. Часть 1. Конфигурация вывода LLM

Перевод руководства Google по промпт инжинирингу. Часть 2. Техники написания промптов: Zero-shot, One-shot и few-shot промптинг

Перевод руководства Google по промпт инжинирингу. Часть 3. Техники написания промптов: Системный, контекстуальный и ролевой промптинг

Перевод руководства Google по промпт инжинирингу. Часть 4. Техники написания промптов: Пошаговый промптинг, Цепочка рассуждений (CoT), Самосогласованность

Перевод руководства Google по промпт инжинирингу. Часть 5. Техники написания промптов: ReAct (Размышляй и действуй), Автоматический промпт инжиниринг

Перевод руководства Google по промпт инжинирингу. Часть 6. Техники написания промптов: Промптинга для генерации кода

Перевод руководства Google по промпт инжинирингу. Часть 7. Лучшие практики для написания промптов, 1

Перевод руководства Google по промпт инжинирингу. Часть 8. Лучшие практики для написания промптов, 2

Перевод руководства Google по промпт инжинирингу. Часть 9. Лучшие практики для написания промптов, 3

Перевод руководства Google по промпт инжинирингу. Часть 10. Резюме и полезные ссылки