コアガイド
Decisions
意思決定モデルから型付きの確率、選択肢、スコアを取得する
POST /v1/systemone は、1つの state を名前付きの質問に対して評価し、質問ごとに1つの型付き回答を返します。レスポンスは同期的なJSON形式で、コードで比較や分岐処理が可能な確率、オプション名、またはスコアが含まれます。生成されたテキストは返されません。
Decisions か Chat か
| Decisions を使用する場合 | Chat を使用する場合 |
|---|---|
| コードが数値やラベルに基づいて動作する必要がある場合 | 人間や他のモデルが回答を読み取る場合 |
| リクエストのルーティング、分類、ゲート制御を行う場合(返金可否、担当チームの割り当て、緊急度など) | 説明、要約、またはドラフトテキストが必要な場合 |
| 1回の呼び出しで同じ入力に対して複数の固定された質問をする場合 | ツール、ストリーミング、画像、またはマルチターンメッセージが必要な場合 |
Decision エンドポイントは messages、tools、stream などのチャット制御を受け付けず、Batch では利用できません。メインのチャットモデルは別途設定してください。
モデルの選択
curl "https://api.tokenlab.sh/v1/models?recommended_for=decision" \
-H "Authorization: Bearer sk-your-api-key"category=decision でフィルタリングすることも可能です。リクエストを送信する前に、選択したモデルに対して GET /v1/models/{model} を読み取り、モデルIDを明示的に送信してください。このページの例では jev-1.13 を使用しています。
リクエストの形式
| フィールド | 型 | 備考 |
|---|---|---|
model | string | 意思決定モデルID |
state | string, JSON object, or JSON array | 評価対象の入力(チケット、トランスクリプト、レコードなど) |
questions | object | 少なくとも1つの質問。各キーは質問名、各値には type、instructions、criteria が含まれます |
instructions および各 criteria は、文字列、JSONオブジェクト、またはJSON配列も受け付けます。リクエストで未知のフィールドを指定すると拒否されます。
type | criteria | 回答 |
|---|---|---|
noul | オプション。true と false の両方のガイダンスを含むオブジェクト | noul: ステートメントが真である確率(0から1) |
choice | 必須。1〜255個のオプション名のオブジェクト。各オプションはガイダンスまたは null にマッピングされます | choice: 指定したオプション名のいずれか。probabilities と confidence を含めることができます |
score | 必須。2〜10段階の説明を含む順序付き配列 | score: 0から配列の最後のインデックスまでの数値(小数も可)。legend、probabilities、confidence を含めることができます |
チケットの評価
curl https://api.tokenlab.sh/v1/systemone \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-1.13",
"state": "I was charged twice. Please refund the duplicate payment.",
"questions": {
"refund_requested": {"type": "noul", "instructions": "Is a refund requested?"},
"department": {
"type": "choice", "instructions": "Which team should handle this?",
"criteria": {"refunds": "Charges and refunds", "technical": "Software bugs"}
},
"urgency": {
"type": "score", "instructions": "Rate urgency",
"criteria": ["Routine enquiry", "Money affected", "Safety emergency"]
}
}
}'レスポンスでは、質問名が answers の下に保持されます。以下の値は例です。
{
"model": "jev-1.13",
"answers": {
"refund_requested": {"type": "noul", "noul": 0.97},
"department": {"type": "choice", "choice": "refunds"},
"urgency": {"type": "score", "score": 1}
},
"usage": {"input_tokens": 96, "output_tokens": 12}
}回答の利用
- すべての質問に対して、同じ名前の下で同じ
typeの回答が返されます。 noulの回答は確率であり、Booleanではありません。アクションごとに独自のしきい値を選択してください。choiceの回答は、常に送信したオプション名のいずれかになります。scoreの回答はcriteria配列のインデックスを示します。上記の1は "Money affected" を意味します。- 返金、エスカレーション、その他のアクションを実行する前に、独自のラベル付きケースで意思決定をテストしてください。
MCP からの利用
TokenLab MCP server は、core および full プロファイルで evaluate_decisions を公開しています。最初に {"category":"decision"} を指定して list_models を呼び出し、次に get_model を呼び出してから、同じ model、state、questions をツール引数として渡してください。結果から structuredContent.answers と structuredContent.usage を読み取ります。このツールは同期的な結果を返し、非同期タスクのポーリングは使用しません。
SDK からの利用
TokenLab JavaScript SDK 0.1.2以降は evaluateDecisions(body) を、Python SDK 0.1.2以降は evaluate_decisions(body) を提供しています。body はHTTPリクエストと同じJSONです。どちらも型付きの回答と使用量を保持し、失敗したリクエストを自動的に再試行することはありません。詳細は SDKs を参照してください。
コストと再試行
- 意思決定は、レスポンス内の
usage.input_tokensおよびusage.output_tokensに基づき、モデルの現在のトークン単価で課金されます。 - 価格は変更される可能性があります。価格をハードコードするのではなく、モデルの価格詳細または Pricing API を参照してください。
- 出力価格がゼロの場合でも、モデルが出力トークンを報告することがあります。
- リクエストは配送オプションに従います。請求と料金 を参照してください。
- タイムアウトが発生した場合、結果は不確実です。有料リクエストを再送信する前に、ログまたはコンソールでリクエストを確認してください。
一般的なエラー
| 症状 | 考えられる原因 | 修正方法 |
|---|---|---|
messages や stream などのフィールドでの 400 エラー | チャット関連フィールドはこのエンドポイントの一部ではありません | model、state、questions のみ送信してください |
criteria での 400 エラー | choice のオプション数が0または255を超えている、score のレベルが2未満または10を超えている、または noul オブジェクトに true または false が不足している | 質問の定義を修正してください |
| 弱いシグナルでアクションが実行される | noul の確率が真または偽として扱われました | テスト済みのしきい値と比較してください |
API リファレンス
| トピック | リファレンス |
|---|---|
| 意思決定の評価 | 決定の評価 |
| モデルの一覧 | モデルの一覧取得 |
| 価格 | Pricing API |
| 請求と価格 | Billing & Pricing |