信頼度
信頼度
TypeSafe が確実性をどう報告するか、確率との違い、システムの振る舞いを制御するための使い方。
TypeSafe からのすべての Score と Choice の答えには、選択肢(Choice の場合)やレベル(Score の場合)にわたる確率分布を表す probabilities プロパティが含まれます。その分布の形が、モデルがどれほど確信的かを教えてくれます。一つの結果に集中していれば確信的な答え、広がっていれば不確かな答えです。
答えの confidence プロパティは、その形を 0 から 1 の単一の数値に畳み込み、自分で計算しなくてもしきい値処理できるようにします。(Noul の答えはこれを持ちません。)
信頼度は確率分布から導かれる
confidence は、答えがすでに与えている確率分布から計算される統計量です。TypeSafe がそれを計算してすべての Choice と Score の答えに返すので、よくあるケースではこちら側で追加の作業は不要です。
選択肢 3 つの choice の例
確率分布が信頼度をどう変えるか
信頼度
確率
スライダーを動かすとその選択肢の確率が変わり、残りは合計が 100% になるよう自動で調整されます。
選択:選択肢 A
このデモでの信頼度の計算方法
TypeSafe は確率が選択肢にどれだけ散っているかから信頼度を算出します。1 つの選択肢に集中していれば 1.0、均等に散るほど低くなります。このデモでは (3 × 最大の確率 − 1) / 2 で 3 択の信頼度を近似しています。
Choice では、分布は選択肢にわたる probabilities です。Score では、レベルにわたる分布です。どちらの場合も、より平たい分布はより低い信頼度を意味します。Choice の低い信頼度は、どの選択肢も他より明確に勝っていないことをしばしば意味し、Score の低い信頼度は、レベルが曖昧か多次元か、状態に判断材料が足りないことをしばしば意味します。
「分からない」は有用な信号
知的システムが、人間であれ機械であれ、正直な不確実性を表現できなければ、そのシステムは信頼できません。
信頼度は、モデルが「これはよく分からない」と言うための組み込みの仕組みを与えます。これにより、コードは確実性のレベルごとに異なる振る舞いを実装でき、それが実際に頼れるシステムを構築する土台になります。
コードで信頼度を使う三つの経路
有用な出発点のパターンは、信頼度を三つの範囲に分け、それぞれが異なるシステムの振る舞いを生むようにすることです:
高い信頼度: 自動で行動します。モデルは明確に読み取れており、人の関与なしに進められます。
中程度の信頼度: 慎重に進めます。モデルには妥当な答えがありますが、確信はありません。文脈に応じて、ユーザーに確認を求めたり、レビュー用にフラグを立てたり、行動する前に情報を集めたりできます。
低い信頼度: 行動しません。人に回すか、説明を求めたり、別のシステムにフォールバックしたりします。モデルは、十分な情報がないか、その質問が適していないと言っています。
それらの境界をどこに引くかは、リスクの大きさによります。
しきい値はリスクに応じて変える
信頼度のしきい値は一つの数値ではありません。同じシステム内の異なるアクションは、誤ったときの結果に応じて異なるレベルで門控されるべきです。
response = client.system_one(
state=user_message,
questions={
"action": Choice(
instructions="What is the user trying to do?",
criteria={
"check_balance": "View account balance",
"approve_transfer": "Approve the pending withdrawal request",
"support": "Get help with an issue",
},
),
},
)
action = response.answers["action"]
confidence = action.confidence
if confidence < 0.5:
# Model is genuinely unsure. Don't guess.
route_to_human(user_message)
elif action.choice == "check_balance":
# Low stakes. Showing the wrong screen is recoverable.
show_balance(account_id)
elif action.choice == "approve_transfer":
if confidence > 0.9:
# High stakes, high confidence. Proceed with confirmation.
confirm_then_execute(account_id)
else:
# High stakes, moderate confidence. Verify first.
ask_user_to_confirm(account_id)
0.5 の信頼度の下限は、モデルが本当に不確かだと報告するものをすべて捕まえます。それ以上の、確認なしで行動するためのしきい値は、読み取り専用の操作より破壊的な操作の方が高くなります。リスク許容度をコードが表現します。