構造化判定(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 の場合は少し待って再試行してください。