TypeSafe Jev / System One API
TypeSafe Jev は、テキスト、構造化データ、画像に対して確率的な判断を行います。1 回のリクエストで noul、choice、score を組み合わせられ、Jev 1.14 では Box 位置特定も利用できます。汎用チャット補完 API ではなく、Chat ツール呼び出しには対応していません。
エンドポイント、認証、固定モデル
POST https://api.icodeeasy.cc/v1/systemone
Authorization: Bearer <YOUR_API_KEY>
Content-Type: application/json
公開するのは TypeSafe Jev 1.14 のみで、固定モデル ID は jev-1.14.0 です。リリースごとに参照先が変わるエイリアスは提供しません。
| モデル ID | 画像入力 | Box | 262K 長コンテキスト |
|---|---|---|---|
jev-1.14.0 | 対応 | 対応 | 対応 |
jev-latest、jev-preview などの名前は公開カタログに含まれません。応答は非ストリーミング JSON です。stream は送信せず、System One を /v1/chat/completions、/v1/messages、/v1/responses として使用しないでください。
テキストと構造化 state
state には文字列、オブジェクト、配列を指定できます。質問には任意の名前を付け、応答の answers でも同じ名前と型が使われます。次の例は、Yes/No、固定選択、順序付きスコアを組み合わせています。
curl --request POST 'https://api.icodeeasy.cc/v1/systemone' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"model": "jev-1.14.0",
"state": "I was charged twice for my subscription. Please refund the extra charge today.",
"questions": {
"is_billing": {
"type": "noul",
"instructions": "Is this message about billing?"
},
"department": {
"type": "choice",
"instructions": "Which team should handle this request?",
"criteria": {
"billing": "Duplicate charges, invoices, refunds, and payment failures",
"technical": "Product functionality and technical troubleshooting",
"other": "Requests outside billing and technical support"
}
},
"urgency": {
"type": "score",
"instructions": "How urgent is the request?",
"criteria": [
"No deadline and no immediate impact",
"Needs attention soon but service remains usable",
"Immediate financial or service impact requires urgent handling"
]
}
}
}'
noul は 0〜1 の Yes/No 確率、choice は選択肢と確率分布、score はレベル間の位置・確率分布・信頼情報を返します。確率や信頼度は正しさの保証ではないため、独自のサンプルでしきい値を決めてください。応答の model、回答キー、型、usage.input_tokens / usage.output_tokens を検証してから結果を利用します。
SDK 互換性
公式 TypeSafe SDK でテキストを呼び出す場合は、必ず compression: false を明示し、既定の圧縮ネゴシエーションに依存しないでください。現在、画像は本文で示す JSON + Base64 形式のみ対応し、SDK 既定の multipart 画像アップロードには対応していません。画像を使う場合は、SDK の画像オブジェクトや既定のアップロード処理ではなく、このガイドの HTTP リクエストを使用してください。
PNG / JPEG 画像入力
画像リクエストには TypeSafe-Danger-Zone-Images: true が必要です。次は PNG を Base64 JSON で送る例です。photo-001 はリクエスト内の参照で、state、質問の指示、条件のいずれかに必要です。JPEG は format を jpg または jpeg にします。
curl --request POST 'https://api.icodeeasy.cc/v1/systemone' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--header 'TypeSafe-Danger-Zone-Images: true' \
--data '{
"model": "jev-1.14.0",
"state": {"photo": "photo-001"},
"assets": {
"photo-001": {
"type": "image",
"format": "png",
"data_base64": "<BASE64_PNG_WITHOUT_DATA_PREFIX>"
}
},
"questions": {
"mug_visible": {
"type": "noul",
"instructions": "Is there a coffee mug in `photo`?"
}
}
}'
Base64 に data: プレフィックスや改行を含めないでください。静止 PNG/JPEG、デコード後 16 MiB 以下、幅と高さがそれぞれ 280〜1568 ピクセル、リクエスト全体で 32 MiB 以下という制限があります。画像は自動リサイズされず、無効な asset があるとリクエスト全体が失敗します。画像トークンは usage.input_tokens に含まれます。
Box 位置特定(Jev 1.14 のみ)
Box は実験的機能です。TypeSafe-Danger-Zone-Images: true を指定し、公開固定バージョン jev-1.14.0 を使用してください。criteria は使わず、対象の有無を確認する noul を併用してください。
{
"model": "jev-1.14.0",
"state": {"photo": "photo-001"},
"assets": {
"photo-001": {
"type": "image",
"format": "jpeg",
"data_base64": "<BASE64_JPEG_WITHOUT_DATA_PREFIX>"
}
},
"questions": {
"mug_visible": {
"type": "noul",
"instructions": "Is there a coffee mug in `photo`?"
},
"mug": {
"type": "box",
"instructions": "the coffee mug in `photo`"
}
}
}
この JSON を同じエンドポイントへ、認証・JSON・Images の各ヘッダー付きで送信します。Box の top、bottom、left、right は画像の幅と高さに対する 0〜1 の比率です。対象がなくても枠が返ることがあるため、存在判定と信頼情報を併用し、正確な検出器として扱わないでください。
262K 長コンテキスト
Jev 1.14 は長コンテキストに対応します。既定はリクエストごと 64K、質問ごと 32K です。262K を使うリクエストには次を明示します。
TypeSafe-Danger-Zone-Long-Context: true
curl --request POST 'https://api.icodeeasy.cc/v1/systemone' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--header 'TypeSafe-Danger-Zone-Long-Context: true' \
--data '{
"model": "jev-1.14.0",
"state": "<LONG_DOCUMENT_OR_STRUCTURED_RECORD>",
"questions": {
"has_early_termination": {
"type": "noul",
"instructions": "Does the state include a clause allowing either party to terminate early?"
}
}
}'
指定すると、リクエストと質問の両方が 262K 枠になります。長コンテキストの価格倍率はありませんが、通常は遅くなります。長文や非英語入力の判断品質は実データで評価し、短文の成功を 262K の厳密な境界や文書の先頭・末尾の保持の証拠とみなさないでください。
課金と実験機能の境界
- 公式基本価格は入力 $0.042 / MTok、現在のサイト内価格は入力 ¥0.30 / MTok、出力は 0 です。計算式は
usage.input_tokens × ¥0.30 / 1,000,000です。 - 出力トークンは
usageに表示されますが現在無料です。独立したキャッシュ読み書き価格や長コンテキスト追加料金はありません。画像も入力トークンとして課金されます。 - System One は非ストリーミングの構造化判断 API で、Chat ツール呼び出しと Chat playground には対応していません。
- 画像と Box は実験的で、リクエスト形式・回答・制限はバージョンにより変わる場合があります。Box は 1.14 のみです。本番利用前に独自の画像、言語、しきい値、失敗例で検証してください。
- 長コンテキストでも、コンテキスト、本文、画像、レートの各制限は残ります。固定バージョン、応答モデル、回答構造、
usageの検証を実装してください。
最新価格は価格ページ、機能状態はモデル機能カタログを参照してください。