Jev — 決策模型
MarkdownTypeSafe 的決策模型 Jev 可針對文字或 JSON 回答具型別的問題:選擇選項、依量表評分,或提供附帶機率的「是/否」答案。它不提供聊天或文字生成。
完整指南
https://api.ailoot.ai/v1/systemonecurl https://api.ailoot.ai/v1/systemone \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-latest",
"state": "救命!我的撥款已經連續失敗 3 天。",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "這是否表達了緊迫性?"
}
}
}' import json, os, urllib.request
body = {
"model": "jev-latest",
"state": "救命!我的撥款已經連續失敗 3 天。",
"questions": {
"is_urgent": {"type": "noul", "instructions": "這是否表達了緊迫性?"},
},
}
req = urllib.request.Request(
"https://api.ailoot.ai/v1/systemone",
data=json.dumps(body).encode(),
headers={"Authorization": "Bearer " + os.environ["AILOOT_API_KEY"],
"Content-Type": "application/json"},
)
with urllib.request.urlopen(req, timeout=60) as resp:
result = json.load(resp)
print(result["answers"]["is_urgent"]["noul"]) # 0.95const resp = await fetch("https://api.ailoot.ai/v1/systemone", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AILOOT_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "jev-latest",
state: "救命!我的撥款已經連續失敗 3 天。",
questions: {
is_urgent: { type: "noul", instructions: "這是否表達了緊迫性?" },
},
}),
});
const result = await resp.json();
if (!resp.ok) throw new Error(`${resp.status} ${JSON.stringify(result)}`);
console.log(result.answers.is_urgent.noul); // 0.95{
"model": "jev-1.13.0",
"answers": {
"is_urgent": {
"type": "noul",
"noul": 0.95
}
},
"usage": { "input_tokens": 296, "output_tokens": 20 }
}Jev 是 TypeSafe 的 System One 類決策模型。它不會撰寫文字,也不進行對話:您傳入 狀態 (state)—文字或 JSON—以及一組 問題, 然後取得附帶機率的具型別值。程式碼可直接依據這些值進行分支、排序與路由,無須解析自由文字。
同一請求中的所有問題都會以相同的state為依據,平行且相互獨立地評估。根據 TypeSafe 的資料,增加問題幾乎不會改變回應時間,而且問題之間不會互相干擾。
| 項目 | 摘要 |
|---|---|
| 模型 | jev-latest —Jev 最新穩定版本的別名; 目錄中的模型資訊卡 |
| 方法 | POST /v1/systemone。它不是聊天模型:OpenAI、Anthropic與Gemini 格式皆不適用於 Jev。回應會以單一 JSON 完整傳回。 |
| 接受的輸入 | 僅接受文字:字串、JSON 物件或文字陣列。請先將影像、音訊與影片轉成文字 |
| 上下文 | 每次請求可使用 64K token,包含 state與所有問題;state 加上最長的問題,最多可使用 32K |
| 語言 | 根據 TypeSafe 的資料,模型使用英文時最準確;也接受其他語言,但準確度較低,請使用自己的資料驗證 |
| 價格 | 輸入每 1 百萬 token 為 $0.084,輸出免費 |
請求
身分驗證
- Authorizationheader必填
Ailoot 金鑰,格式為
Bearer sk-…。
請求本文
- modelstring必填
jev-latest。 - statestring | object | array必填
要評估的內容:文字字串或 JSON,例如客戶詢問、資料庫紀錄、往來訊息或應用程式目前的狀態。使用欄位名稱清楚的物件,通常比單一字串更方便。
- questionsobject必填
問題。您自行選擇鍵名,答案會以相同鍵名傳回;鍵名不會影響答案,實際問題是在此欄位中設定:
instructions。 - questions.*.typestring必填
noul,choice或score—詳見下方。 - questions.*.instructionsstring | object | array必填
實際問題。較長且包含資料的問題,可透過物件傳入:一個欄位放問題,其他欄位放資料;引用欄位時,請以反引號括住欄位名稱。
- questions.*.criteriaobject | array
答案選項依類型而異:noul 可選填「是」與「否」的說明,choice 使用選項字典,score 使用按順序排列的等級清單。
問題類型
| 類型 | 提問內容 | 傳回內容 |
|---|---|---|
noul | 敘述是否正確:是或否 | noul —「是」的機率,範圍為 0 到 1 |
choice | 指定的選項中,哪一個適合 | choice,probabilities,confidence |
score | state 在您設定的等級量表中位於哪個位置 | score,legend,probabilities,confidence |
同一請求中可混用不同類型。
noul — 是或否
欄位criteria為選填欄位,可在其中說明「是」(true)與「否」(false). 回傳的noul —從 0 (否) 到 1 (是) 的數值。
"is_urgent": {
"type": "noul",
"instructions": "這是否表達了緊迫性?",
"criteria": {
"true": "明確具有時效性",
"false": "未表達急迫性"
}
}"is_urgent": {
"type": "noul",
"noul": 0.95
}choice — 選擇選項
criteria —「選項 → 說明」字典;若不需要說明,請填入null。最多 255 個選項。回應中的choice —機率最高的選項, probabilities —各選項的機率 (總和為 1), confidence —信心程度,範圍為 0 到 1。
"department": {
"type": "choice",
"instructions": "應由哪個團隊處理?",
"criteria": {
"billing": "付款、開立帳單、退款",
"technical": "錯誤、服務中斷、整合",
"sales": "定價、升級、新客戶"
}
}"department": {
"type": "choice",
"choice": "billing",
"probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
"confidence": 0.81
}score — 依量表評分
criteria —由低到高排列的等級,最多 10 個 (TypeSafe 建議至少兩個)。回應中的score —依各等級機率加權的數值 (可能落在兩個等級之間), legend —等級編號與說明, probabilities與confidence。根據 TypeSafe 的資料, score適合與門檻值比較,但不適合用來表示等級之間的精確數值。
"frustration": {
"type": "score",
"instructions": "客戶有多沮喪?",
"criteria": ["平靜", "感到挫折", "非常憤怒"]
}"frustration": {
"type": "score",
"score": 1.05,
"legend": { "0": "平靜", "1": "感到挫折", "2": "非常憤怒" },
"probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
"confidence": 0.92
}回應
- modelstring
實際回應的模型版本。jev-latest 別名會隨時間指向新版本;若您已針對特定版本設定
confidence的門檻值,請留意此欄位。 - answersobject
每個問題各有一個答案,使用與問題相同的鍵名。每個答案都包含
type,choice與score 還包含confidence。 - usageobject
input_tokens與output_tokens。僅輸入 token 會計費。
在一次請求中提出多個問題
針對同一 state 的所有問題,請在同一次請求中提出:問題會平行評估,state 只需傳送一次。根據 TypeSafe 的資料,他們的 13 個問題範例中,在答案相同的情況下,一次合併請求的費用比依序傳送 13 個獨立請求低 12,2 倍,速度快 10 倍。
複雜的判斷最好拆成簡單問題,再於程式碼中合併答案:例如,與其要求「評估申請案」,不如分別評估市場、可行性與競爭差異。如此一來,權重可在程式碼中調整,無須修改問題文字。
{
"model": "jev-latest",
"state": "救命!我的撥款已經連續失敗 3 天。",
"questions": {
"department": {
"type": "choice",
"instructions": "應由哪個團隊處理?",
"criteria": {
"billing": "付款、開立帳單、退款",
"technical": "錯誤、服務中斷、整合",
"sales": "定價、升級、新客戶"
}
},
"frustration": {
"type": "score",
"instructions": "客戶有多沮喪?",
"criteria": ["平靜", "感到挫折", "非常憤怒"]
},
"is_urgent": {
"type": "noul",
"instructions": "這是否表達了緊迫性?"
}
}
}適用情境
- 路由。 將客戶詢問送至適當部門,並將請求交給適當的處理者:簡單程式碼、大型模型或人工。
- 排序與優先順序。 依量表評估急迫性、情緒傾向與風險,並在程式碼中設定門檻值。
- 內容審核與查核。 在文字進入後續流程前,判斷訊息是否違反規則、來源是否支持引文,以及文件中是否有問題的答案。
- 評分與排名。 依據自己的評分準則評估文件、候選人或找到的片段,再於程式碼中決定哪些進入後續流程。
- 取代不可靠的「傳回 JSON」指令。 呼叫本身即會傳回具型別的值,而非需要另外解析的文字。
不適用情境
- 聊天、回覆使用者、生成文字或程式碼。 Jev 不會撰寫文字,這類用途請使用文字模型。
- 作為 Claude Code、Cursor與其他代理使用的模型。 無法以 jev-latest 取代代理所用的模型:代理需要能撰寫文字並呼叫工具的模型。不過,您可以在代理為您撰寫的程式碼中呼叫 Jev。
- 算術、計數與日期比較。 根據 TypeSafe 的資料,這些工作由程式碼處理更可靠;只向模型詢問語意部分,例如透過 choice 擷取日期的組成部分。
- 影像、音訊與影片。 模型僅接受文字,請事先將這類資料轉成文字。
價格
僅輸入 token 會計費— usage.input_tokens為回應中的對應欄位,價格為:每 1 百萬為 $0.084。輸出 token 免費。
本頁範例的請求 (296 個輸入 token) 費用低於 $0.0001。
在請求前,Ailoot 會先從餘額中保留一筆金額;回應後,再依實際用量扣款一次— 運作方式。
限制
| 項目 | 上限 |
|---|---|
| 完整請求:state與所有問題 | 64K token |
| state 加上最長的問題 | 32K token |
| 單一 choice 的選項數量 | 最多 255 |
| 單一 score 的等級數量 | 2 到 10 |
| 輸入 | 僅接受文字:字串、JSON 物件或文字陣列 |
模型上限依據 TypeSafe 的資料。與其他 Ailoot 模型一樣,仍須遵守您的金鑰與餘額限制:錯誤與限制。
錯誤
錯誤會以 Ailoot API 的通用格式傳回:代碼、易懂的文字與Request ID。此方法最常見的錯誤如下:
| 代碼 | 發生情況 | 處理方式 |
|---|---|---|
400 invalid_request | 請求主體未通過驗證:缺少 state、model 或 questions、type 不明、choice 超過 255 個選項,或 score 超過 10 個等級 | 請依錯誤文字修正請求;未修改的請求仍會驗證失敗 |
400 context_length_exceeded | state與所有問題的總長度超過模型上限 | 請在程式碼中篩選 state,只保留問題需要的內容 |
401 invalid_api_key | 未提供金鑰,或金鑰不正確 | 請在 Authorization 標頭中傳入金鑰 |
402 insufficient_balance | 可用餘額不足以保留所需金額 | 儲值 |
404 model_not_found,unsupported_endpoint | ID 有誤,或使用了不適合此模型的方法,例如透過 /v1/chat/completions 呼叫 | jev-latest 僅能透過 POST /v1/systemone 呼叫 |
429 rate_limit_exceeded | 請求過多 | 請等待 Retry-After 標頭指定的秒數後,再次嘗試 |
503 model_overloaded,model_unavailable | 模型暫時過載或無法使用 | 若 X-Should-Retry: true,請等待 Retry-After 指定的秒數後再次嘗試;若為 false,請先在歷史紀錄中檢查 Request ID |
504 model_timeout | 模型未在期限內回應 | 在歷史紀錄中檢查 Request ID 前,請勿重新傳送請求 |
完整代碼清單請見此頁面:錯誤與限制。