Документация

Неровности Jev 1.13

Jev не идеален. Вот некоторые неровные края jev-1.13, о которых мы знаем. Многие из них будут исправлены в следующих версиях.

jev-1.13 быстр, калиброван и хорошо справляется со здравым суждением, но он не идеален. Лучше всего jev-1.13 работает на задачах System One. Он может испытывать трудности с задачами, требующими дополнительных уровней косвенности. Его понимание может быть довольно буквальным. Ему тяжело даются задачи, требующие числовой точности.

Режимы отказа подробно

# Режим отказа Что делать вместо этого
1 Буквальное чтение Напишите точное условие и критерии для каждого доступного варианта
2 Математика и числа Держите арифметику в коде
3 Сравнение дат и времени Извлекайте компоненты; сравнивайте в коде
4 Косвенность Сократите переходы; указывайте на нужное состояние
5 Большое состояние с несущественными деталями Сначала фильтруйте; отправляйте только то, что нужно вопросу
6 Враждебный контент Пишите точные промпты и тестируйте крайние случаи перед развёртыванием
7 Противоречивые инструкции и критерии Согласуйте критерии и инструкцию
8 Порядок вариантов Choice Измените порядок вариантов и проверьте, что ответ остаётся согласованным
9 Генерация Используйте генеративную модель

Буквальное чтение

jev-1.13 отвечает на вопрос, который вы написали, а не на тот, который имели в виду. Слова-ограничители, отрицания и подразумеваемые условия читаются буквально. Вопрос будет воспринят по словам, написанным в инструкции, тогда как человек, возможно, прочитал бы намерение за инструкциями.

Вместо этого: укажите точное условие в instructions. Будьте конкретны. Поместите пограничные случаи в критерии. Когда вы смотрите на неверный ответ и ловите себя на объяснении того, что на самом деле имели в виду, это объяснение — недостающая половина инструкции. Там, где интерпретации не избежать, разделите её на два буквальных вопроса и объедините их в коде.

Математика и числа

Jev не калькулятор. Мы настоятельно рекомендуем реализовывать любую математическую логику в коде. Jev будет работать лучше на семантических вопросах, чем на математических.

Подсчёт

jev-1.13 не считает надёжно. Это касается символов в слове, вхождений термина в отрывок и элементов в длинном списке. Модель распознаёт форму ответа, а не подсчитывает, и ошибка растёт с размером того, что считается.

Прежде чем задавать вопрос на подсчёт, спросите, зачем для подсчёта вообще нужна модель. Если единицу может найти регулярное выражение или парсер, подсчёт принадлежит коду, и модели нечего добавить.

Вместо этого: считайте в коде. Когда нужно посчитать элементы, соответствующие некоторым критериям, пройдитесь в коде циклом по кандидатам и задайте по одному вопросу на каждого, а затем сложите ответы сами.

from typesafe_sdk import Noul, TypeSafeClient

client = TypeSafeClient(model="jev-1.13")
YES = 0.5  # up to you on what you want the threshold to be, depends on your usecase.

items = ["typesafe", "apple", "california", "banana", "likes", "calibration", "orange", "vertex"]

result = client.system_one(
    {"items": items},
    {
        f"item_{i}": Noul(instructions=f"Is `items[{i}]` the name of a fruit?")
        for i in range(len(items))
    },
)

count = sum(result.nouls[f"item_{i}"].noul > YES for i in range(len(items)))

Числовые представления

jev-1.13 будет работать лучше с семантическими представлениями, чем с числовыми. Например, вопросы о цветах с использованием hex-значений будут работать хуже, чем с английскими названиями. Получив RGB-триплеты или hex-значения, он не может надёжно судить, близки ли два значения друг к другу.

Аналогично вопросы о высокоуровневых языках программирования работают лучше, чем вопросы о низкоуровневом ассемблере или инструкциях в двоичном коде.

Вместо этого: выполните преобразование в коде и передайте либо вычисленное число, либо именованную категорию. Оставьте модель для той части, которая действительно является суждением, например считывается ли цвет как предупреждение.

