Неровности 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 по вариантам, а не спрашивайте само значение. Если вам действительно нужно генерировать текст… для этого есть другие модели.