研究報告 · 2026 年 10 月 12 日

決策模型 API 實測:
TypeSafe Jev vs OpenAI Decisions

以銀行客服情境(繁體中文為主),實測兩個新一代「決策模型」API 的準確率、延遲、成本、機率可信度與 function call 能力,並用 Claude Haiku 5.5 模擬同樣作法作為對照組。

重點摘要

難題版準確率
Jev
OpenAI
Function call 整個 call 全對
Jev
OpenAI
每千次呼叫成本(難題版)
Jev
OpenAI
延遲中位數
Jev
OpenAI
從台灣呼叫,兩家單獨測的那一輪
  1. 簡單題兩家都滿分,題目一難才拉開差距。難題版 Jev 97.8%、OpenAI 93.3%;function call 整個 call 全對 Jev 94.7%、OpenAI 89.5%。Jev 同時也比較便宜、比較快。
  2. 兩家錯的題型剛好相反,也和官方文件自述的弱點相反。OpenAI 錯在數字、日期和規則計算;Jev 官方承認數字和日期是弱點,這些題卻全對,它錯在字面解讀,例如假設語氣和雙重否定。
  3. Jev 的機率比較能拿來設門檻。難題版只自動處理機率 ≥ 0.8 的題目時,Jev 準確率 100%;OpenAI 有兩題機率超過 0.9 仍然答錯,門檻擋不住。
  4. function call 的參數兩家都 100% 填對,包括從候選值裡挑出金額與帳號、客戶講到一半改口的情況。差別在選 function 與判斷參數是否齊全。
  5. 用一般 LLM 模擬可行,但划不來。Claude Haiku 5.5 加上 structured outputs 做得出同樣的介面,但延遲約 6–7 倍、成本約 2 倍,而且在數字和計數題上很有把握地答錯。

什麼是決策模型

決策模型(decision model,也有人叫 System One model)是一種新形狀的模型:不生成文字。你先把問題和所有可能的答案定義好,模型只回傳每個答案的機率。它適合分類、路由、審核,以及幫 AI Agent 選下一步要呼叫哪個工具。

一般 LLM決策模型
輸出自由文字或 JSON預先定義的答案加上機率
格式風險可能格式錯、自己編出選項外的答案答案一定在你給的範圍內
機率通常拿不到每次都有,可以直接設門檻
延遲秒級百毫秒級
適合推理、生成、開放式問題分類、路由、審核、選工具、是非判斷

兩家都提供三種題型,名稱略有不同:

題型JevOpenAI回傳
是非題noulpredicate答「是」的機率
單選題choicechoice選中的答案、每個選項的機率、confidence
等級題scorescore各等級的機率、機率加權的分數

受測對象

項目 TypeSafe Jev OpenAI Decisions Claude Haiku 5.5(對照組)
推出2026 年 9 月中旬2026-09-29 DevDay 發表,10-06 開放 public beta沒有決策 API,用 structured outputs 模擬
端點POST /v1/systemonePOST /v1/decisionsPOST /v1/messages
受測模型jev-1.13.0(可固定版本)gpt-6-luna(目前唯一,無法固定版本)claude-haiku-5-5
計費(每百萬 tokens)input $0.042,output 免費input $0.10,output 免費input $0.10、output $0.50
圖片輸入不支援支援(base64)支援(本研究未測)
拒答機制沒有有,單題拒答不影響其他題有
官方說的弱點字面解讀、數字、日期、選項順序等 9 項文件未列—

研究方法

三份題庫都以銀行客服為情境,繁體中文為主。題目只定義一次,由程式自動轉成兩家各自的格式,避免措辭不同造成偏差。

題庫題數內容
基本題庫56工單分派、轉真人意圖、個資偵測、急迫度、Agent 下一步、數字日期、prompt injection、否定問法,附中英對照題
難題版7514 類細分意圖、台語與注音文、多條件額度審核規則、數字、日期、計數、字面解讀(假設、他人、雙重否定、反諷)、進階 injection、長對話
Function call4919 個情境:選 function(9 選 1)、列舉參數、從候選值挑金額與帳號、判斷參數是否齊全

公平性控制

計分方式

是非題以機率 0.5 為界;單選題取模型選的答案;等級題取機率最高的等級。真的有兩種合理答案的題目,兩種都算對。拒答算答錯。準確率只計原始選項順序的題目。

整體結果

各題庫的錯誤率

越低越好。基本題庫兩家都沒有答錯。

數據表

基本題庫太簡單,兩家都拿 100%,分不出高下。這本身也是一個結論:一般的客服分類與路由,兩家都已經夠用。差距要到題目需要仔細閱讀或推理時才會出現。

難題版:兩家錯在相反的地方

難題版各題組準確率

每組題數 × 3 次重複。

數據表

OpenAI 錯在數字與規則計算

  • 額度調升 37.5%(8 萬 → 11 萬),判成超過 50% 要轉人工 機率 0.47
  • 額度調升剛好 50%,判成「超過」 0.50
  • 「前天」沒算進往前 30 天內 0.59
  • 「五十萬的十分之一,再多一千」判成沒超過 5 萬 0.96
  • 「除了 7-11 那筆,其他四筆都不是我」判成不到 3 筆 0.94

Jev 錯在字面解讀

  • 「如果哪天卡片被偷了,要打哪支電話掛失?」這是假設性的問題,卻判成「卡片遺失」 0.69
  • 「我不是不確定,我很確定那筆不是我刷的」雙重否定判錯,3 次中有 1 次答對 0.51–0.64

