Skip to main content

意思決定モデル API

POST /compatible-mode/v1/systemone を呼び出して、Bailian の意思決定モデル(decision-model-preview)を使用します。テキストを生成せず、1 回の順伝播で分類、スコアリング、はい/いいえの判定を完全な確率分布と信頼度とともに返します。チケットの振り分け、コンテンツのモデレーション、エージェントのルーティング、結果の検証など、高頻度の構造化された意思決定に適しています。

前提条件

API キーを作成し、環境変数 DASHSCOPE_API_KEY に設定していることを確認してください。詳細については、環境変数への API キーの設定を参照してください。

リクエスト

プロトコル: TypeSafe System One (POST /compatible-mode/v1/systemone) 1 件のリクエストに業務の state と、型を指定した複数の質問(choice / noul / score)を含めます。モデルは 1 回の順伝播で各質問の判断結果と確率分布を返し、choice と score では信頼度も返します。テキストは生成しないため、レイテンシとコストは出力長に依存しません。 エンドポイント {WorkspaceId} をワークスペース ID に置き換えます。リージョンとエンドポイントを参照してください。

リージョン

エンドポイント

シンガポール

https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/systemone

中国(北京)

https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/systemone

リクエストパラメーター

Content-Type · String · ヘッダー · 必須リクエストの種類: application/json.Authorization · String · ヘッダー · 必須API キー。形式: Bearer $DASHSCOPE_API_KEY.model · String · 本文 · 必須モデル名: decision-model-preview.state · String / Object / Array · 本文 · 必須判断対象となる業務の状態です。チケットのテキスト、会話、構造化オブジェクトなどを指定します。オブジェクトはモデルに送信される前にシリアライズされます。questions · Object · 本文 · 必須質問のマップです。キーは呼び出し側で定義する質問 ID、値は次のフィールドを含む質問オブジェクトです。
type · String · 必須質問の種類:
  • choice: 単一選択
  • noul: はい/いいえ
  • score: 順序尺度
instructions · String · 任意質問の説明または判断基準です。criteria · Object / Array · 型によって異なる
  • choice: 選択肢名 → 選択肢の説明のマップです(1~255 項目。すべての選択肢とフォールバック用の other を指定することを推奨します)。
  • noul: 任意の {"true":…, "false":…} の説明です。
  • score: 低い段階から高い段階への説明の配列です(2~10 段階。明確に区別できる 3~7 段階を推奨します)。
制限と推奨事項
  • 質問数に固定の上限はありません(推奨:≤ 16。レイテンシは質問数にほぼ比例して増加します)。
  • choice の選択肢:≤ 255。
  • score の段階数:2~255(3~7 を推奨)。
  • コンテキスト:最大 65536 トークン。長すぎる state は拒否されるか切り詰められます。

リクエスト例

DashScope SDK はすでに意思決定モデルをサポートしています(TypeSafe System One プロトコルとの互換):
  • Python:DashScope SDK 2.0.1 以降(意思決定モデルは 2.0.1 で追加された機能で、旧バージョンには client.decision インターフェースがなく、AttributeError が発生します)。インストールコマンド:pip install -U "dashscope>=2.0.1"。SDK のインストールも参照してください。SDK はワークスペースとリージョンから /compatible-mode/v1/systemone エンドポイントを自動的に構築します。
  • Java:DashScope SDK 2.23.3 以降(意思決定モデルは 2.23.3 で追加された機能で、旧バージョンには com.alibaba.dashscope.decision パッケージがありません)。Maven 座標:com.alibaba:dashscope-sdk-java:2.23.3(Gradle:implementation group: 'com.alibaba', name: 'dashscope-sdk-java', version: '2.23.3')。API キーはデフォルトで環境変数 DASHSCOPE_API_KEY から読み取られます。
  • 呼び出しが失敗した場合、Python SDK は DashScopeError 例外を、Java SDK は ApiException をスローします。
