構造化判定(Decisions)
文章ではなく、型の決まった「判定」を返すモデルです。状況(state)と質問(questions)を1回のPOSTで送ると、質問ごとに選択肢・真偽の確率・スコアが返ります。分類、振り分け、ガードレールのように、答えの形が先に決まっている処理に向いています。回答は同期で、1回ごとの定額課金です。
モデルと料金
各モデルは専用のエンドポイントを持ち、リクエストが受理された時点で1回あたりの定額が課金されます。上限(リクエスト本文のサイズと質問数)はサーバー側で固定されており、定額はその上限の範囲で設定されています:
| モデル | 仕様 | 上限 | 料金 | エンドポイント |
|---|---|---|---|---|
TypeSafe Jev 1.13 typesafe/jev-1.13 | コンテキスト 32,000 トークン・choice / noul / score | 本文 8,192 バイト・質問 16 件まで | ¥0.1/回 | /openrouter/decisions/jev-1-13 |
モデルはエンドポイントで決まります。本文の model は省略するか、表のモデルIDと一致させてください。
POST
/openrouter/decisions/jev-1-13判定を依頼する
state には判定の材料(文字列・オブジェクト・配列のいずれか)を、questions には質問名をキーにした質問を入れます。各質問は type(choice / noul / score)、instructions(何を判定するか)、criteria(判定の基準)を持ちます。回答は questions と同じキーで返ります。
Request
curl https://api.fastmetal.ai/openrouter/decisions/jev-1-13 \
-X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d {
"state": "お客様からの連絡: 注文した商品が届きません。返金してほしいです。",
"questions": {
"intent": {
"type": "choice",
"instructions": "お客様が求めていることは何か",
"criteria": {
"refund": "返金を求めている",
"track_order": "配送状況を知りたい",
"other": "それ以外"
}
},
"is_angry": {
"type": "noul",
"instructions": "お客様は怒っているか",
"criteria": { "true": "苛立ちや怒りの表現がある", "false": "落ち着いた口調" }
}
}
}Response (200)
{
"id": "gen-dec-1789761592-hJ9ahabHqfnukm1bqQ4M",
"model": "typesafe/jev-1.13-20260917",
"answers": {
"intent": {
"type": "choice",
"choice": "refund",
"probabilities": { "refund": 1, "track_order": 0, "other": 0 },
"confidence": 1
},
"is_angry": { "type": "noul", "noul": 0.86 }
},
"usage": { "input_tokens": 347, "output_tokens": 39 }
}質問の種類
3種類の質問を1回のリクエストに混在させられます。criteria の形は種類ごとに異なります。
choice— 複数の選択肢から1つを選びます。criteria は「選択肢名: その選択肢の説明」のオブジェクトで、回答には choice、選択肢ごとの probabilities、confidence が返ります。noul— 真偽の判定です。criteria は true と false をキーにしたオブジェクトで、回答の noul は「true である確率」(0〜1)です。score— 段階評価のスコアです。criteria は低い段階から順に基準の説明を並べた配列で、score はその段階の番号(0始まり)の尺度で返ります(3段階なら0〜2の小数)。回答には score のほか、段階ごとの説明を並べた legend、段階ごとの probabilities、confidence が返ります。
課金
- 受理されたリクエスト(HTTP 200)1回ごとに、各モデルの定額がキーの残高から差し引かれます。質問数や本文の長さによって金額は変わりません。
- 拒否されたリクエスト(HTTP 4xx/5xx)は課金されません。上限を超えた本文、許可されていないフィールド、形式の誤りは HTTP 400 で返ります。
- レスポンスを一切受け取れなかった場合(タイムアウトや接続断)は結果が不明です。判定は1秒前後で返るため、再試行する前に少し待ってください。
制限
- リクエスト本文のサイズと質問数の上限はモデルごとに固定です(上表)。サイズは、上流へ送られる形(空白を除いたJSONで、固定されるモデル名を含む)で数えます。超えた場合は HTTP 400 で拒否されます。
- 本文に含められるフィールドは state、questions、model の3つだけです。
- 判定はプラットフォーム全体でレート制限されています。HTTP 429 の場合は少し待って再試行してください。