簡短回答: jev-1.13 不會生成文字。你只要將一段文字和一組具名問題 POST 至 https://aihubmix.com/v1/systemone,就會收到以問題名稱為鍵的型別化答案——類別、分數或機率。完全不需要解析文字。以下會介紹可直接使用的請求、完整的回應格式,以及一個會在不知不覺中降低準確度的設計錯誤。
Jev 的用途
當你需要的是一項 判斷,而非一段文字時,就適合使用它:例如為支援單分流、評定嚴重程度、標記急迫性或控管內容。模型頁面說得很明白:「不生成文字,也沒有需要解析的內容。」
如果你需要解釋、摘要或任何自由格式的輸出,請改用一般聊天模型。jev 無法產生這些內容。
開始之前
- [ ] 已安裝 Python 3(只需標準函式庫即可)
- [ ] 擁有 AiHubMix 帳戶和 API 金鑰
- [ ] 將金鑰匯出為
AIHUBMIX_API_KEY,絕不要硬編碼在原始碼中
你 不 需要 OpenAI SDK、LangChain 或 requests 套件。
步驟 1 — 認識端點
POST https://aihubmix.com/v1/systemone
Authorization: Bearer YOUR_KEY
Content-Type: application/json
這是模型專用的路由,不是 /v1/chat/completions。OpenAI 相容用戶端無法呼叫此端點,請使用一般 HTTP。
步驟 2 — 選擇問題類型
共有三種類型,你可以在同一個請求中自由混用:
| 類型 | 用途 | 你要提供的內容 |
|---|---|---|
choice | 選擇一個類別 | criteria 以字典格式提供:標籤 → 定義 |
score | 在有序量表上評分 | criteria 以清單格式提供,順序由最低到最高 |
noul | 是/否判斷 | 除了 instructions,不需提供其他內容 |
步驟 3 — 建立請求
state 是要判斷的文字。questions 的鍵名由你自行命名;回應會使用相同名稱。
payload = {
"model": "jev-1.13",
"state": "Hi, I have been trying to connect my Stripe account for 3 days "
"and it keeps failing. I am losing sales. Please help ASAP.",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this",
"criteria": {
"billing": "Payment or subscription issues",
"technical": "Bugs or integration problems",
"sales": "Pricing or account questions",
},
},
"frustration": {
"type": "score",
"instructions": "How frustrated the customer appears",
"criteria": [
"Calm, just stating facts",
"Frustrated but civil",
"Very angry, strong language",
],
},
"is_urgent": {
"type": "noul",
"instructions": "The message conveys urgency or time-sensitivity",
},
},
}
步驟 4 — 使用標準函式庫傳送請求
import json, os, urllib.error, urllib.request
def ask(payload):
req = urllib.request.Request(
"https://aihubmix.com/v1/systemone",
data=json.dumps(payload).encode(),
headers={"Authorization": "Bearer " + os.environ["AIHUBMIX_API_KEY"],
"Content-Type": "application/json"},
method="POST",
)
try:
with urllib.request.urlopen(req, timeout=60) as r:
return json.loads(r.read())
except urllib.error.HTTPError as e:
raise SystemExit(f"HTTP {e.code}: {e.read().decode(errors='replace')[:500]}")
請將請求建立的程式碼放在函式內。如果在模組層級建立並傳送請求,匯入檔案時就會再次觸發呼叫,消耗 token。
步驟 5 — 讀取答案
每個答案都會將值存放在與其 type 相符的鍵下,因此一個存取方式就能涵蓋三種類型:
data = ask(payload)
for name, ans in data["answers"].items():
kind = ans["type"]
print(name, kind, ans[kind], ans.get("confidence"))
print("usage:", data.get("usage"))
已驗證的輸出:
department choice billing 0.51
frustration score 1 1
is_urgent noul 1 None
usage: {'input_tokens': 424, 'output_tokens': 73}
步驟 6 — 了解完整回應結構
列印迴圈會隱藏一些實用欄位。以下是 score 答案的原始 JSON:
{
"type": "score",
"score": 1,
"legend": {"0": "Calm, just stating facts", "1": "Frustrated but civil", "2": "Very angry, strong language"},
"probabilities": {"0": 0, "1": 1, "2": 0},
"confidence": 1
}
legend會將索引對應回你自己的文字標示——整數本身就能清楚說明其意義,因此程式碼不需要查找表。probabilities會提供完整的機率分布,方便偵測結果是否勢均力敵。noul沒有confidence欄位。 其機率就是判斷依據。
最上層也會回傳 usage、id、provider(TypeSafe),以及解析後的後端版本 typesafe/jev-1.13-20260917。
降低準確度的錯誤
在上述請求中,department 回傳了 billing,信心度為 0.51。重複傳送完全相同的請求時,同一個標籤再次出現,但信心度只有 0.38——答案穩定,表達的確定程度卻不穩定。
原因出在 criteria,而非模型。billing 的定義是「付款或訂閱問題」,而 technical 則是「錯誤或整合問題」。Stripe 整合 持續失敗確實符合兩者。模型反映的是寫入 schema 的模糊之處。
上線前請遵守兩項原則:
- 撰寫彼此互斥的
choicecriteria。如果人類在兩個標籤之間都會猶豫,模型也會如此。 - 設定信心度門檻,並將低信心度結果送至人工處理佇列,而非直接視為判斷結果。能坦承不確定性的模型,比隱瞞不確定性的模型更有價值。
上線前檢查清單
- [ ] 從環境變數或版本控制系統(VCS)會忽略的
600權限檔案載入金鑰 - [ ] 檢查
choicecriteria 是否有重疊 - [ ] 設定信心度門檻,並定義低於門檻時的後續處理方式
- [ ] 分別處理
noul答案——它們不帶有confidence - [ ] 移除未使用的問題(3 個問題會耗用 424 個輸入 token;2 個問題則耗用 355 個)
- [ ] 記錄非 2xx 回應及其原始內容
常見問題
可以使用 OpenAI SDK 嗎? 不行。/v1/systemone 不是 OpenAI 相容路由。
jev 可以回傳句子或摘要嗎? 不行。它只會回答你定義的型別化問題。
每個請求可以包含幾個問題? 經驗證的測試使用了兩個和三個問題。每個問題都會增加輸入與輸出 token,因此只加入你會採取行動的問題。
有版本別名嗎? 模型頁面除了 jev-1.13,也列出了 jev-latest 別名。若重現性很重要,請固定使用明確版本。
費用是多少? 模型頁面公布的價格為每 M 個輸入 token $0.0462 / M,每 M 個輸出 token $0 / M。這些是供應商公布的價格,編列預算前請確認最新價格。
上下文視窗有多大? 模型頁面的資訊不一致:頁首標示 64K,供應商表格則標示 32K。依賴任一數值前,請先用你自己的最長輸入進行驗證。
本指南的範圍
以上內容都已透過對單一輸入進行三次即時呼叫加以驗證。本指南不涵蓋延遲、批次處理、吞吐量,或模型對不同於範例的輸入會有何行為。信心度波動是重現觀察到的結果,並非測得的錯誤率——設定門檻前,請先用自己的資料重複測試。
開始使用 AiHubMix
jev-1.13 可透過 AiHubMix 使用,模型頁面也列出本教學參考的所有資訊:/v1/systemone 端點、三種問題類型及其 criteria 格式、完整的回應欄位,以及公布的定價——每 M 個輸入 token $0.0462 / M,每 M 個輸出 token $0 / M。jev-latest 別名會指向最新版本,確保你使用的版本隨著更新保持最新。
從這裡開始: https://aihubmix.com/model/jev-latest
接下來:
- 建立 AiHubMix 帳戶並產生 API 金鑰
- 複製步驟 3 的請求,以及步驟 4 的
ask()函式 - 將
state替換成你自己佇列中的真實記錄 - 將結果與你目前對該筆記錄的分類方式進行比較
如果本指南對你有所幫助,歡迎訂閱,掌握結構化輸出模型與分類流程的後續文章。



