Jev против языковой модели

Они не борются за одну и ту же работу. Языковая модель пишет; Jev решает. Полезно сравнивать не то, кто умнее, а то, что вашему коду придётся делать с ответом, — и эта разница достаточно велика, чтобы изменить то, как написана программа вокруг.

Одно решение, записанное двумя способами

Отправить тикет поддержки в одну из четырёх очередей. Вот во что каждая сторона реально обходится в коде.

С языковой моделью

const res = await llm.chat({
  messages: [{ role: "user", content:
    `Route this ticket. Reply with JSON: {"queue": "Billing"|"Technical"|"Account"|"Sales"}
     Ticket: ${ticket}` }],
  response_format: { type: "json_object" }
});

let queue;
try {
  queue = JSON.parse(res.content).queue;        // may not be JSON
} catch {
  return retry();                               // ...so there is a retry
}
if (!QUEUES.includes(queue)) return retry();    // may be a queue you never had
// and no idea how close the call was

С Jev

const { answers } = await jev.systemOne({
  state: ticket,
  model: "jev-latest",
  questions: { queue: { type: "choice", instructions:
    "Which team should own this ticket?", criteria: QUEUES } }
});

const { choice, probabilities, confidence } = answers.queue;
// choice is one of QUEUES. It cannot be anything else.
if (confidence < 0.7) return humanReview(ticket, probabilities);
route(choice);

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

Что видит вторая версия

Тот самый тикет, по-настоящему прогнанный через Jev. Победитель не удивляет; второе место — это та часть, которую голая метка выбросила бы.

“Наш вход по SSO отдаёт 500 после утреннего релиза 4.2. Никто в команде не может войти. То же самое в Chrome и Safari, на двух разных тенантах.”
Техподдержка — 87 %, из 4 вариантов
87 % Техподдержка

Техподдержка побеждает с 87%, но Аккаунт держит 13% — и это ровно то разногласие, которое и должно быть, потому что сбой SSO действительно лежит на границе между ними. Голая метка это спрятала бы. Если ошибка маршрутизации чего-то стоит, порог надо ставить именно на этих 13%.

Бок о бок

Что вы отправляете
Jev

Один state плюс карту типизированных вопросов.

Языковая модель

Промпт, обычно несущий схему и правила прозой.

Что возвращается
Jev

По одному типизированному ответу на вопрос, с вероятностью для каждого варианта.

Языковая модель

Текст. JSON, если вы вежливо попросили и режим поддерживается.

Ваша следующая строка кода
Jev

Переключение по значению, которое может быть только одним из ваших.

Языковая модель

Разбор, затем проверка, затем ветка на случай, если что-то из этого не вышло.

Как он ошибается
Jev

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

Языковая модель

Он может ошибиться и в форме — отсутствующее поле, метка, которой вы не перечисляли, проза вокруг JSON.

Спросить десять вещей
Jev

Десять вопросов в одном запросе, оценённых относительно state параллельно.

Языковая модель

Один перегруженный промпт или десять вызовов.

Неопределённость
Jev

Распределение и значение уверенности у каждого Choice и Score.

Языковая модель

То, что текст сам заявляет о собственной уверенности.

Цифры

Их публикует TypeSafe; это данные поставщика, а не наши измерения.

70–500 мс

ответ от начала до конца против 3–329 с у передовых моделей

40–200×

быстрее на запросах формы Системы 1

$0,042

за миллион входных токенов, вывод бесплатно

Что можем измерить мы: на 14 запусках, сделанных через этот сайт, медианное время оборота — 329 мс, и большинство этих запросов несли девять вопросов, а не один.

Когда языковая модель — правильный инструмент

Почти всегда, если вам нужен язык. У Jev нет мнения, которое он мог бы объяснить, и нечего сказать.

  • Вам нужна проза — ответ, резюме, сообщение коммита, объяснение решения вместо самого решения.
  • Вам нужно написать код или план, или что угодно открытое, где набор ответов неизвестен до вызова.
  • Набор возможных ответов действительно неограничен. Вытащить произвольное имя — это не Choice по 255 вариантам.
  • Вам нужна цепочка рассуждений, которую можно рассмотреть. Jev возвращает суждение, а не шаги за ним.
  • Объём небольшой, форма свободная. Цикл повторов, который выполняется дважды в день, не стоит того, чтобы проектировать его прочь.

Эти двое лучше складываются, чем соперничают. Собственная формулировка TypeSafe — Система 1 для быстрого структурированного суждения и обычная модель как Система 2 позади: просейте вход через Noul, разведите через Choice и передайте уцелевшее той модели, которая действительно умеет писать.

Читать дальше

Проведите это сравнение сами

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

Открыть песочницу