中文翻译暂不可用,显示俄语原文。

Спроектировать uncertainty UI

ТЕХНИЧЕСКОЕ ЗАДАНИЕ: Спроектировать uncertainty UI

1. Цель задачи

Разработать интерфейс, который отображает confidence score (оценку уверенности) ответа AI-модели и визуально выделяет части ответа с низкой уверенностью. Конечная цель — повысить качество доверия пользователя: чтобы он не переоценивал ненадёжные ответы и не отвергал верные, а принимал на основе объективной информации о неопределённости.

Ключевой результат Рабочий прототип / дизайн-документ uncertainty UI, протестированный на 5–7 пользователях, с измеренным смещением доверия (calibration shift) < 20% от baseline.


2. Исходные данные

Что нужноОткуда взять
Чат-бот / AI-ассистент (готовый продукт или тестовое окружение)Собственный проект (Pet-проект) или opensource (например, Gradio + Llama)
Модель, возвращающая confidence score (токен-уровень или ответ-уровень)Hugging Face pipeline с output_scores=True или API Gemini/OpenAI с logprobs
Набор тестовых запросов (≈20–30) с известной сложностьюСформировать самостоятельно: лёгкие, пограничные, сложные (факты, мнения, неоднозначные)
Пользователи для тестирования5–7 коллег или волонтёров (можно удалённо)
Инструмент для прототипированияFigma / Framer / React + Tailwind

Если нет реального AI-ассистента — симулируем:

  1. Запустите локально модель meta-llama/Llama-3.1-8B через Hugging Face Transformers.
  2. Для каждого сгенерированного токена достаньте token.logprobs (активируйте output_logits=True).
  3. Нормализуйте logprobs в confidence (softmax или sigmoid).
  4. Выберите 3 варианта UI (только цветовая шкала, шкала с цифрами, комбинированный) и визуализируйте в Jupyter Notebook или HTML.

3. Технологический стек

КомпонентИнструментыНазначение
AI-модельHugging Face Transformers / OpenAI API (logprobs)Генерация ответов с оценками уверенности
Прототип UIFigma (дизайн) + React / Vue (интерактив)Создание макетов и кликабельных прототипов
Визуализация uncertaintyPython matplotlib / D3.js / chart.jsОтображение confidence по токенам/абзацам
Пользовательское тестированиеGoogle Forms / Hotjar / UsabilityHubСбор оценок доверия и отзывов
Анализ метрикPandas + scipyРасчёт калибровки доверия, AUC, смещения

4. Этапы выполнения

Этап 1: Исследование и формирование гипотез (2 часа)

Действия

  1. Изучите существующие решения в UI/UX для AI-неопределённости (например, Google AI Studio, Perplexity, ChatGPT с confidence-баром).
  2. Определите типы confidence, которые будете отображать:
    • Confidence всего ответа (одно число 0–100%)
    • Confidence для каждого предложения / блока (цветовое кодирование)
    • Confidence для отдельных токенов (подсветка)
  3. Сформулируйте 3–4 гипотезы о том, какой вариант UI улучшит калибровку доверия пользователя.
    • Пример: «Пользователи, видящие confidence на уровне абзацев, реже ошибаются при оценке правильности сложных фактов».
  4. Подготовьте тестовые запросы (30 шт.) с известными правильными/неправильными ответами (ground truth).

Ожидаемый результат этапа
Гипотезы в документе, список из 30 запросов с правильными ответами и “сложностью” (лёгкий/средний/сложный).


Этап 2: Разработка UI-макетов (3 часа)

Действия

  1. Создайте 3 визуальных варианта в Figma (или кодом):
    • Вариант A — только общий confidence (полоса прогресса снизу)
    • Вариант B — confidence на уровне предложений (цвет фона: зелёный–жёлтый–красный)
    • Вариант C — комбинированный: общий + подсветка спорных слов (подчёркивание пунктиром с тултипом)
  2. Добавьте интерактивность (например, при hover на слово – показывать confidence).
  3. Продумайте цветовую палитру, доступную для дальтоников (используйте Colour Blind Safe palette).
  4. Экспортируйте макеты в PNG/PDF и, если возможно, в кликабельный прототип (Figma Prototype).

Ожидаемый результат этапа
Три макета uncertainty UI в общем документе (PDF/ссылка на Figma).


Этап 3: Бэкенд-функция confidence (2 часа)

Действия

  1. Напишите Python-функцию, которая для ответа модели возвращает:
    • overall_confidence: float
    • sentence_confidences: list[float]
    • token_confidences: list[tuple[str, float]]
  2. Интегрируйте её с моделью (через Hugging Face или OpenAI).
  3. Создайте простой API или JSON-файл с данными для каждого из 30 запросов (ответ + confidence).
  4. Визуализируйте полученные confidence (гистограмма, распределение).

Пример кода (для локальной модели):

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model = AutoModelForCausalLM.from_pretrained("model-name", output_logits=True)
tokenizer = AutoTokenizer.from_pretrained("model-name")

def get_response_confidences(prompt: str):
    inputs = tokenizer(prompt, return_tensors="pt")
    outputs = model.generate(**inputs, max_new_tokens=50, return_dict_in_generate=True, output_scores=True)
    logits = torch.stack(outputs.scores, dim=0)  # (seq_len, batch, vocab)
    # Confidence для каждого шага = softmax(logits)[:, 0, token_id]
    ...
    return {"overall": ..., "tokens": ...}

Ожидаемый результат этапа
Рабочая функция, файл data/confidences.json с данными для UI.


