Jev kontra LLM

Nie konkurują o tę samą pracę. LLM pisze; Jev decyduje. Użyteczne porównanie nie dotyczy tego, który jest mądrzejszy, tylko tego, co twój kod musi zrobić z odpowiedzią — a ta różnica jest na tyle duża, że zmienia sposób pisania programu dookoła.

Ta sama decyzja, zapisana na oba sposoby

Skieruj zgłoszenie do wsparcia do jednej z czterech kolejek. Oto, ile każda strona naprawdę kosztuje cię w kodzie.

Z modelem językowym

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

Z Jevem

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);

Pętla ponowień jest tu sygnałem. Istnieje w pierwszej wersji, bo odpowiedź przychodzi jako tekst, który może się nie sparsować albo sparsować na kolejkę, której nigdy nie było na liście. W drugiej nie ma gdzie mieszkać: odpowiedź jest z konstrukcji jedną z QUEUES. Zastępuje ją zupełnie inna gałąź — taka, która odpala, gdy model jest niepewny, a nie gdy jest zniekształcony.

Co widzi druga wersja

To zgłoszenie, naprawdę przepuszczone przez Jeva. Zwycięzca nie zaskakuje; drugie miejsce to ta część, którą goła etykieta by wyrzuciła.

“Nasze logowanie SSO zwraca 500 od dzisiejszego porannego wydania 4.2. Nikt z zespołu nie może się dostać. Tak samo w Chrome i Safari, na dwóch różnych dzierżawcach.”
Techniczny przy 87%, spośród 4 opcji
87% Techniczny

Techniczny wygrywa z 87%, ale Konto trzyma 13% — i to jest dokładnie właściwa niezgoda, bo awaria SSO naprawdę leży na granicy między nimi. Goła etykieta by to ukryła. Jeśli pomyłka w routingu kosztuje, 13% to liczba, na której stawiasz próg.

Obok siebie

Co wysyłasz
Jev

Jeden state plus mapę typowanych pytań.

LLM

Prompt, zwykle niosący schemat i reguły jako prozę.

Co wraca
Jev

Po jednej typowanej odpowiedzi na pytanie, z prawdopodobieństwem dla każdej opcji.

LLM

Tekst. JSON, jeśli ładnie poprosiłeś i tryb jest wspierany.

Twoja następna linia kodu
Jev

Switch na wartości, która może być tylko jedną z twoich.

LLM

Parsowanie, potem walidacja, potem gałąź na wypadek, gdy któreś zawiodło.

Jak zawodzi
Jev

Może się mylić co do twojego tekstu. Nie może zwrócić kształtu, którego nie zdefiniowałeś.

LLM

Może się mylić także co do kształtu — brakujące pole, etykieta, której nigdy nie wymieniłeś, proza owinięta wokół JSON-a.

Pytanie o dziesięć rzeczy
Jev

Dziesięć pytań w jednym żądaniu, ocenianych wobec state równolegle.

LLM

Jeden zatłoczony prompt albo dziesięć wywołań.

Niepewność
Jev

Rozkład i wartość pewności przy każdym Choice i Score.

LLM

Cokolwiek tekst twierdzi o własnej pewności.

Liczby

Publikuje je TypeSafe; to dane producenta, nie nasze pomiary.

70–500 ms

odpowiedź od końca do końca, wobec 3–329 s dla modeli z czołówki

40–200×

szybciej przy zapytaniach o kształcie Systemu Pierwszego

0,042 $

za milion tokenów wejściowych, wyjście za darmo

To, co możemy zmierzyć: na 14 przebiegach wykonanych przez tę stronę mediana czasu przelotu wynosi 329 ms — a większość tych żądań niosła dziewięć pytań, nie jedno.

Kiedy LLM jest właściwym narzędziem

Przez większość czasu, jeśli potrzebujesz języka. Jev nie ma opinii, którą mógłby wyjaśnić, ani niczego do powiedzenia.

  • Potrzebujesz prozy — odpowiedzi, streszczenia, opisu commita, wyjaśnienia decyzji zamiast samej decyzji.
  • Potrzebujesz napisanego kodu albo planu, albo czegokolwiek otwartego, gdzie zbiór odpowiedzi nie jest znany przed wywołaniem.
  • Zbiór możliwych odpowiedzi jest naprawdę nieograniczony. Wyciągnięcie dowolnej nazwy własnej to nie Choice po 255 opcjach.
  • Potrzebujesz łańcucha rozumowania, który da się obejrzeć. Jev zwraca osąd, a nie kroki, które do niego prowadzą.
  • Wolumen jest mały, a kształt luźny. Pętli ponowień, która chodzi dwa razy dziennie, nie warto projektować na wylot.

Te dwa lepiej się składają, niż konkurują. Samo ujęcie TypeSafe to System Pierwszy do szybkiego, ustrukturyzowanego osądu i zwykły model jako System Drugi za nim — przesiej wejście Noulem, poroutuj Choice’em i przekaż to, co przetrwało, modelowi, który naprawdę potrafi pisać.

Czytaj dalej

Przeprowadź to porównanie sam

Wklej zgłoszenie, szkic, prompt — cokolwiek, wokół czego inaczej napisałbyś pętlę parsowania — i patrz, jak dziewięć typowanych odpowiedzi wraca z jednego żądania.

Otwórz plac zabaw