TypeSafe System One APIでモデルをクエリする

TypeSafeのSystem One APIは、型付きの質問に対してアプリケーションの状態を評価し、構造化された回答を返すための要求応答形式です。 Azure Databricksでは、System OneのリクエストをUnityゲートウェイ経由でDatabricksがホストするUnity Catalogモデルサービスに送信します。TypeSafeモデルには送りません。 例えば、 OpenJev(Qwen3.5 4B) はQwen3.5を基盤としたオープンモデルで、System One APIをサポートしています。

アプリケーションが生成された文章ではなく、コンパクトで構造化された判定結果を必要とする場合は、System One APIを使用してください。 応答時間が重要な場合、例えばリクエストのエスカレーションが必要かどうかを判断したり、ルーティングラベルを選択したり、ルーブリックに照らしてスコア付けしたりする用途に適しています。 応答時間はモデルサービスやリクエスト負荷に依存します。

SQL におけるテーブルの行に関する決定については、ai_decide 関数 を参照してください。

Requirements

  • Unity CatalogとUnity Gatewayに対応したワークスペースです。
  • System One互換モデルを基盤としたUnity Catalogモデルサービス。 この例では、完全修飾名がopenjev-qwen35-4bであるsystem.ai.openjev-qwen35-4bモデルサービスを使用しています。
  • モデル サービスを実行する権限。

System OneルートはUnity Catalogモデルサービスを必要とします。 モデル プロバイダー サービスや、Unity Catalog 以外の配信エンドポイントはサポートされていません。

モデルサービスに問い合わせ

要求本文には、完全修飾されたモデルサービス名、評価対象の状態、1 つ以上の名前付き質問が含まれます。 各問題は noul、 choice、または score のいずれかのタイプを使用します。

以下の依頼には、各タイプの質問が1つずつ含まれています:

curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{
  "model": "system.ai.openjev-qwen35-4b",
  "state": {
    "message": "My card was charged twice for the same order and I need a refund.",
    "channel": "support"
  },
  "questions": {
    "is_billing": {
      "type": "noul",
      "instructions": "Is this a billing-related request?",
      "criteria": {
        "true": "The message concerns a charge, payment, invoice, or refund.",
        "false": "The message does not concern billing."
      }
    },
    "intent": {
      "type": "choice",
      "instructions": "Which intent best matches the message?",
      "criteria": {
        "refund": "The customer requests a refund.",
        "duplicate_charge": "The customer reports being charged more than once.",
        "other": "Another request."
      }
    },
    "urgency": {
      "type": "score",
      "instructions": "How urgent is the request?",
      "criteria": [
        "Can wait",
        "Needs attention soon",
        "Urgent"
      ]
    }
  }
}' \
https://<workspace_host>/ai-gateway/typesafe/v1/systemone

リクエストの system.ai.openjev-qwen35-4b フィールドで、完全修飾された Unity Catalog モデルサービス名 model を使用してください。

要求フィールド

フィールド タイプ Description
model String system.ai.openjev-qwen35-4bのような完全に限定されたUnity Catalogモデルサービス名。
state 文字列、オブジェクト、または配列 評価すべき内容。 テキストには文字列を、レコード、会話、アプリケーションの状態には構造化データを使いましょう。
questions Object 質問IDから質問定義への空ではないマップ。 レスポンスは answers オブジェクト内で同じ ID を使用します。

各問題には type、任意の instructions、そしてタイプ固有の criteriaがあります。

Noul の質問

noul質問は答えが「はい」である確率を返します。 オプションの criteria オブジェクトは、 true と false が何を意味するかを説明しています。 instructions を入力するか、true または false について説明を入力してください。 回答には、0(いいえ)から1(はい)までのnoul数字が含まれています。

選択式の質問

choice問題では、criteriaオブジェクトから1つの選択肢を選択します。 各オプションは説明文または、追加の説明が不要な場合は null に対応します。 1から255の選択肢を定義します。 応答には選択された choice、各オプションの確率、 confidence 値が含まれます。

質問を採点

score の質問は、状態を順序付き criteria 配列に対して評価します。 この応答には、確率で重み付けされた score、レベル インデックスを基準にマッピングする legend、各レベルの確率、confidence の値が含まれています。 レベル1から10までを定義してください。

応答形式

回答にはモデル識別子と、 answersの各質問に対する1つの回答が含まれています。 トークンの使用例は usage に示されており、input_tokens と output_tokens があります:

{
  "model": "<returned-model-id>",
  "answers": {
    "is_billing": {
      "type": "noul",
      "noul": 0.98
    },
    "intent": {
      "type": "choice",
      "choice": "duplicate_charge",
      "confidence": 0.965,
      "probabilities": {
        "refund": 0.023,
        "duplicate_charge": 0.977,
        "other": 0.0002
      }
    },
    "urgency": {
      "type": "score",
      "score": 1.902,
      "confidence": 0.852,
      "legend": {
        "0": "Can wait",
        "1": "Needs attention soon",
        "2": "Urgent"
      },
      "probabilities": {
        "0": 0.0069,
        "1": 0.0845,
        "2": 0.9086
      }
    }
  },
  "usage": {
    "input_tokens": 238,
    "output_tokens": 0
  }
}

この回答は上記のリクエストに基づいており、数値は丸められています。 回答、確率、信頼度値、トークン数、および返されるモデル識別子はリクエストやバックエンドによって異なります。 レスポンス model 値はバックエンドが報告したモデルを示し、リクエストの完全修飾モデルサービス名とは異なる場合があります。

リクエストエラー

要求の検証エラーが発生した場合、このルートは HTTP 422 を返し、無効な要求の詳細を記述した detail 配列を返します。

その他のリソース