Jev 官方承認數字、日期、計數是弱點,這些題卻全對。

OpenAI 最後兩題是「很有把握地答錯」(機率 0.94–0.96),用信心門檻擋不下來;Jev 的錯誤機率都在 0.7 以下。

兩家都全對的題組:台語漢字、注音文、簡體字、中英夾雜、進階 prompt injection(偽造系統訊息、英文指令、假 JSON 答案、角色扮演),以及把關鍵需求藏在最後的長對話。

Function call

決策模型不能生成文字,所以用在 function call 時要拆成幾個問題:先選要呼叫哪個 function,再逐一決定參數。帳號、金額這類自由格式的參數,採「先用規則抽出候選值、再讓模型挑」的混合作法。最後再問一題:參數齊不齊?不齊就該先追問客戶,不該直接呼叫。

Function call 各環節準確率

19 個情境、49 題,每題 3 次。「整個 call 全對」= function 與所有參數都答對。

數據表

觀察

機率可不可信:信心門檻

決策模型最大的賣點是每次都給機率。實務上的用法是設門檻:機率夠高就自動處理,不夠高就轉人工。這要求模型「答錯時機率要低」。

怎麼讀這張表「信心差距」是答對時的平均機率減答錯時的平均機率,越大越容易用門檻把錯的擋下來。Function call 題庫裡,OpenAI 答對與答錯時的機率幾乎一樣(差距 0.03),門檻很難發揮作用;Jev 差距 0.38,設 0.8 門檻就能擋下全部錯誤。

另一個現象:OpenAI 的機率比較分散。例如「出國兩週先暫時鎖卡」,OpenAI 選對了 function,機率卻只有 0.40;Jev 答對時多半給到 0.96 以上。用 OpenAI 時,門檻需要依題型個別校正。

延遲與成本

延遲中位數

從台灣呼叫,單位毫秒;短豎線是 p95。OpenAI 與 Jev 取兩家單獨測的那一輪,Claude 取四家一起測的那一輪。

數據表

每千次呼叫成本

基本題庫,美元。OpenAI 與 Jev 只收 input;Claude 的 output 也要收費。

數據表

對照組:用 Claude Haiku 5.5 模擬

這組要回答:一般 LLM 自己做,和專用的決策 API 比差多少?Claude 沒有決策端點,也不提供 logprobs,所以作法是把題目與選項寫進 system prompt,用 structured outputs 把輸出鎖成「每個選項一個機率」的 JSON(選項名稱就是 schema 的 key,不可能答出選項外的東西),再由程式把機率正規化。分兩種模式:thinking 關閉(圖表中標為「Claude 不思考」),以及 adaptive thinking、effort low(標為「Claude 思考」)。

使用方式

OpenAI Decisions API

from openai import OpenAI   # openai >= 3.26.0

client = OpenAI()
decision = client.decisions.create(
    model="gpt-6-luna",
    input="我的卡在國外被刷了三筆,可是卡在我身上",
    questions=[
        {"type": "predicate", "name": "is_fraud", "instructions": "是否疑似盜刷?"},
        {"type": "choice", "name": "dept", "instructions": "該分派給哪個單位?",
         "choices": [{"value": "card", "description": "帳單、額度"},
                     {"value": "fraud", "description": "盜刷、詐騙"},
                     {"value": "other", "description": "以上皆非"}]},
    ],
)
for a in decision.answers:
    if a.type == "refusal":        # 一定要先檢查拒答
        continue
    print(a.name, getattr(a, "choice", None), getattr(a, "probability", None))

TypeSafe Jev

from typesafe_sdk import Choice, Noul, TypeSafeClient   # pip install typesafe-sdk

with TypeSafeClient(model="jev-1.13.0") as client:      # 讀取 TYPESAFE_API_KEY
    r = client.system_one(
        state={"verified": False, "message": "卡被偷了快停卡"},   # state 可以是結構化物件
        questions={
            "need_verify": Noul(instructions="依 `verified` 判斷,是否需要先驗證身分?"),
            "dept": Choice(instructions="分派單位?",
                           criteria={"fraud": "盜刷、詐騙", "other": "以上皆非"}),
        },
    )
print(r.nouls["need_verify"].noul, r.choices["dept"].choice)
差異JevOpenAI
題目容器dict,key 自己取陣列,用 name 對應
選項寫法criteria: {"值": "說明"}choices: [{"value", "description"}]
輸入state:字串或 JSON 物件input:字串,或文字加圖片的訊息
拒答無回答可能是 refusal

選型建議

適合用 Jev

  • 純文字、量大的分類與路由,重視成本
  • 要靠機率門檻自動分流(自動處理 vs 轉人工)
  • 規則型判斷,例如額度審核、金額門檻、日期區間
  • 需要固定模型版本、讓結果可重現

適合用 OpenAI Decisions

  • 需要判斷圖片,例如證件或卡片照片分類
  • 需要內建的拒答機制當安全網
  • 假設語氣、雙重否定這類需要理解語意的題目
  • 已在使用 OpenAI 生態,需要資料駐留或 HIPAA 等合規選項

不論選哪家都該做的事

研究限制

附錄

題庫下載

測試輪次

輪次題庫受測呼叫次數
1基本題庫 × 3 次 + 選項倒序OpenAI、Jev474
2基本題庫 × 3 次 + 選項倒序OpenAI、Jev、Claude 兩種模式948
3難題版 × 3 次 + 選項倒序OpenAI、Jev696
4Function call × 3 次 + 選項倒序OpenAI、Jev564

資料來源