中文翻译暂不可用,显示俄语原文。
Спроектировать 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-ассистента — симулируем:
- Запустите локально модель meta-llama/Llama-3.1-8B через Hugging Face Transformers.
- Для каждого сгенерированного токена достаньте token.logprobs (активируйте output_logits=True).
- Нормализуйте logprobs в confidence (softmax или sigmoid).
- Выберите 3 варианта UI (только цветовая шкала, шкала с цифрами, комбинированный) и визуализируйте в Jupyter Notebook или HTML.
3. Технологический стек
| Компонент | Инструменты | Назначение |
|---|---|---|
| AI-модель | Hugging Face Transformers / OpenAI API (logprobs) | Генерация ответов с оценками уверенности |
| Прототип UI | Figma (дизайн) + React / Vue (интерактив) | Создание макетов и кликабельных прототипов |
| Визуализация uncertainty | Python matplotlib / D3.js / chart.js | Отображение confidence по токенам/абзацам |
| Пользовательское тестирование | Google Forms / Hotjar / UsabilityHub | Сбор оценок доверия и отзывов |
| Анализ метрик | Pandas + scipy | Расчёт калибровки доверия, AUC, смещения |
4. Этапы выполнения
Этап 1: Исследование и формирование гипотез (2 часа)
Действия
- Изучите существующие решения в UI/UX для AI-неопределённости (например, Google AI Studio, Perplexity, ChatGPT с confidence-баром).
- Определите типы confidence, которые будете отображать:
- Confidence всего ответа (одно число 0–100%)
- Confidence для каждого предложения / блока (цветовое кодирование)
- Confidence для отдельных токенов (подсветка)
- Сформулируйте 3–4 гипотезы о том, какой вариант UI улучшит калибровку доверия пользователя.
- Пример: «Пользователи, видящие confidence на уровне абзацев, реже ошибаются при оценке правильности сложных фактов».
- Подготовьте тестовые запросы (30 шт.) с известными правильными/неправильными ответами (ground truth).
Ожидаемый результат этапа
Гипотезы в документе, список из 30 запросов с правильными ответами и “сложностью” (лёгкий/средний/сложный).
Этап 2: Разработка UI-макетов (3 часа)
Действия
- Создайте 3 визуальных варианта в Figma (или кодом):
- Вариант A — только общий confidence (полоса прогресса снизу)
- Вариант B — confidence на уровне предложений (цвет фона: зелёный–жёлтый–красный)
- Вариант C — комбинированный: общий + подсветка спорных слов (подчёркивание пунктиром с тултипом)
- Добавьте интерактивность (например, при hover на слово – показывать confidence).
- Продумайте цветовую палитру, доступную для дальтоников (используйте Colour Blind Safe palette).
- Экспортируйте макеты в PNG/PDF и, если возможно, в кликабельный прототип (Figma Prototype).
Ожидаемый результат этапа
Три макета uncertainty UI в общем документе (PDF/ссылка на Figma).
Этап 3: Бэкенд-функция confidence (2 часа)
Действия
- Напишите Python-функцию, которая для ответа модели возвращает:
overall_confidence: floatsentence_confidences: list[float]token_confidences: list[tuple[str, float]]
- Интегрируйте её с моделью (через Hugging Face или OpenAI).
- Создайте простой API или JSON-файл с данными для каждого из 30 запросов (ответ + confidence).
- Визуализируйте полученные 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 часа)
Действия
- Подготовьте тестовый сценарий (Google Forms или локальный React-сайт):
- Показывается вопрос, ответ AI, и один из вариантов UI (A/B/C).
- Пользователь оценивает: «Насколько вы доверяете этому ответу?» (1–5).
- В конце: «Какой вариант UI кажется наиболее полезным?».
- Разделите 30 запросов на 3 группы по 10 для каждого варианта UI (сбалансировать сложность).
- Проведите тестирование с 5–7 участниками (онлайн/очно).
- Соберите метрики:
- Оценка доверия пользователя.
- Правильность ответа (ground truth).
- Разница: оценка – истинная правильность (калибровка).
- Время на оценку (опционально).
Ожидаемый результат этапа
Таблица с данными тестирования (CSV), записанные комментарии участников.
Этап 5: Анализ и финальный отчёт (2 часа)
Действия
- Рассчитайте метрики для каждого варианта UI:
- Calibration error: средняя разница между уверенностью пользователя и объективным качеством ответа.
- Spearman correlation между confidence UI (objectively) и оценкой пользователя.
- Время принятия решения (если замеряли).
- Выявите лучший вариант по balance: низкая ошибка калибровки + высокая корреляция + субъективное предпочтение.
- Опишите выводы и рекомендации — какой UI внедрять и как масштабировать (например, только для ответов ниже порога 0.8).
- Оформите финальный документ (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. Бэкенд-функция confidence | 2 |
| 4. Пользовательское тестирование | 3 |
| 5. Анализ и отчёт | 2 |
| Итого | 12 |
Примечание Для первого выполнения задачи рекомендуется заложить 14-16 часов с учётом отладки и повторных тестов. При использовании готового AI-сервиса (ChatGPT API) время этапа 3 сокращается до 1 часа.
9. Связанные вопросы из базы знаний
| Вопрос | Тема |
|---|---|
| 101 | Как визуализировать uncertainty в классификации |
| 105 | HCI-паттерны для отображения неопределённости |
| 203 | Пользовательское доверие к AI-системам |
| 207 | Метрики калибровки доверия |
| 304 | A/B тестирование UX-элементов |
| 401 | Design thinking для AI-продуктов |
| 502 | Доступность UI (цветовая слепота) |
| 603 | Сбор пользовательского фидбека через формы |
| 707 | Обработка low-confidence case в production |
| 812 | Оценка компетенции пользователя в AI-взаимодействии |
10. Чек-лист самопроверки
- Я чётко сформулировал проблему доверия и гипотезы до начала дизайна.
- Я создал минимум 3 контрастных варианта UI, различающихся по способу показа uncertainty.
- Я проверил, что confidence данные валидны (не все 99% для плохих ответов).
- Я сбалансировал сложность запросов и случайно назначил варианты пользователям.
- Я рассчитал метрики калибровки и выбрал лучший вариант на основе данных, а не субъективных предпочтений.
- Я задокументировал ограничения теста (размер выборки, домен, состав пользователей).