面向開發者的獨立指南與社群
Jev 官方資訊:typesafe.ai

免費體驗 Jev

選擇一個問題,或針對同一情境提出三個不同問題。先選案例,再修改輸入,查看各題的結構化答案。

瀏覽 GitHub 專案
01 / 選定一個判斷

先選一個具體案例

typesafe/jev-1.13

每次專注測試一種回答類型。 每次執行會用掉一次當日體驗額度。

1. Choice
questions.decision
預覽 API 請求

預覽不包含 API 金鑰和驗證權杖;每個問題 ID 都對應同名答案。

{
  "model": "typesafe/jev-1.13",
  "state": {
    "input": "我的訂閱被扣了兩次費用,可以幫我處理嗎?"
  },
  "questions": {
    "decision": {
      "type": "choice",
      "instructions": "應該交給哪個團隊處理?",
      "criteria": {
        "billing": "付款與退款",
        "technical": "程式錯誤與整合問題",
        "general": "其他問題"
      }
    }
  }
}

每個帳號每天(UTC)可免費體驗 6 次,於 00:00 UTC 重設。全站每日容量有限。輸入會傳送至 OpenRouter;本站只儲存用量紀錄,不儲存輸入內容。

02 / 讀取結果

填寫後即可執行

執行案例後,每個問題都會回傳一份結構化答案:Choice 選出選項,Score 給出分數,Probability 回傳 0 到 1 之間的數值。

API 串接範例

把 Jev 串接到程式碼中。

表單會將文字作為 state.input,並傳送一個或三個具名問題。每個結果都可在 answers.<question_id> 下找到。

看懂請求與回傳欄位

請求中定義要判斷的問題,回應會依問題名稱回傳結果。以下說明範例中用到的 JSON 欄位。

請求欄位

model
模型 ID。範例指定 Jev 1.13,避免呼叫的版本不明確。
state
待判斷的文字或結構化資料;這裡是一則客服訊息。
questions
按名稱組織的多個問題;回傳的 answers 會沿用這些名稱。
<question_id>
例如 action 或 urgency 這類名稱;答案會沿用相同名稱。
type
回答類型:choice 選出一個選項,score 依等級評分,noul 判斷是或否。
instructions
希望模型回答的具體問題或判斷標準。
criteria
choice 的候選選項、score 的有序等級,或 noul 中 false 與 true 的含義。

回傳欄位

answers
每個問題的結果,名稱與請求中的 questions 對應。
choice
模型選中的選項鍵,也是機率最高的選項。
probabilities
各選項的機率分布,數值加總為 1。
confidence
根據機率分布計算的信心分數;它不等於所選選項的機率。
score
依各等級的機率加權得出的位置,可能落在兩個等級之間。
legend
將 score 的數值位置對應回你定義的等級說明。
noul
是非問題的 0 到 1 數值;越接近 1 越傾向於「是」。

同一份情境,分別測試 Choice、Score 與 Probability 三個問題。 每次執行會用掉一次當日體驗額度。 結果符合欄位格式,判斷也可能出錯。請用自己的樣本驗證,並依業務風險設定分流門檻。

端點

OpenRouter

本站 Playground 透過 OpenRouter 呼叫固定版本的 Jev。目前的價格與可用性請以模型頁面為準。

端點
POST https://openrouter.ai/api/alpha/decisions
model
typesafe/jev-1.13
API 金鑰
在伺服器端以 Bearer token 傳送 API 金鑰。
OpenRouter ↗
官方直連 API

TypeSafe

TypeSafe 提供自己的端點和 API 金鑰。官方快速入門使用 jev-latest,也示範一次傳送多個問題。

端點
POST https://api.typesafe.ai/v1/systemone
model
jev-latest
API 金鑰
在伺服器端以 Bearer token 傳送 API 金鑰。

伺服器端 TypeScript

TypeScript · fetch
// Run on your server. Keep the API key out of browser code.
const apiKey = process.env.OPENROUTER_API_KEY;
if (!apiKey) throw new Error("Set OPENROUTER_API_KEY");

const response = await fetch("https://openrouter.ai/api/alpha/decisions", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + apiKey,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "typesafe/jev-1.13",
    state: {input: "A customer reports a duplicate charge."},
    questions: {
      team: {
        type: "choice",
        instructions: "Which team should handle this?",
        criteria: {
          billing: "Payments and refunds",
          technical: "Bugs and integrations"
        }
      },
      urgency: {
        type: "score",
        instructions: "How urgent is the issue?",
        criteria: ["Can wait", "Needs attention today", "Immediate action"]
      },
      escalate: {
        type: "noul",
        instructions: "Should a human review this first?",
        criteria: {false: "No review needed", true: "Review before acting"}
      }
    }
  })
});

if (!response.ok) throw new Error("Decision request failed");
const {answers} = await response.json();
console.log(answers.team.choice, answers.urgency.score, answers.escalate.noul);
讀取結果

三種問題,三種回傳形式

選擇程式碼所需的答案類型。一次送出多個問題時,每個問題 ID 都會收到獨立結果。

TypeSafe: Choice · Score · Noul ↗

Choice

choice · probabilities · confidence

模型選中的選項鍵,也是機率最高的選項。

Score

score · legend · probabilities · confidence

依各等級的機率加權得出的位置,可能落在兩個等級之間。

Noul

noul

是非問題的 0 到 1 數值;越接近 1 越傾向於「是」。

投入正式環境前

正式上線前,請用具代表性的客服案件測試、記錄模型版本,並將結果不確定或出錯代價高的情況交由人工審核。範例中的 0.8 只是示意門檻。