ドキュメント

信頼度

信頼度

TypeSafe が確実性をどう報告するか、確率との違い、システムの振る舞いを制御するための使い方。

TypeSafe からのすべての Score と Choice の答えには、選択肢(Choice の場合)やレベル(Score の場合)にわたる確率分布を表す probabilities プロパティが含まれます。その分布の形が、モデルがどれほど確信的かを教えてくれます。一つの結果に集中していれば確信的な答え、広がっていれば不確かな答えです。

答えの confidence プロパティは、その形を 0 から 1 の単一の数値に畳み込み、自分で計算しなくてもしきい値処理できるようにします。(Noul の答えはこれを持ちません。)

信頼度は確率分布から導かれる

confidence は、答えがすでに与えている確率分布から計算される統計量です。TypeSafe がそれを計算してすべての Choice と Score の答えに返すので、よくあるケースではこちら側で追加の作業は不要です。

選択肢 3 つの choice の例

確率分布が信頼度をどう変えるか

信頼度

0.85

スライダーを動かすとその選択肢の確率が変わり、残りは合計が 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 の信頼度の下限は、モデルが本当に不確かだと報告するものをすべて捕まえます。それ以上の、確認なしで行動するためのしきい値は、読み取り専用の操作より破壊的な操作の方が高くなります。リスク許容度をコードが表現します。