汎用の TypeSafe SDK(typesafe-sdk)を使用することもできます。base_url を Bailian ゲートウェイに設定すると、SDK は /v1/systemone を自動的に追加し、レスポンスを解析します。インストールコマンド:pip install typesafe-sdk。
  • チケットの振り分け
  • はい/いいえの判定
1 件のリクエストで、担当チームの割り当て(choice)、エスカレーション(noul)、重大度(score)の 3 つを同時に判断します。次の例ではシンガポールリージョンを使用します。
  • DashScope Python
  • DashScope Java
  • TypeSafe Python
  • curl
import os

import dashscope

# 以下はシンガポールリージョンの設定です。"{WorkspaceId}" を実際のワークスペース ID に置き換えてください。設定はリージョンごとに異なります。
# 意思決定モデルのエンドポイントは常にワークスペースゲートウェイの compatible-mode パス配下にあり、SDK がワークスペースとリージョンから自動的に構築します。
client = dashscope.Client(
    # 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

result = client.decision.create(
    model="decision-model-preview",
    state={"ticket_id": "T-1001", "content": "More than 24 hours after payment, the order has not been credited."},
    questions={
        "department": {"type": "choice", "instructions": "Which team should handle this?",
                       "criteria": {"billing": "Payment, refund, and billing issues", "technical": "Product failure and integration issues"}},
        "escalate": {"type": "noul", "instructions": "Should on-call staff be notified immediately?"},
        "severity": {"type": "score", "instructions": "How severe is this issue?",
                     "criteria": ["Minor issue, no impact on functionality", "Some functionality affected, but a workaround exists",
                                  "Core functionality unavailable, no workaround", "Severe business or security impact"]},
    },
)

print(result.answers["department"].choice)   # 選択されたオプション
print(result.answers["escalate"].noul)       # P(yes)
print(result.answers["severity"].score)      # 確率で重み付けされたレベルインデックス
print(result.usage.input_tokens, result.latency_ms)

レスポンスパラメーター

model · String返されたモデル名です。request_id · Stringトラブルシューティングに使用するリクエスト ID です。answers · Object回答のマップです。キーはリクエスト内の質問 ID に対応し、値は次のフィールドを含む回答オブジェクトです。
type · String質問の型(choice / noul / score)と一致します。choice · Stringchoice の場合:選択された選択肢の名前です。noul · Floatnoul の場合:P(yes)。0 は「いいえ」、1 は「はい」を表します。score · Floatscore の場合:段階インデックスの確率加重期待値です。2 つの段階の間の値(例:1.43)になる場合があります。probabilities · Object各選択肢/段階の確率です(合計は 1)。confidence · Float回答の信頼度です(choice / score で返されます)。legend · Objectscore の場合:段階インデックス → 段階の説明のマップです。
usage · Object使用量情報:
  • input_tokens (Integer):入力トークン数。
latency_ms · Floatサーバー側のレイテンシ(ミリ秒)です。

レスポンス例

次にチケット振り分けの例のレスポンスを示します(一部省略)。確率と信頼度は実際の結果によって異なります。
{
  "model": "decision-model-preview",
  "request_id": "7b986c65-b223-9341-b5f0-b988e27ecaac",
  "answers": {
    "department": {
      "type": "choice",
      "choice": "billing",
      "confidence": 0.88,
      "probabilities": {"billing": 0.94, "technical": 0.06}
    },
    "escalate": {
      "type": "noul",
      "noul": 0.99
    },
    "severity": {
      "type": "score",
      "score": 2.25,
      "confidence": 0.91,
      "legend": {
        "0": "Minor issue, no impact on functionality",
        "1": "Some functionality affected, but a workaround exists",
        "2": "Core functionality unavailable, no workaround",
        "3": "Severe business or security impact"
      },
      "probabilities": {"0": 0.0, "1": 0.01, "2": 0.73, "3": 0.26}
    }
  },
  "usage": {"input_tokens": 125},
  "latency_ms": 52.9
}

エラーコード

呼び出しが失敗すると、エラーメッセージが返されます。その他のエラーコードと解決方法については、エラーメッセージを参照してください。