system-one-design
Превратите шаг «спросить и вытащить ответ» в типизированные вопросы — по одному условию, имена вариантов без вердикта, число в ответ — и никогда не позволяйте этому числу самому остановить работу.
Присвоено человеком, который прочитал карточку, а не заявлено файлом о самом себе. Карточка, которую агент выводит во время запуска, поглотившего недоверенное содержимое, рождается заражённой и удерживается на разбор, прежде чем её вообще извлекут.
Когда это вспоминается
- вытаскивание «да» или «нет» из прозы модели
- классификация многих элементов моделью
- просьба к модели что-то оценить
- ответ модели решает, что будет дальше
Ценность обычно лежит в разделах «Избегать» и «Проверить». «Делать» — это раздел, который пишут все.
Текст карточки выше — перевод. Английский оригинал — это то, что импортирует командная строка, что читает агент во время работы и что подтверждает хеш ниже.
Повод
Шаг задаёт модели вопрос, ответ на который — одно из немногих известных значений: да или нет, одна из пяти меток, уровень от низкого до высокого, — а затем вычитывает это значение из написанной прозы. Или один и тот же вопрос задаётся сотням элементов. Это типизированное решение в костюме чата.
Делать
- Задайте его как типизированный вопрос (
chimera decide,POST /api/decideили инструментdecide):noulдля да/нет,choiceдля одного из набора,scoreдля упорядоченных уровней. Возвращается вероятность. - Одно условие на вопрос. «Это ошибка и она из базы данных?» — два вопроса; задайте оба и объедините ответы в коде, где правило видно.
- Давайте вариантам имена, не несущие вердикта (не "yes", "safe", "pass"), а смысл пишите
в критерии. Вариант «всё остальное» ("other") — туда уходит неуверенное прочтение: дайте ему узкий
критерий или уберите его. Пусть первые слова вариантов различаются: локальная модель читает метку по первому токену, поэтому
codingиcoding_agentникогда не различить (так остались непрочитанными 24 из 231 публичного пункта JevBench). О варианте-«корзине», измерено на 1000 заголовках коммитов: широкий «other» поглотил 78% пунктов, относившихся к названному варианту, узкий — 58%; без него F1 названных классов вырос с 0,24 до 0,43 — ценой того, что пункты, действительно лежащие вне набора, попадают в названный вариант. - Показывайте модели только то, что оценивается: не вывод инструментов вокруг, не фразу, которая агитирует за ответ.
- Любой порог выбирайте по размеченным примерам, никогда наугад, и храните число рядом с решением, которое оно питало.
- Арифметику, даты и подсчёты оставляйте в коде: вычислите факт, положите его в состояние и спросите о нём. Модель решений читает, а не вычисляет (на сложном уровне JevBench локальная модель верно ответила на 1 из 15 пунктов с датами и числами).
Избегать
Не позволяйте числу завершать, пропускать или одобрять работу. Решение может добавить проверки — ревью, предупреждение, вторую проверку — и ничего больше: единственное решение в этом проекте, которое могло сказать «стоп», ухудшило каждую модель, которой управляло, и тем сильнее, чем лучше была модель.
Избегайте также чтения ответа после рассуждения (число схлопывается в 0 или 1), разбиения одного суждения на атомы, описывающие то, что есть у обоих классов (атом «уничтожает данные?» отмечал законные очистки так же охотно, как атаки), и принятия сырой вероятности за откалиброванную. Держите состояние компактным: строка для каждого несработавшего факта (столбец «none») сдвигала число на каждом пункте, а одно и то же повторённое содержимое читается как закономерность, которой нет.
Проверить
- Линтер принимает каждый вопрос (отклонённый вопрос никогда не доходит до модели).
- Каждый вопрос отвечает в обе стороны на ваших элементах; тот, что всегда говорит одно и то же, читает формат, а не текст.
- При длинном состоянии и локальной модели промпт помещается в окно контекста — тихое обрезание выглядит как результат модели.
- Где-то размеченная выборка показывает, что число разделяет важные для вас случаи — и она охватывает все способы, которыми решение ошибается, с обеих сторон; выборка из одного типа ошибок калибрует только этот тип.
- Прежде чем считать изменение формулировки эффектом, задайте неизменённый вопрос ещё раз и посмотрите, насколько число сдвигается само по себе.
Риск
Типизированный ответ выглядит увереннее прозы, но не является таковым: маленькая модель может хорошо ранжировать и всё же уверенно ошибаться в середине своей шкалы. Считайте неоткалиброванное число подсказкой, записывайте его и калибруйте на своих метках, прежде чем любой порог начнёт что-то значить.
Как применить
Карточка — это данные. Склонируйте репозиторий и импортируйте её по пути: всё, что приходит по сети, считается заражённым и удерживается до одобрения — это и есть желаемое поведение, и поэтому здесь нет установщика в одну строку.
git clone https://github.com/brcampidelli/chimera-agent.gitchimera skills-import chimera-agent/skills/system-one-design/SKILL.mdЦелостность
SHA-256 файла в опубликованном виде. Импортёр может проверить, что полученное совпадает с показанным на этой странице.
347bfae9f826835f3351a60983b826f9b59fe5a7a9c1b87bf1a7bc3415ece699