Этап 4: Пользовательское тестирование (3 часа)

Действия

  1. Подготовьте тестовый сценарий (Google Forms или локальный React-сайт):
    • Показывается вопрос, ответ AI, и один из вариантов UI (A/B/C).
    • Пользователь оценивает: «Насколько вы доверяете этому ответу?» (1–5).
    • В конце: «Какой вариант UI кажется наиболее полезным?».
  2. Разделите 30 запросов на 3 группы по 10 для каждого варианта UI (сбалансировать сложность).
  3. Проведите тестирование с 5–7 участниками (онлайн/очно).
  4. Соберите метрики:
    • Оценка доверия пользователя.
    • Правильность ответа (ground truth).
    • Разница: оценка – истинная правильность (калибровка).
    • Время на оценку (опционально).

Ожидаемый результат этапа
Таблица с данными тестирования (CSV), записанные комментарии участников.


Этап 5: Анализ и финальный отчёт (2 часа)

Действия

  1. Рассчитайте метрики для каждого варианта UI:
    • Calibration error: средняя разница между уверенностью пользователя и объективным качеством ответа.
    • Spearman correlation между confidence UI (objectively) и оценкой пользователя.
    • Время принятия решения (если замеряли).
  2. Выявите лучший вариант по balance: низкая ошибка калибровки + высокая корреляция + субъективное предпочтение.
  3. Опишите выводы и рекомендации — какой UI внедрять и как масштабировать (например, только для ответов ниже порога 0.8).
  4. Оформите финальный документ (PDF / Markdown) со всеми этапами, графиками и гипотезами.

Ожидаемый результат этапа
Отчёт (uncertainty_ui_report.md) с таблицей сравнения вариантов, графиками, рекомендациями.


5. Критерии приемки (Definition of Done)

  • Разработаны минимум 3 различных макета uncertainty UI (Figma / код).
  • Реализован бэкенд, возвращающий confidence для каждого токена/предложения/всего ответа.
  • Проведено тестирование с ≥5 пользователями на 30 запросах.
  • Собраны и проанализированы метрики (калибровка, корреляция, время, субъективные оценки).
  • Определён наилучший вариант UI с обоснованием (data-driven).
  • Финальный отчёт содержит: гипотезы, данные, графики, рекомендации.
  • Результаты реплицируемы: код и данные приложены в репозиторий.
  • UI-элементы доступны для людей с ограничениями (цвета, размер шрифта).
  • Указаны ограничения теста (размер выборки, домен запросов).

6. Ожидаемый результат

Основной артефакт

  • Файл docs/uncertainty_ui_report.md — полный отчёт с описанием дизайн-решений, анализом данных тестирования, выводом.

Дополнительные артефакты

  • designs/ — PNG-макеты или ссылка на Figma.
  • src/backend/confidence.py — функция извлечения confidence.
  • data/test_queries.json — 30 запросов с ground truth.
  • data/test_results.csv — сырые оценки пользователей.
  • src/analysis/calibration.ipynb — ноутбук с расчётами метрик.

Если задача выполняется в обучении

  • Презентация (PDF/PPT) на 5–10 слайдов с ключевыми результатами.

7. Возможные сложности и их решение

СложностьРешение
Модель не возвращает confidence для токеновИспользуйте output_logits=True или симулируйте confidence как softmax от logits; если API закрыт — возьмите open-source модель
Пользователи не понимают понятие “confidence”В сценарии дайте пояснение: «насколько, по вашему мнению, этот ответ корректен», не ссылайтесь на технические детали
Разброс оценок между пользователями великНормируйте оценки: вычтите среднее пользователя; используйте внутрисубъектный дизайн (каждый пробует все варианты)
UI в Figma не хватает интерактивностиСделайте минимальную реализацию на React/HTML+JS — несколько экранов с жёстко заданными данными
Сложно определить ground truth для творческих запросовОграничьтесь фактологическими вопросами (даты, цифры, имена) — для них можно однозначно оценить правильность

8. Бюджет времени (оценка)

ЭтапВремя (часы)
1. Исследование и гипотезы2
2. Разработка UI-макетов3
3. Бэкенд-функция confidence2
4. Пользовательское тестирование3
5. Анализ и отчёт2
Итого12

Примечание Для первого выполнения задачи рекомендуется заложить 14-16 часов с учётом отладки и повторных тестов. При использовании готового AI-сервиса (ChatGPT API) время этапа 3 сокращается до 1 часа.


9. Связанные вопросы из базы знаний

ВопросТема
101Как визуализировать uncertainty в классификации
105HCI-паттерны для отображения неопределённости
203Пользовательское доверие к AI-системам
207Метрики калибровки доверия
304A/B тестирование UX-элементов
401Design thinking для AI-продуктов
502Доступность UI (цветовая слепота)
603Сбор пользовательского фидбека через формы
707Обработка low-confidence case в production
812Оценка компетенции пользователя в AI-взаимодействии

10. Чек-лист самопроверки

  • Я чётко сформулировал проблему доверия и гипотезы до начала дизайна.
  • Я создал минимум 3 контрастных варианта UI, различающихся по способу показа uncertainty.
  • Я проверил, что confidence данные валидны (не все 99% для плохих ответов).
  • Я сбалансировал сложность запросов и случайно назначил варианты пользователям.
  • Я рассчитал метрики калибровки и выбрал лучший вариант на основе данных, а не субъективных предпочтений.
  • Я задокументировал ограничения теста (размер выборки, домен, состав пользователей).