型付き確率的判断を使う
型付き確率的判断は、共通の入力 state に対して、noul・choice・score の質問をまとめて送り、質問名ごとに確率を受け取るAPIです。チャットとは別の POST /v1/systemone を使います。
HTTPリクエスト
次の例では、同じ state に対して3種類の質問を送っています。questions は配列ではなく、質問名をキーにしたオブジェクトです。応答の answers も同じ質問名で返ります。
Shell
curl "$AI_GATEWAY_BASE_URL/v1/systemone" \
-H "Authorization: Bearer $AI_GATEWAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"state": "商品が届きません。明日までに必要です。",
"questions": {
"urgent": {
"type": "noul",
"instructions": "至急対応が必要ですか?",
"criteria": {
"true": "明日までに対応が必要",
"false": "期限に余裕がある"
}
},
"department": {
"type": "choice",
"instructions": "どの担当に回すべきですか?",
"criteria": {
"delivery": "配送に関する問い合わせ",
"other": null
}
},
"priority": {
"type": "score",
"instructions": "対応の優先度を評価してください。",
"criteria": [
"通常対応でよい",
"早めの対応が必要",
"至急対応が必要"
]
}
}
}'stateと各質問のinstructionsには文章、またはJSONの文字列・オブジェクト・配列を指定できます。noulは yes/no の判断です。criteriaは省略できます。含めるときはtrueとfalseの意味を指定します。choiceのcriteriaは候補名と説明の組み合わせです。説明が不要な候補はnullにします。scoreのcriteriaは順番に意味がある配列です。2段階以上を指定します。返る数値スコアは段階の間の値になることがあります。
model に auto を指定すると、同じ型付き確率的判断の出力種別を持ち、APIキーで利用できるモデルから選ばれます。モデルを固定する場合は、GET /v1/models に返る output_modality が probabilistic_decision のモデルIDを指定します。
応答の見方
answers には質問名ごとに結果が入り、返る項目は質問の種類によって変わります。
noul は次の1項目です。
noul: 「はい」である確率です。1に近いほど強い「はい」、0に近いほど強い「いいえ」、0.5付近は「はい」と「いいえ」が同程度であることを表します。criteriaを指定した場合はtrueの条件に当てはまる確率になります。noulにconfidenceは返りません。
choice は次の3項目です。
choice: 確率がもっとも高い候補です。probabilities: 候補ごとの確率です。合計は1になります。confidence:probabilitiesの分布の偏りから計算される0から1の値です。1つの候補に確率が集中していれば高く、複数の候補に分散していれば低くなります。選ばれた候補の確率そのものではありません。
score は次の4項目です。
score: 段階の番号を確率で重み付けして合計した数値です。段階の間の値になることがあります。legend: 段階の番号とcriteriaに指定した説明の対応です。probabilities: 段階ごとの確率です。合計は1になります。confidence:choiceと同じ統計量で、こちらは段階ごとのprobabilitiesの分布から計算されます。
{
"model": "typesafe/jev-latest",
"answers": {
"urgent": { "type": "noul", "noul": 0.96 },
"department": {
"type": "choice",
"choice": "delivery",
"probabilities": { "delivery": 1, "other": 0 },
"confidence": 1
},
"priority": {
"type": "score",
"score": 1.98,
"legend": { "0": "通常対応でよい", "1": "早めの対応が必要", "2": "至急対応が必要" },
"probabilities": { "0": 0, "1": 0.02, "2": 0.98 },
"confidence": 0.97
}
},
"usage": { "input_tokens": 454, "output_tokens": 61 }
}