Некоторые вопросы ему не принадлежат
После использования видно, чего спрашивать не следует: объяснений почему, ответов для человека, имени в открытом множестве и следа рассуждения. Спрашивать по-прежнему стоит закрытое «да или нет», категорию, уровень и надо ли эскалировать.
Соавтор: folkbench.com (Folkbench — проверяемая платформа оценки и выбора для API ИИ, модельных сервисов и связанных сайтов. Она опирается на опубликованные сведения о сервисе, цены, доступность, задержку и окна доказательств, чтобы помочь пользователям сравнить варианты и выбрать путь.)
Десять текстов в этой серии:
- JEV - Суставу не нужен мозг
- JEV - Почему Jev, который не умеет общаться, подходит Agent
- JEV - Как далеко на самом деле заходит «не может галлюцинировать»
- JEV - Хватает ли «да или нет», выбора и уровня на язык?
- JEV - Лаборатория могла бы это собрать. Почему всё равно может не выпустить.
- JEV - Два demo, которые я прогнал
- JEV - Люди отходят от середины цикла к краю
- JEV - За этой чертой я уже не различаю, кто умнее
- JEV - Некоторые вопросы ему не принадлежат
- JEV - Предельно простая модель, комплект и одна, которая не говорит
После использования яснее всего для меня не то, что Jev умеет. Яснее, какие виды разговора я не должен у него спрашивать.
Я беру его как сустав, а не как рот. Инстинкт может отвечать только на вопросы, на которые инстинкт может ответить. То, что надо развернуть, или то, что должно разложить рассуждение, чтобы человек увидел, — неверный объект, если спрашивать Jev. Договаривать что-то человеку — тоже неверный спрос. У него нет строк. Спросите — и положить ответ некуда.
Чего я спрашивать не должен
Если вы тоже переходите от чат-модели, легче всего спросить неверно виды ниже.
Я не должен просить его объяснить почему. Привычка, которую я принёс из чата, — начинать с просьбы объяснить. На нём эта привычка не работает. Когда я прошу его объяснить, прибывает только суждение. Причину надо записать фразами. Он их написать не может. В возврате нет «потому что». Если кому-то надо увидеть, как прибыла причина, он этого дать не может. Если мне на самом деле нужен отрезок причин, я пишу его сам или прошу модель, которая умеет говорить, и велю ей писать из суждения, которое уже сделано.
Я спрашивал его, неверно, написать ответ, чтобы человек прочитал. То, что надо отправить, — отрывок. Какая фраза идёт первой и насколько тяжёл тон, живёт в словах. Что он даёт — варианты и вероятности. Они не совпадают с отрывком, который надо отправить. Как бы ни была высока вероятность, обратно приходит один из пунктов, которые я дал заранее, а не отрывок, который он пишет сейчас. Позже я перевернул порядок. Он только судит, к какому роду эта вещь принадлежит и надо ли эскалировать этот шаг. Фразы идут чат-модели, или я пишу их сам.
Я просил его самому придумать имя внутри открытого множества. Пригодных имён много, и в вопрос записан только маленький срез. Он может выбирать только среди пунктов, которые я дал. Того, чего нет среди пунктов, он произвести не может. Если я сам не могу назвать кандидатов, его очередь ещё не пришла. Я сначала сужаю правилами или вытаскиваю маленькую горсть поиском, и потом закрываю вопрос. Позже я изменил называние так: я сам фиксирую несколько кандидатов, потом даю ему выбрать. Совсем новое вне списка я оставляю шагу, который умеет говорить.
Есть ещё род, который выглядит как тяжёлая работа, которую следует отдать модели. Улики надо переворачивать туда и обратно, и рассуждение надо сохранить. Материалы давят друг на друга. Вы хотите, чтобы он выбрал сторону, и ещё хотите, чтобы он сохранил, как было сделано совпадение. Этого туда-обратно у него нет. Один запрос — быстрое суждение из того, что я положил в state. Процесс не становится текстом, который можно перелистывать. Туда-обратно, которое я имею в виду, часто вывод, который зависит от следующей страницы, а этой страницы в state ещё нет. Эту зависимость я кладу в код. Сначала спросите одно закрытое суждение, потом я иду за уликой, и когда она возвращается, я меняю state и спрашиваю снова. Последовательность, какую страницу смотрели первой и что исключили, он написать не может. Если след надо сохранить, я отдаю его модели, которая умеет говорить.
Что я спрашивать должен
Что я должен спрашивать, я теперь узнаю только в нескольких формах. Этот ли это род — я спрашиваю напрямую. Категории должны быть теми, которые я зафиксировал заранее, и ему надо только указать на одну. Тяжесть я не даю ему сообщать тонким числом. Я черчу уровни и даю ему сказать, на какой уровень он садится. Эскалация, надо ли этот шаг отдать человеку, тоже закрытый вопрос, и я спрашиваю его в том же проходе. Форму вне этих я в него не запихиваю.
Я ещё держу грубую линейку. Если человек, который понимает дело, может указать инстинктом, глядя на этот state, тогда это похоже на его вопрос. Если указание всё ещё требует долгого вывода, я отдаю его прямо модели, которая умеет говорить.
State готовлю я. Вопрос закрываю я. Поля, которые входят в контекст, выбираю я, и то, что к этому вопросу не относится, я не приношу. Границы вариантов и уровней записаны в вопросе, а не в месте, где я надеюсь, что он сымпровизирует. Он не отвечает за то, чтобы закруглить открытый вопрос, и не перелистывает за меня следующую страницу материала. Перелистните страницу — и state изменился. Это следующий запрос, и готовить его всё ещё мне.
Я наступал на вопрос, который был закрыт плохо. Распределение уплощается. Несколько вариантов толпятся вместе, и ни один не стоит головой выше. Я сначала принял это за то, что он медленный. Это было не так. Я дал суставу поршень рта. Варианты перекрываются, или ситуация, которая на самом деле случится, не была записана в список, и вероятность может только размазаться. Тогда меняйте вопрос или отдайте шаг назад модели, которая умеет говорить. Менять вопрос значит слить перекрывающиеся пункты и дать непокрытому случаю «ничего из этого». Отдать назад значит дать модели, которая умеет говорить, сначала ясно сказать ситуацию, и потом я решаю, закрывать ли снова. Не продолжайте его подкручивать. Пока вопрос всё ещё открыт, распределение всё ещё размазано.
Choice и Score
Я стараюсь не заполнять Choice до 255. Официальный потолок — 255. Дальше они сами должны сначала оценить, потом выбрать, и ещё становится медленнее. 255 — не число, которое я здесь затем, чтобы заполнить. Чем больше краевых случаев я перечисляю как варианты, тем больше вопрос похож на список, который так и не закрыли. Если у моего вопроса естественно сотни выходов, я сначала спрашиваю, могут ли правила срезать кандидатов и может ли поиск их срезать. У маленькой горсти нет фиксированного числа. Я всё ещё могу с одного взгляда сказать, чем эти пункты различаются, и только тогда срез достаточно далёк. Если взгляд их не различает, я посылаю запрос слишком рано. Срежьте до маленькой горсти, и тогда я беру её выбирать.
Score я принимаю как упорядоченные уровни, а не как непрерывную точную десятичную дробь. Когда я пишу вопрос, я обычно черчу уровни от 2 до 10. Мне нужен уровень, а не ложная точность вроде 7.63. Уровни я пишу простыми словами. Обрабатывались бы этот уровень и следующий по-разному, я сначала продумываю. Если да, я их разделяю. Если оба уровня в конце запускают один и тот же код, я сливаю их в один уровень. Никакая ветка в коде не ждёт двух цифр после десятичной точки. Иногда он сажает число между двумя уровнями, и я всё ещё читаю его как уровень, с порогом, записанным в коде. Если смысл уровня нельзя записать ясно, я меняю описание уровня. Десятичную дробь я не ковыряю.
Когда я смотрел demo
Я смотрел официальное Doom demo и гонку по Wikipedia и не использовал их, чтобы заключить свои вопросы. Смотря Doom, я легко уношусь экраном. Экран выглядит как игра, в которую играют. Внутрь идёт структурированный state, а не картина. На стороне Doom масштаб — около 10 запросов в секунду, около $7 в час. Этот масштаб только показывает, что сустав реального времени держится и что цикл может крутиться с такой плотностью. Он не показывает, что он умеет играть в игру. Картину не съели. Следующий шаг — код снаружи, спрашивающий с state.
Гонка по Wikipedia показывает, что выбирать ссылки при большом числе вариантов полезно. Она не показывает, что он бродит по сети лучше, чем модель, которая умеет рассуждать. При сравнении без рассуждения он делает меньше шагов. Это потому, что другая сторона не включила рассуждение, так что показ выглядит лучше. Включите рассуждение — и показ выглядит хуже. Число шагов меняется, и кто быстрее, меняется. Я не принесу «меньше шагов» обратно в свою задачу и не приму это за то, что он лучше находит путь. Продолжается ли путь и где он останавливается, всё ещё решает программа снаружи. Я принимаю это так: не судите всё по игрушке. Приятен ли показ смотреть, не решает за меня, какую фразу мне спрашивать следующей.
Когда я использую его сам, разрез довольно жёсткий. То, что можно исчерпать и чьи условия устойчивы, я всё ещё пишу как правила. Я не иду спрашивать его. То, на что инстинкт может ответить одним указанием, — вот когда я его спрашиваю. Прежде чем я спрошу, вопрос должен быть закрыт, и я должен уметь приготовить state. Когда пора открыться и сказать содержание, я отдаю его чат-модели. Спросите не то — и медленность, и цена моя проблема.
Источники
- https://typesafe.ai/blog/introducing-system-one-models-and-jev
- https://evals.typesafe.ai/
- https://docs.typesafe.ai/primitives