Передвигайте ползунок, чтобы изменить вероятность варианта. Остальные вероятности автоматически подстроятся, сохраняя сумму 100%.
PLAINTEXTapi.wedstack.ru/v1
<div className="mt-4 flex flex-wrap gap-2" aria-label="Example distributions">
<button type="button" className={buttonClass} style={buttonStyle} onClick={() => setProbabilities([90, 6, 4])}>Явный победитель</button>
<button type="button" className={buttonClass} style={buttonStyle} onClick={() => setProbabilities([40, 33, 27])}>Размытое распределение</button>
<button type="button" className={buttonClass} style={buttonStyle} onClick={() => setProbabilities([100 / 3, 100 / 3, 100 / 3])}>Равное разделение</button>
</div>
<div className="mt-4 text-sm" aria-live="polite">{winners.length === 1 ? `Выбрано: ${selected}` : selected}</div>
<details className="mt-4 text-sm text-zinc-600 dark:text-zinc-400">
<summary className="cursor-pointer">Как это демо рассчитывает уверенность</summary>
<p className="mt-3">TypeSafe вычисляет уверенность на основе распределения вероятностей по вариантам. Если вся вероятность приходится на один вариант, значение равно 1.0; чем равномернее распределена вероятность, тем ниже уверенность. В этом демо формула <code>(3 × наибольшая вероятность − 1) / 2</code> аппроксимирует уверенность для трех вариантов.</p>
</details>
</section>;
}
Все ответы Score и Choice от TypeSafe включают свойство probabilities, представляющее собой распределение вероятностей по вариантам (для Choice) или уровням (для Score). Именно форма этого распределения показывает, насколько модель уверена: концентрация на одном исходе означает уверенный ответ, а размытое распределение — неуверенный.
Свойство confidence в ответе сводит эту форму распределения к единому числу от 0 до 1, позволяя использовать пороговые условия без необходимости производить математические расчеты самостоятельно. (Ответы Noul не содержат отдельного поля confidence.)
Уверенность вычисляется из вероятностей
confidence — это статистическая метрика, вычисляемая из распределения вероятностей, уже присутствующего в ответе. TypeSafe рассчитывает ее за вас и возвращает для каждого ответа Choice и Score, поэтому в стандартных сценариях вам не требуется дополнительная работа.
**Надежное значение по умолчанию:** Мы предоставляем `confidence` как удобную метрику, подходящую для большинства сценариев, однако вы не привязаны исключительно к нашему определению. В зависимости от специфики задачи вам может подойти другая метрика, именно поэтому мы возвращаем полное распределение `probabilities` в ответе. Плюсы и минусы различных способов вычисления — специализированная тема, которую мы вынесем в отдельный кукбук.
Для Choice распределением является probabilities по вашим вариантам. Для Score — распределение по вашим уровням. В обоих случаях более пологое распределение означает меньшую уверенность: низкая уверенность для Choice часто говорит о том, что ни один из вариантов не имеет явного преимущества перед другими, а для Score — что уровни неоднозначны, многомерны, либо состояние содержит недостаточно контекста.
«Я не знаю» — ценный сигнал
Если интеллектуальная система (будь то человек или машина) не способна честно признать свою неуверенность, такой системе нельзя доверять.
Показатель уверенности дает встроенный механизм, позволяющий модели сказать: «В этом случае я не уверена». Это дает вашему коду возможность реализовать различные сценарии поведения в зависимости от степени определенности, что является основой создания по-настоящему надежных систем.
Три пути использования уверенности в вашем коде
Полезный базовый паттерн — разделить уверенность на три диапазона, каждый из которых запускает свое системное поведение:
Высокая уверенность: Действовать автоматически. Модель имеет однозначную трактовку, и процесс может продолжаться без участия человека.
Средняя уверенность: Действовать с осторожностью. Модель сформировала разумный ответ, но не уверена до конца. В зависимости от контекста вы можете запросить подтверждение у пользователя, отправить кейс на ревью или собрать дополнительную информацию перед выполнением действия.
Низкая уверенность: Не выполнять автоматических действий. Направьте задачу человеку, запросите уточнение или переключитесь на резервную систему. Модель сообщает, что у нее недостаточно данных либо вопрос не подходит для данного случая.
То, где именно вы проведете эти границы, зависит от цены ошибки.
Пороги масштабируются в зависимости от риска
Порог уверенности — это не одно универсальное число. Различные действия внутри одной и той же системы должны контролироваться на разных уровнях в зависимости от последствий возможной ошибки.
PYTHON THEME={NULL}api.wedstack.ru/v1
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:
# Модель искренне не уверена. Не угадываем.
route_to_human(user_message)
elif action.choice == "check_balance":
# Низкие ставки. Ошибочный экран можно исправить.
show_balance(account_id)
elif action.choice == "approve_transfer":
if confidence > 0.9:
# Высокие ставки, высокая уверенность. Выполняем с подтверждением.
confirm_then_execute(account_id)
else:
# Высокие ставки, умеренная уверенность. Сначала верифицируем.
ask_user_to_confirm(account_id)
Нижний порог уверенности 0.5 отсекает всё, в чем модель искренне сомневается. Выше этой планки порог для действий без подтверждения для разрушительных операций значительно выше, чем для операций чтения. Ваш код выражает допустимый уровень риска.
Корректные пороговые значения зависят от вашей предметной области и точности работы модели в вашей конкретной задаче. Начните с консервативных порогов, протестируйте их на собственных данных и корректируйте по мере накопления результатов.