EverProduct
Нейросети

Этап 02 · Как разговаривать

Контекст важнее формулировки

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

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

Основные усилия в работе с промптами люди тратят на описание лимона. При этом самое сильное движение почти всегда другое: положить сам предмет на стол.

Покажи три примера вместо трёх абзацев описания.

Почему примеры бьют инструкции

Это не вопрос вкуса, это следует из механики. Продолжить закономерность — единственная родная операция модели. Давая два-три готовых примера, ты не объясняешь правило, которое ещё надо истолковать, — ты продавливаешь колею и просишь ехать дальше в том же направлении.

Эффект задокументировали ровно в момент появления современных моделей: работа 2020 года, представившая GPT-3, так и называлась — Language Models are Few-Shot Learners (Браун и др.), и главным её результатом было то, что несколько примеров прямо в запросе часто оказываются сильнее развёрнутой инструкции. Без всякого переобучения, исключительно за счёт того, что лежит на столе.

Указание «пиши сжато, живо, но профессионально» системе ещё надо расшифровать в цель — а её представление о «живо, но профессионально» есть среднее по всему, что когда-либо так называли. Два куска твоего настоящего текста расшифровку пропускают вовсе.

Что кладут на стол

Не «всё, что есть». Правильная проверка такая: что бы ты выдал толковому новому сотруднику под эту конкретную задачу? Вот это и есть комплект.

  • Исходный материал. Текст, который правим; данные, которые разбираем; код, который меняем; письма, на которые отвечаем. Очевидно — и всё равно это самый частый пропуск: человек описывает свой документ вместо того, чтобы его вставить.
  • Примеры нужного результата. Две-три прошлые работы того же типа, желательно свои.
  • Антипример. Глубоко недооценён. Один удачный образец и один неудачный задают ось, а ось информативнее точки: «вот это работает, вот это нет, и вот причина одной строкой».
  • Факты ситуации. Кто клиент, о чём договорились на прошлой неделе, какие ограничения не обсуждаются, что уже пробовали и провалили.
  • Словарь. Термины проекта, названия продуктов, внутренние сокращения, принятое написание. Иначе три круга уйдут на правку терминологии.
  • Критерии приёмки. Планка из прошлой статьи, расписанная явно, — лучше всего в виде чек-листа, по которому модель в конце сама себя сверит.

А если материала честно много — длинный отчёт, весь код, годовой архив заметок, — это нормально. Держать объём — ровно то, что модель делает лучше тебя.

Как примеры ломаются

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

Поэтому говори, какое именно измерение брать: «Возьми регистр и лексику этих образцов. Длину и структуру игнорируй — здесь нужен один блок на четыреста слов».

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

Свой голос показывают, а не называют

«Пиши в моём стиле» не делает почти ничего, потому что твой стиль — это не точка на карте, а маленькое отклонение от очень плотного среднего, и модель понятия не имеет, какое из отклонений твоё.

Десять абзацев твоего настоящего текста делают очень много. Ещё лучше — добавить к ним то, на что ты не похож, и назвать разницу конкретно: «я не ставлю восклицательных знаков и не задаю риторических вопросов; я начинаю с вывода; лучше резко, чем душевно».

То же самое верно для проекта целиком. Как только у тебя собрался хороший блок контекста — аудитория, словарь, примеры, ограничения, — ты начинаешь вставлять его постоянно. Вот в этот момент ему пора перестать быть сообщением и стать постоянной настройкой; об этом восемнадцатая статья.

Достаточный контекст, а не максимальный

Потолок здесь настоящий. Всё, что лежит на столе, конкурирует за внимание; середина длинного контекста — самая слабая позиция (Lost in the Middle из второй статьи); а нерелевантный материал активно тянет ответ вбок — случайно оставшаяся старая версия документа с удовольствием подмешается в новую.

Рабочие правила: релевантное важнее объёмного; подписывай блоки, чтобы модель знала, что за куча перед ней («ИСХОДНАЯ СТАТЬЯ:», «ЗАМЕЧАНИЯ КЛИЕНТА:», «МОИ ЗАМЕТКИ:»); а если кладёшь то, что использовать не надо, так и скажи («только для фона — формулировки отсюда не брать»).

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

На практике

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

Два примера и один антипример. К каждому — строчка, почему он хорош или плох: именно она несёт правило.

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

Подписывай кучи. Длинный контекст без заголовков — свалка; с заголовками — стол.

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

Проверь себя

Закрой статью и ответь своими словами:

  1. Почему примеры работают лучше описаний — что при этом происходит механически?
  2. Что показала работа Language Models are Few-Shot Learners и при чём тут запрос, который ты пишешь сегодня?
  3. Какие шесть видов материала кладут на стол и по какому признаку решают, что включать?
  4. Почему антипример ценнее ещё одного хорошего примера?
  5. Что ломается, когда все примеры похожи, и как этого избежать?
  6. Почему «пиши в моём стиле» почти бесполезно и что вместо него?
  7. Почему больше контекста не значит лучше?

Коротко

  • Продолжение закономерности — единственная родная операция модели, поэтому примеры действуют напрямую, а инструкцию ещё надо расшифровать через среднее.
  • Language Models are Few-Shot Learners (Браун и др., 2020): несколько примеров в запросе часто сильнее развёрнутой инструкции, без всякого переобучения.
  • На стол кладут то, что выдал бы новому сотруднику: исходный материал, примеры результата, антипример, факты ситуации, словарь проекта, критерии приёмки.
  • Пример переносит всё сразу — назови измерение, которое копировать, и то, что игнорировать, иначе получишь клон его длины и формы.
  • Десять абзацев твоего текста бьют «пиши в моём стиле», который не указывает никуда.
  • Релевантное важнее объёмного: подписывай блоки, помечай фоновый материал и помни, что середина длинного контекста — слабое место.
  • Покажи три примера вместо трёх абзацев описания.