Раньше каждый разговор с ИИ-чатом в общем рабочем пространстве начинался одинаково. Отвечай по-русски. Задачи лежат на доске Sprint. Заметка готова, когда она в колонке Done. Заметкам со встреч ставь тег meeting. Люди писали свои внутренние правила в первом сообщении, ассистент следовал им десяток реплик, а следующий разговор начинался с нуля.
В Notez v0.10.0 эти правила стали постоянными. Вы пишете их один раз, и каждый разговор начинается уже с ними.
Два уровня инструкций
Инструкции рабочего пространства принадлежат рабочему пространству. Владелец пишет их один раз в разделе Настройки → Рабочее пространство → Инструкции для ИИ-чата, и они действуют в чате каждого участника этого пространства. Сюда идут договорённости команды: на каком языке отвечать, что значат колонки доски, какие теги и свойства для чего использовать, насколько официально писать.
Участники видят этот текст на той же вкладке, без права редактирования. Я считаю, что это важно: инструкции, которые незаметно влияют на чужого ассистента, не должны быть скрыты от того, чей это ассистент.
Мои инструкции для ИИ-чата принадлежат вам. Каждый пишет свои в разделе Настройки → Мои настройки, и они действуют только в его собственных чатах. Сюда идёт личный стиль: пиши коротко, используй списки, объясняй ход мысли, всегда давай ссылки на заметки, которые использовал.
Почему для каждого рабочего пространства, а не для всего аккаунта
Личные инструкции сохраняются для каждого рабочего пространства отдельно, а не один раз на весь аккаунт. У большинства людей, которые работают в общем пространстве, рядом есть и личное, и в них нужно разное: в командном ответы сжатые и на английском, в личном вы думаете вслух на своём языке. Один общий набор был бы неправильным хотя бы в одном из них.
Цена небольшая. Если нужен одинаковый стиль везде, вставьте текст дважды. А если вы уходите из рабочего пространства, инструкции, которые вы для него написали, уходят вместе с вами.
Чьи инструкции главнее, если они расходятся
Два уровня — это два текста, которые могут противоречить друг другу. Владелец пишет отвечай по-французски, участник пишет отвечай по-немецки. Я выбрал единственное правило, которое, по-моему, работает в общем пространстве: сначала собственные правила чата, потом инструкции владельца, потом ваши. Участник может настроить ассистента под себя, но не может отменить то, о чём договорилось рабочее пространство.
Записать это правило было легко. Заставить модель его соблюдать — нет.
Правило, которое модель проигнорировала
В первой версии в начале раздела с инструкциями стояло одно предложение — если два блока расходятся, побеждает блок владельца рабочего пространства, — за ним блок владельца, потом блок участника. Юнит-тесты подтвердили, что промпт содержит ровно это, и прошли.
Потом я проверил так, как этим будут пользоваться люди: в настоящем браузере, с настоящей моделью. Владелец задал Всегда отвечай по-французски. Участник того же рабочего пространства задал Всегда отвечай по-немецки и ещё Заканчивай каждый ответ словом MANGO — метку, которая ни с чем не конфликтует, чтобы было видно, уцелеет ли безобидная половина его инструкций.
Чат участника ответил по-немецки. Внизу стояло MANGO.
Модель прочитала общее правило, блок владельца, блок участника и сделала то, что языковые модели обычно делают с конкурирующими инструкциями: выполнила ту, что прочитала последней. Тест, который проверяет, что промпт говорит то, что вы имели в виду, не проверяет, что модель делает то, что вы имели в виду.
Исправил я это структурой, а не более громкими формулировками:
Теперь блок участника идёт первым, а блок владельца последним, так что эффект последнего прочитанного работает на правило, а не против него.
Каждый блок сам говорит о своём приоритете прямо над своим текстом, если есть оба блока. В блоке участника сказано следовать ему, только если он не противоречит инструкциям владельца ниже; в блоке владельца — что он важнее инструкций пользователя выше.
Если блок только один, этих строк нет. Выбирать не из чего, а повисшее «инструкции ниже» только запутало бы модель.
Тот же тест, та же модель, два прогона: оба раза по-французски, оба раза MANGO. Правило владельца выдержало, а неконфликтующая инструкция участника всё равно выполнилась. Теперь юнит-тест закрепляет этот порядок и строки о приоритете, и прежде чем ему доверять, я убедился, что без этих строк он падает.
Что инструкции не меняют
Инструкции управляют тоном, языком и договорённостями. Устройство ассистента они не переписывают. Ни один из уровней не может изменить:
формат ссылок, благодаря которому заметка, упомянутая в ответе, становится кликабельной,
правила о том, какие инструменты использовать и как,
подтверждения, которых требуют эти правила: чат по-прежнему называет заметку и спрашивает, прежде чем отправить её в корзину.
И прав инструкции не дают. Чат участника работает с доступом этого участника, поэтому никакая инструкция не приведёт ассистента к заметке, которую человек не смог бы открыть сам.
Где они стоят в промпте и почему так дешевле
Инструкции идут сразу после постоянных правил ассистента, перед описанием вашего рабочего пространства и текущим временем. Такой порядок выбран намеренно.
Провайдеры моделей кэшируют начало промпта, которое байт в байт повторяется между запросами; всё после первого изменившегося байта оплачивается заново. Описание рабочего пространства меняется, как только у тега меняется число заметок, время — каждую минуту, а ваши инструкции — только когда вы их правите. Если стабильный текст стоит первым, он почти в каждом сообщении попадает в кэш, и постоянные инструкции обходятся дешевле, чем можно подумать по их длине.
Как писать инструкции, которые работают
Что я понял, когда писал свои:
Пишите конкретно. Задачи лежат на доске Sprint; задача готова, когда она в колонке Done работает лучше, чем пойми наш рабочий процесс.
Называйте вещи настоящими именами. Ассистент и так видит ваши теги, свойства и колонки. Инструкции объясняют ему, что они значат.
Пишите коротко. Каждый набор не длиннее 2000 символов и уходит с каждым сообщением, поэтому расходует месячные токены чата владельца рабочего пространства. Обычно хватает одного абзаца.
Командные правила — в рабочее пространство, вкусы — в «Мои настройки». Если это важно только вам, это личное.
Проверяйте настоящим вопросом. Спросите то, на что инструкции должны повлиять, и посмотрите, повлияли ли.
Попробуйте
Откройте Настройки. Если вы владелец рабочего пространства, на вкладке Рабочее пространство после блока Участники есть раздел Инструкции для ИИ-чата. У всех есть Мои инструкции для ИИ-чата внизу вкладки Мои настройки. Сохраните, нажмите ⌘J и спросите что-нибудь: следующий ответ уже будет им следовать.
Полное описание, в том числе что происходит, когда вы переключаетесь на другое рабочее пространство или уходите из него, есть в Центре помощи: Инструкции для ИИ-чата.
Читайте также
Какие у меня сегодня задачи: как ИИ-чат научился видеть доску — почему чат отвечал не тем списком, пока не увидел доску на вашем экране.
Как работает ИИ-чат в Notez: что он видит, что меняет и чего не делает — 29 инструментов, которыми ИИ-чат работает с вашим рабочим пространством, чего он не делает и какие у него лимиты на каждом тарифе.
Как работает семантический поиск по заметкам — как эмбеддинги находят заметку со словом «мемоизация», когда вы ищете «кэширование», и где поиск по ключевым словам всё ещё выигрывает.