Математика с использованием score

Пожалуйста, не используйте выходные данные score (например, математические ожидания и вероятность), чтобы вычислить точную величину числа между двумя уровнями критерия. Вы можете использовать математическое ожидание, чтобы проверить, проходит ли оно определённый порог, но уровни score у jev-1.13 слабы в числовой калибровке. Он не поможет восстановить точное число интерполяцией между двумя ближайшими уровнями.

Сравнение дат и времени

jev-1.13 читает даты как текст, а не как упорядоченные величины. Спрашивать, какая из двух дат идёт первой, насколько они далеки друг от друга или попадает ли одна в окно, ненадёжно. Становится хуже со смешанными форматами, относительными ссылками и границами предметной области, такими как кварталы, расчётные окна и периоды начисления.

Вместо этого: разделите работу. Извлечение — это суждение, поэтому отдайте его модели. Арифметика — нет, поэтому держите её в коде.

Каждая часть даты — небольшое замкнутое множество: двенадцать месяцев, тридцать один возможный день, ограниченный диапазон лет. Это превращает извлечение в Choice по перечисленным вариантам, а не в свободный разбор, и даёт место для явного варианта «не указано», чтобы отсутствующую часть сообщали, а не угадывали. Код собирает части в настоящую дату и отвечает за всё после этого, включая порядок, длительность, смещение и день недели.

Cookbook по извлечению дат содержит разобранную версию, включая относительные даты и gating по уверенности.

Косвенность

На инструкции с двойными отрицаниями или сложной косвенностью отвечают менее надёжно. Вопрос о свойстве свойства или о чём-то, что требует нескольких переходов рассуждения, стоит точности.

Вместо этого: пишите инструкции как можно прямее. Где возможно, называйте нужные части состояния по имени.

Большое состояние с несущественными деталями

Точность падает по мере роста состояния за счёт содержимого, не связанного с решением. Несвязанные детали действуют как отвлекающий фактор, а большое состояние затрудняет понимание того, какая часть входа привела к неверному ответу.

Вместо этого: сначала извлеките и отфильтруйте данные в коде и отправляйте только нужные вопросу поля. Когда фильтровать внутри состояния невозможно, можно использовать Noul для фильтрации по релевантности. Cookbook по классификации отрывков RAG содержит разобранный пример.

Враждебный контент

Состояние — это данные, и jev-1.13 по умолчанию не считает их враждебными. Содержимое, написанное так, чтобы враждебно управлять моделью, — будь то внедрённая инструкция, намеренно вводящая в заблуждение подача или текст, который ратует за собственную классификацию, — может изменить ответ. Мы рассчитываем улучшить это в будущем.

Вместо этого: будьте явны в критериях. Тщательно протестируйте свою интеграцию, прежде чем развёртывать её для многих пользователей.

Противоречивые инструкции и критерии

Когда instructions и criteria просят разное, jev-1.13 может запутаться. Лучшая производительность достигается ясными формулировками. Например, Noul, где true соответствует «нет», а false — «да», будет работать хуже. Стремитесь к инструкциям, которые легко читать и понимать среднему человеку.

Вместо этого: относитесь к критериям как к продолжению инструкции. Согласуйте их, используя ясный и точный язык.

Порядок вариантов Choice

В некоторых случаях мы наблюдали, что порядок вариантов Choice может влиять на ответ, и jev-1.13 склоняется к варианту, который идёт первым.

Вместо этого: измените порядок вариантов и проверьте, что ответ остаётся согласованным.

Генерация

jev-1.13 не обучен генерировать текст. Хотя вы можете заставить его, связывая choices, это будет работать плохо и очень медленно. Для извлечения данных лучше извлечь возможные варианты с помощью регулярных выражений или генеративной модели и дать jev-1.13 выбрать правильное извлечение.

Вместо этого: когда пространство ответов ограничено, превратите извлечение в Choice по вариантам, а не спрашивайте само значение. Если вам действительно нужно генерировать текст… для этого есть другие модели.