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。冠軍毫不意外;第二名才是光禿禿的標籤會丟掉的那部分。

“今早 4.2 發版以來,我們的 SSO 登入一直回 500。團隊裡沒人登得進去。Chrome 和 Safari 上一樣,兩個不同的租戶也一樣。”
技術 佔 87%,共 4 個選項
87% 技術

技術以 87% 勝出,但帳號佔著 13%——而這正是應該存在的分歧,因為 SSO 故障確實卡在兩者之間。一個光禿禿的標籤會把它藏起來。如果你的路由判錯是有代價的,13% 就是該拿來設門檻的那個數。

逐項對照

你送出的是什麼
Jev

一個 state 加一組型別化問題。

大型語言模型

一段提示詞,通常把 schema 和規則當散文一起塞進去。

回來的是什麼
Jev

每個問題一個型別化答案,每個選項都有機率。

大型語言模型

文字。如果你客氣地要了、而且支援那個模式,就是 JSON。

你的下一行程式
Jev

對一個只可能是你自己那些值之一的值做 switch。

大型語言模型

先解析,再驗證,然後為兩者中任一失敗的情況寫一條分支。

它怎麼出錯
Jev

它可能讀錯你的文字。它不可能回傳你沒定義過的形狀。

大型語言模型

它還可能在形狀上出錯——缺欄位、冒出你從沒列過的標籤、JSON 外面裹著一段散文。

問十件事
Jev

十個問題一次請求,平行地針對 state 評估。

大型語言模型

一段塞滿的提示詞,或者十次呼叫。

不確定性
Jev

每個 Choice 和 Score 都帶一個分布和一個信賴度。

大型語言模型

文字自己聲稱的那點把握。

這些數字

這些是 TypeSafe 公布的;是廠商自己的數據,不是我們的量測。

70–500 毫秒

端到端回應,而前沿模型是 3–329 秒

40–200 倍

在系統一形狀的查詢上更快

$0.042

每百萬輸入 token,輸出免費

我們量得到的是:在本站發起的 14 次執行中,往返時間中位數是 329 毫秒——而其中大多數請求帶的是九個問題,不是一個。

什麼時候大型語言模型才是對的工具

只要你要的是語言,大多數時候都是。Jev 沒有能解釋的觀點,也無話可說。

  • 你需要散文——一封回信、一段摘要、一條 commit 訊息、對判斷的解釋而不是判斷本身。
  • 你需要寫程式、寫方案,或任何在呼叫之前答案集合還不確定的開放式任務。
  • 可能的答案集合確實是無界的。抽取一個任意的人名,不是在 255 個選項上做 Choice。
  • 你需要一條可以檢視的推理鏈。Jev 回傳的是判斷,不是判斷背後的步驟。
  • 量很小,形狀很鬆。一天跑兩次的重試迴圈不值得專門設計掉。

這兩者互補大過互斥。TypeSafe 自己的說法是:系統一負責快速的結構化判斷,後面接一個普通模型作為系統二——用 Noul 篩輸入,用 Choice 分流,把活下來的交給真正會寫東西的那個模型。

繼續讀

自己跑一遍這個對比

貼一張工單、一份草稿、一段提示詞——任何你本來會圍著它寫一圈解析邏輯的東西——然後看九個型別化答案從一次請求裡回來。

打開試驗場