Следующая часть: Перевод руководства Google по промпт инжинирингу. Часть 2. Техники написания промптов: Zero-shot, One-shot и few-shot промптинг
Перевод руководства Google по промпт инжинирингу (Prompt engineering). Оригинал доступен по ссылке. https://www.kaggle.com/whitepaper-prompt-engineering
Перевод сделан с применением AI.
Введение
Говоря о вводе и выводе большой языковой модели, то текстовый промпт (иногда сопровождаемый другими типами данных, например, изображениями) — это ввод, который модель использует для прогнозирования конкретного вывода. Вам не нужно быть специалистом по обработке данных или инженером по машинному обучению — каждый может написать промпт. Однако создание наиболее эффективного промпта может быть непростой задачей. На эффективность промпта влияют многие аспекты: используемая модель; данные, на которых была обучена модель; настройки модели; выбор слов; стиль и тон; структура и контекст. Таким образом, разработка промптов — это итеративный процесс. Неподходящие промпты могут привести к неоднозначным, неточным ответам и помешать модели выдавать значимые результаты.
Когда вы общаетесь с чат-ботом Gemini, вы, по сути, пишете промпты, в этом документе основное внимание уделяется написанию промптов для модели Gemini в Vertex AI или с помощью API, поскольку, напрямую обращаясь к модели, вы получаете доступ к дополнительным настройкам, например температуре и т. д.
В этом документе подробно рассматривается разработка промптов. Мы рассмотрим различные методы создания промптов, чтобы помочь вам начать работу, а также поделимся советами и лучшими практиками, которые помогут вам стать экспертом в написании промптов. Мы также обсудим некоторые проблемы, с которыми вы можете столкнуться при написании промптов.
Промпт инжиниринг
Помните, как работает LLM: это система прогнозирования. Модель принимает последовательный текст в качестве входных данных, а затем прогнозирует, каким должен быть следующий токен, на основе данных, на которых она обучалась. LLM работает таким образом снова и снова, добавляя ранее спрогнозированный токен в конец последовательного текста для прогнозирования следующего токена. Прогнозирование следующего токена основано на взаимосвязи между предыдущими токенами и тем, что LLM видела во время обучения.
Когда вы пишете промпт, вы пытаетесь настроить LLM так, чтобы он предсказывал правильную последовательность токенов. Разработка промптов — это процесс создания высококачественных промптов, которые помогают LLM генерировать точные результаты. Этот процесс включает в себя поиск наилучшего промпта, оптимизацию его длины и оценку стиля и структуры запроса в соответствии с задачей. В контексте обработки естественного языка и LLM промпт — это вводные данные, предоставляемые модели для генерации ответа или прогноза.
Эти промпты можно использовать для решения различных задач, связанных с пониманием и генерацией, таких как обобщение текста, извлечение информации, ответы на вопросы, классификация текста, перевод на другой язык или в другой язык программирования, генерация кода, а также документирование или объяснения кода.
Ознакомьтесь с руководством Google по промптингу с простыми и эффективными примерами промптов.
Разработка промпта начинается с выбора модели. Промпты могут потребовать оптимизации под конкретную модель, независимо от того, используете ли вы языковые модели Gemini в Vertex AI, GPT, Claude или модель с открытым исходным кодом, например Gemma или LLaMA.
Помимо промптов, вам также потребуется поработать с различными конфигурациями LLM.
Конфигурация вывода LLM
После выбора модели вам нужно будет определить её конфигурацию. Большинство LLM-моделей имеют различные параметры конфигурации, которые управляют выводом LLM-модели. Для эффективной разработки промптов необходимо оптимально настроить эти параметры под вашу задачу.
Длина вывода
Важным параметром конфигурации является количество токенов, используемых для генерации ответа. Генерация большего количества токенов требует от LLM больше вычислений, что приводит к повышенному энергопотреблению, потенциально более медленному отклику и более высоким затратам.
Уменьшение длины выходных данных LLM не приводит к тому, что LLM становится более стилистически или текстуально лаконичным в создаваемых им выходных данных, это просто приводит к тому, что LLM перестает прогнозировать большее количество токенов, как только достигается предел. Если вам требуется короткая длина вывода, вам также, возможно, потребуется адаптировать запрос к вашим требованиям.
Ограничение длины вывода особенно важно для некоторых методов LLM промптинга, например, как ReAct, когда LLM будет продолжать выдавать бесполезные токены после нужного вам ответа.
Имейте в виду, что для создания большего количества токенов LLM требуется больше вычислений, что приводит к повышенному энергопотреблению и потенциально более медленному отклику, что приводит к более высоким затратам.
Контроль выборки
LLM-модели формально не предсказывают ни одного токена. Вместо этого LLM-модели предсказывают вероятность того, каким может быть следующий токен, при этом каждый токен в словаре LLM-модели получает определённую вероятность. Затем эти вероятности токенов используются для определения того, каким будет следующий созданный токен. Наиболее распространёнными настройками конфигурации, определяющими, как обрабатываются вероятности прогнозируемых токенов для выбора одного выходного токена, являются «температура», «top-K» и «top-P».
Температура
Температура определяет степень случайности при выборе токена. Более низкие температуры подходят для промптов, которые предполагают более детерминированный ответ, в то время как более высокие температуры могут привести к более разнообразным или неожиданным результатам. Температура 0 (жадное декодирование) является детерминированной: всегда выбирается токен с наибольшей вероятностью (обратите внимание, что если два токена имеют одинаковую наибольшую прогнозируемую вероятность, в зависимости от того, как реализовано разрешение противоречий, вы не всегда получите одинаковый результат при температуре 0).
Температуры, близкие к максимальным, как правило, приводят к более случайным результатам. И по мере того, как температура становится всё выше и выше, все токены с равной вероятностью могут стать следующим прогнозируемым токеном.
Температурный контроль Gemini можно понимать так же, как функцию softmax, используемую в машинном обучении. Низкая настройка температуры соответствует низкой температуре softmax (T), делая акцент на одной предпочтительной температуре с высокой вероятностью. Более высокая настройка температуры Gemini соответствует высокой температуре softmax, делая более приемлемым более широкий диапазон температур вокруг выбранной настройки. Эта повышенная неопределённость подходит для сценариев, в которых жёсткая, точная температура может быть необязательна, например, при экспериментах с творческими результатами.
«top-K» и «top-P»
Top-K и top-P (также известные как ядерная выборка) — это два режима выборки, которые используются в LLM для ограничения прогнозируемого следующего токена токенами с наивысшей прогнозируемой вероятностью. Как и температура, эти режимы выборки контролируют случайность и разнообразие генерируемого текста.
- При выборке Top-K из прогнозируемого распределения модели выбираются K наиболее вероятных токенов. Чем выше значение Top-K, тем более креативным и разнообразным будет результат работы модели; чем ниже значение Top-K, тем более сдержанным и фактическим будет результат работы модели. Значение top-K, равное 1, эквивалентно жадному декодированию.
- При выборке Top-P отбираются токены, совокупная вероятность которых не превышает определённого значения (P). Значения P варьируются от 0 (жадное декодирование) до 1 (все токены в словаре LLM).
Лучший способ выбрать между top-K и top-P — поэкспериментировать с обоими методами (или с обоими одновременно) и посмотреть, какой из них даёт нужные результаты.
Соединяем всё воедино
Выбор между top-K, top-P, температурой и количеством генерируемых токенов зависит от конкретного применения и желаемого результата, и все эти настройки влияют друг на друга. Также важно убедиться, что вы понимаете, как выбранная вами модель объединяет различные настройки выборки.
Если доступны значения температуры, top-K и top-P (как в Vertex Studio), токены, соответствующие критериям top-K и top-P, являются кандидатами на получение следующего прогнозируемого токена, а затем температура применяется к выборке из токенов, прошедших top-K и top-P. Если доступен только top-K или top-P, то поведение такое же, но используется только один параметр top-K или top-P.
Если температура недоступна, то для создания следующего прогнозируемого токена случайным образом выбираются токены, соответствующие критериям top-K и/или top-P.
При экстремальных значениях одного параметра конфигурации выборки этот параметр либо отменяет другие параметры конфигурации, либо становится неактуальным.
- Если вы установите температуру на 0, то top-K и top-P станут неактуальными — наиболее вероятный токен станет следующим прогнозируемым токеном. Если вы установите очень высокую температуру (выше 1 — обычно в диапазоне 10), то температура станет неактуальной, и токены, прошедшие через критерии top-K и/или top-P, будут выбираться случайным образом для прогнозирования следующего токена.
- Если вы установите top-K на 1, то температура и top-P станут неактуальными. Только один токен соответствует критериям top-K, и этот токен является следующим прогнозируемым токеном. Если вы установите очень высокое значение top-K, например, равное размеру словаря LLM, то любой токен с ненулевой вероятностью стать следующим токеном будет соответствовать критериям top-K, и ни один из них не будет исключён.
- Если вы установите top-P на 0 (или очень маленькое значение), то в большинстве реализаций выборки LLM будет учитываться только наиболее вероятный токен, соответствующий критериям top-P, что делает температуру и top-K неактуальными. Если вы установите top-P на 1, то любой токен с ненулевой вероятностью стать следующим токеном будет соответствовать критериям top-P, и ни один из них не будет исключён.
В качестве общей отправной точки температура 0,2, top-P 0,95 и top-K 30 дадут вам относительно последовательные результаты, которые могут быть креативными, но не чрезмерно. Если вам нужны особенно креативные результаты, попробуйте начать с температуры 0,9, top-P 0,99 и top-K 40. А если вам нужны менее креативные результаты, попробуйте начать с температуры 0,1, top-P - 0,9 и top-K - 20. Наконец, если в вашем задании всегда есть один правильный ответ (например, при решении математической задачи), начните с температуры 0.
ПРИМЕЧАНИЕ: При большей свободе (более высокая температура, top-K, top-P и выходные токены) LLM может генерировать текст, который менее релевантен.
ВНИМАНИЕ: Вы когда-нибудь видели ответ, заканчивающийся большим количеством слов-заполнителей? Это также известно как «ошибка циклического повторения», которая является распространённой проблемой для больших языковых моделей, когда модель застревает в цикле, многократно генерируя одно и то же (заполняющее) слово, фразу или структуру предложения, что часто усугубляется неподходящими настройками температуры и top-k/top-p. Это может происходить как при низких, так и при высоких настройках температуры, но по разным причинам. При низких температурах модель становится слишком детерминированной, жёстко придерживаясь наиболее вероятного пути, что может привести к зацикливанию, если этот путь возвращается к ранее сгенерированному тексту. И наоборот, при высоких температурах выходные данные модели становятся чрезмерно случайными, что повышает вероятность того, что случайно выбранное слово или фраза приведут к предыдущему состоянию, создавая зацикливание из-за огромного количества доступных вариантов. В обоих случаях процесс выборки модели «застревает», что приводит к монотонному и бесполезному выводу данных до тех пор, пока не заполнится окно вывода. Для решения этой задачи часто требуется тщательно подбирать температуру и значения top-k/top-p, чтобы найти оптимальный баланс между детерминизмом и случайностью.
Все части перевода руководства Google по промпт инжинирингу
Перевод руководства Google по промпт инжинирингу. Часть 1. Конфигурация вывода LLM
Перевод руководства Google по промпт инжинирингу. Часть 7. Лучшие практики для написания промптов, 1
Перевод руководства Google по промпт инжинирингу. Часть 8. Лучшие практики для написания промптов, 2
Перевод руководства Google по промпт инжинирингу. Часть 9. Лучшие практики для написания промптов, 3
Перевод руководства Google по промпт инжинирингу. Часть 10. Резюме и полезные ссылки