Menu

Zero-shot промптинг: примеры и когда он работает

Zero-shot промптинг: это когда вы просите модель выполнить задачу только по инструкции, без примеров ответа. Так большинство людей и пользуется ChatGPT, Claude и Gemini, и это хорошо работает, когда задача распространённая, а инструкция точная.

Каждый промпт на этой странице можно изменить и открыть в ChatGPT, Claude или другом ИИ-приложении.

Zero-shot промптинг: это когда вы просите модель выполнить задачу только по инструкции, не показывая ни одного примера нужного ответа. «Переведи этот абзац на испанский» и «Перескажи это письмо в двух предложениях»: это zero-shot промпты. Так люди пользуются чат-моделями по умолчанию, и для распространённых задач обычно больше ничего и не нужно.

Что значит zero-shot

В машинном обучении «shot» означает готовый пример. Эти термины старше чат-моделей, но в смысле промптинга их популяризировала статья Brown et al. 2020 года «Language Models are Few-Shot Learners», где GPT-3 проверяли в трёх режимах: описание задачи с нулём, одной или несколькими демонстрациями в промпте и без дообучения в каждом из них. Для той модели несколько примеров обычно давали результат лучше, чем ни одного.

С тех пор чат-модели интенсивно обучали следовать инструкциям, поэтому простая просьба теперь работает так хорошо. Zero-shot промпт: ровно та ситуация, к которой их готовили. Кто-то описывает работу словами и ждёт, что её сделают.

Zero-shot не означает ноль контекста. Хороший zero-shot промпт всё равно называет аудиторию, содержит входные данные и описывает формат и ограничения. Единственное, чего в нём нет: готового примера результата.

Хороший zero-shot промпт

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

Задачи из заметок со встречи
Parts
Вытащи задачи из этих заметок со встречи.
Список пойдёт в трекер задач нашей команды, поэтому у каждой задачи должен быть ровно один ответственный.
Одна строка на задачу: ответственный, двоеточие, задача, начинающаяся с глагола, затем срок в скобках, если он указан в заметках.
Включай только работу, которую кто-то согласился сделать. Пропускай обсуждения и идеи, которые никто не взял на себя. Если у задачи нет ответственного, пиши в качестве ответственного «Не назначен».
Синк по спринту, вторник Прия починит таймаут входа до пятницы. Обсуждали переход на новый CI-сервис, решения нет. Том пишет заметки к релизу 2.4. Кому-то надо обновить документ для онбординга. Лена: посмотрю заметки Тома до четверга.
Try it
Example replyReplies vary between models and runs.

Прия: Починить таймаут входа (до пятницы) Том: Написать заметки к релизу 2.4 Не назначен: Обновить документ для онбординга Лена: Проверить заметки Тома к релизу (до четверга)

Строка формата делает то, что сделал бы пример: она точно описывает форму каждой строки, и копировать нечего. Отключите её, и ответ выберет форму сам, часто маркированный список с жирными именами, который читается нормально, но в трекер уже чисто не вставляется. Отключите ограничения, и обсуждение CI может попасть в задачи, потому что ничто не сказало модели, что нерешённые темы не считаются.

Когда zero-shot достаточно

Zero-shot работает, когда модель может вывести всё из ваших слов:

  • Задача распространённая. Пересказ, перевод, объяснение, исправление грамматики и написание функции по ясному описанию: всё это модель видела при обучении бесчисленное количество раз.
  • Вы можете точно описать результат. «Одна строка на задачу, ответственный первым» так же ясно, как пример. Как описывать форматы, которые будет читать программа, смотрите на странице структурированный вывод.
  • Категории значат то, что написано. Разделение отзывов на положительные и отрицательные обычно не требует примеров, потому что эти метки почти для всех значат одно и то же.

Когда лучше добавить примеры

Некоторые вещи трудно выразить словами, и именно там zero-shot промпты начинают промахиваться:

  • Ваши собственные границы. Если ваша поддержка относит «не могу войти» к проблемам с аккаунтом, а не к багам, модель этого знать не может. Она выберет прочтение, которое выбрало бы большинство.
  • Принятый у вас стиль. Сообщения коммитов вашей команды или тон вашей рассылки проще показать, чем описать.
  • Повторяющиеся промахи. Если вы дважды переформулировали инструкцию, а результат всё так же чуть-чуть не тот, перестаньте переформулировать и покажите два-три правильных ответа.

Это few-shot промптинг. Разумная привычка: начинать с zero-shot, смотреть, что приходит, и добавлять примеры только для того конкретного, в чём модель ошибается.

Zero-shot chain of thought

Kojima et al. 2022, «Large Language Models are Zero-Shot Reasoners», обнаружили, что добавление одной фразы, «Let's think step by step» («Давай подумаем шаг за шагом»), заметно улучшало результаты больших моделей на арифметических, символьных и логических задачах, вообще без примеров. Фраза заставляет модель выписать промежуточные шаги перед ответом, и каждый написанный шаг становится контекстом для следующего. Их метод использовал два вызова: первый давал рассуждение, а второй просил итоговый ответ.

В блоке ниже первая вкладка требует немедленного ответа, а вторая даёт модели место для работы.

Поезд по расписанию отправляется в 9:40. Он отправляется с опозданием на 25 минут. Обычно поездка занимает 2 часа 35 минут, но в пути поезд нагоняет 10 минут. Во сколько он прибывает? Ответь только временем.
Try it
Example replyReplies vary between models and runs.

12:40

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

Модели, которые рассуждают внутри перед ответом, делают эту работу и без просьбы, поэтому «давай подумаем шаг за шагом» добавляет им мало, кроме более длинного ответа. Техника подробно, включая few-shot версию, разобрана на странице chain of thought промптинг.

Zero-shot и few-shot: коротко

Zero-shotFew-shot
Что содержит промптИнструкции, контекст и входные данныеТо же плюс несколько пар «вход и ответ»
Лучше всего подходит дляРаспространённых задач с легко описываемым результатомСвоих меток, необычных форматов, принятого стиля
СтоимостьКороткий промптДлиннее промпт, больше токенов на вызов
Типичная ошибкаВыбирает самое распространённое прочтение, а не вашеКопирует случайные закономерности в примерах

Часто задаваемые вопросы

Что такое zero-shot промптинг?

Zero-shot промптинг: это постановка задачи языковой модели только с инструкциями, без готовых примеров результата. «Перескажи это письмо в двух предложениях»: это zero-shot промпт. Современные чат-модели обучены следовать инструкциям, поэтому zero-shot промпты хорошо справляются с большинством повседневных задач.

Чем zero-shot отличается от few-shot промптинга?

Zero-shot промпт описывает задачу словами. Few-shot промпт добавляет несколько примеров, каждый из которых: вход в паре с нужным ответом, чтобы модель могла повторить схему. Начинайте с zero-shot; переходите к few-shot, когда результат раз за разом промахивается мимо формата или различия, которое проще показать, чем описать.

Почему это называется zero-shot?

В машинном обучении «shot» означает готовый пример. В статье Brown et al. 2020 года о GPT-3, «Language Models are Few-Shot Learners», модель проверяли с нулём, одной или несколькими демонстрациями задачи в промпте, и после этого названия закрепились в промптинге: zero-shot, one-shot и few-shot.

Когда zero-shot промптинг не работает?

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

Что такое zero-shot chain of thought?

Это zero-shot промпт, который просит модель порассуждать перед ответом, в самом известном варианте с помощью фразы «Давай подумаем шаг за шагом». Kojima et al. в 2022 году показали, что одно это предложение, без всяких примеров, улучшило результаты больших моделей на арифметических и логических задачах.

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