Контекст важнее формулировки
Два человека отправляют почти одинаковый запрос и получают очень разные ответы. Дело почти никогда не в словах — дело в том, что лежало на столе.
Попробуй описать вкус лимона тому, кто его никогда не пробовал. Кисло, ярко, с горчинкой по краю — можно написать абзац, и человек всё равно не будет знать. А можно дать ему дольку, и это занимает секунду.
Основные усилия в работе с промптами люди тратят на описание лимона. При этом самое сильное движение почти всегда другое: положить сам предмет на стол.
Покажи три примера вместо трёх абзацев описания.
Почему примеры бьют инструкции
Это не вопрос вкуса, это следует из механики. Продолжить закономерность — единственная родная операция модели. Давая два-три готовых примера, ты не объясняешь правило, которое ещё надо истолковать, — ты продавливаешь колею и просишь ехать дальше в том же направлении.
Эффект задокументировали ровно в момент появления современных моделей: работа 2020 года, представившая GPT-3, так и называлась — Language Models are Few-Shot Learners (Браун и др.), и главным её результатом было то, что несколько примеров прямо в запросе часто оказываются сильнее развёрнутой инструкции. Без всякого переобучения, исключительно за счёт того, что лежит на столе.
Указание «пиши сжато, живо, но профессионально» системе ещё надо расшифровать в цель — а её представление о «живо, но профессионально» есть среднее по всему, что когда-либо так называли. Два куска твоего настоящего текста расшифровку пропускают вовсе.
Что кладут на стол
Не «всё, что есть». Правильная проверка такая: что бы ты выдал толковому новому сотруднику под эту конкретную задачу? Вот это и есть комплект.
- Исходный материал. Текст, который правим; данные, которые разбираем; код, который меняем; письма, на которые отвечаем. Очевидно — и всё равно это самый частый пропуск: человек описывает свой документ вместо того, чтобы его вставить.
- Примеры нужного результата. Две-три прошлые работы того же типа, желательно свои.
- Антипример. Глубоко недооценён. Один удачный образец и один неудачный задают ось, а ось информативнее точки: «вот это работает, вот это нет, и вот причина одной строкой».
- Факты ситуации. Кто клиент, о чём договорились на прошлой неделе, какие ограничения не обсуждаются, что уже пробовали и провалили.
- Словарь. Термины проекта, названия продуктов, внутренние сокращения, принятое написание. Иначе три круга уйдут на правку терминологии.
- Критерии приёмки. Планка из прошлой статьи, расписанная явно, — лучше всего в виде чек-листа, по которому модель в конце сама себя сверит.
А если материала честно много — длинный отчёт, весь код, годовой архив заметок, — это нормально. Держать объём — ровно то, что модель делает лучше тебя.
Как примеры ломаются
Пример переносит больше, чем ты задумал. Дай три образца по двести слов, каждый из которых начинается с вопроса, — получишь двести слов, начинающихся с вопроса, даже если скопировать ты хотел только тон.
Поэтому говори, какое именно измерение брать: «Возьми регистр и лексику этих образцов. Длину и структуру игнорируй — здесь нужен один блок на четыреста слов».
Две родственные ловушки. Примеры, похожие друг на друга как близнецы, учат выдавать клона — если нужен разброс, разнообразь их. И ошибка внутри примера будет воспроизведена честно и старательно: это такая же колея, а пометки «так неправильно» на ней никто не поставил.
Свой голос показывают, а не называют
«Пиши в моём стиле» не делает почти ничего, потому что твой стиль — это не точка на карте, а маленькое отклонение от очень плотного среднего, и модель понятия не имеет, какое из отклонений твоё.
Десять абзацев твоего настоящего текста делают очень много. Ещё лучше — добавить к ним то, на что ты не похож, и назвать разницу конкретно: «я не ставлю восклицательных знаков и не задаю риторических вопросов; я начинаю с вывода; лучше резко, чем душевно».
То же самое верно для проекта целиком. Как только у тебя собрался хороший блок контекста — аудитория, словарь, примеры, ограничения, — ты начинаешь вставлять его постоянно. Вот в этот момент ему пора перестать быть сообщением и стать постоянной настройкой; об этом восемнадцатая статья.
Достаточный контекст, а не максимальный
Потолок здесь настоящий. Всё, что лежит на столе, конкурирует за внимание; середина длинного контекста — самая слабая позиция (Lost in the Middle из второй статьи); а нерелевантный материал активно тянет ответ вбок — случайно оставшаяся старая версия документа с удовольствием подмешается в новую.
Рабочие правила: релевантное важнее объёмного; подписывай блоки, чтобы модель знала, что за куча перед ней («ИСХОДНАЯ СТАТЬЯ:», «ЗАМЕЧАНИЯ КЛИЕНТА:», «МОИ ЗАМЕТКИ:»); а если кладёшь то, что использовать не надо, так и скажи («только для фона — формулировки отсюда не брать»).
Если непонятно, тот ли контекст собран, есть дешёвая проба: попроси пересказать, что она теперь знает о задаче и чего ей не хватает. Дыры видны сразу, а стоит это один ход.
На практике
Вставляй, а не описывай. Каждый раз, поймав себя на объяснении, что содержится в документе, остановись и положи документ.
Два примера и один антипример. К каждому — строчка, почему он хорош или плох: именно она несёт правило.
Называй измерение, которое копировать. Тон, или структуру, или уровень детализации — и явно скажи, что игнорировать.
Подписывай кучи. Длинный контекст без заголовков — свалка; с заголовками — стол.
Перед крупной задачей делай пробу. «Перескажи, что ты знаешь об этой задаче и чего не хватает». Один ход — и ясно, правильно ли накрыт стол.
Проверь себя
Закрой статью и ответь своими словами:
- Почему примеры работают лучше описаний — что при этом происходит механически?
- Что показала работа Language Models are Few-Shot Learners и при чём тут запрос, который ты пишешь сегодня?
- Какие шесть видов материала кладут на стол и по какому признаку решают, что включать?
- Почему антипример ценнее ещё одного хорошего примера?
- Что ломается, когда все примеры похожи, и как этого избежать?
- Почему «пиши в моём стиле» почти бесполезно и что вместо него?
- Почему больше контекста не значит лучше?
Коротко
- Продолжение закономерности — единственная родная операция модели, поэтому примеры действуют напрямую, а инструкцию ещё надо расшифровать через среднее.
- Language Models are Few-Shot Learners (Браун и др., 2020): несколько примеров в запросе часто сильнее развёрнутой инструкции, без всякого переобучения.
- На стол кладут то, что выдал бы новому сотруднику: исходный материал, примеры результата, антипример, факты ситуации, словарь проекта, критерии приёмки.
- Пример переносит всё сразу — назови измерение, которое копировать, и то, что игнорировать, иначе получишь клон его длины и формы.
- Десять абзацев твоего текста бьют «пиши в моём стиле», который не указывает никуда.
- Релевантное важнее объёмного: подписывай блоки, помечай фоновый материал и помни, что середина длинного контекста — слабое место.
- Покажи три примера вместо трёх абзацев описания.