コアガイド

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 を使用しています。

リクエストの形式

フィールド型備考
modelstring意思決定モデルID
statestring, JSON object, or JSON array評価対象の入力(チケット、トランスクリプト、レコードなど)
questionsobject少なくとも1つの質問。各キーは質問名、各値には type、instructions、criteria が含まれます

instructions および各 criteria は、文字列、JSONオブジェクト、またはJSON配列も受け付けます。リクエストで未知のフィールドを指定すると拒否されます。

typecriteria回答
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

このページの内容