Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Important
Элементы, помеченные (предварительная версия) в этой статье, в настоящее время находятся в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Для получения дополнительной информации см. Дополнительные условия использования для предварительных версий Microsoft Azure.
Собирайте обратную связь от конечных пользователей, такую как реакции «палец вверх» или «палец вниз» либо числовые шкалы оценок, из вашего ИИ-приложения и передавайте её в бэкенд наблюдаемости с использованием семантических соглашений OpenTelemetry (OTel). При регистрации отзывов пользователей можно сопоставлять субъективные сигналы качества с данными трассировки, измерять удовлетворенность пользователей с течением времени и постоянно улучшать агенты и модели.
Обзор
Журналирование отзывов конечных пользователей использует семантические соглашения OTel для формирования структурированных событий отзывов, связанных с конкретной трассировкой или спаном. Это означает, что данные обратной связи проходят через тот же конвейер телеметрии, что и ваши трассировки и метрики, обеспечивая единое представление о поведении приложения и настроениях пользователей.
Основные возможности:
- Лайк или дизлайк: Записывайте бинарные сигналы одобрения от пользователя, связанные с конкретным ответом агента.
- Шкала оценки: Захват числовых показателей, таких как 1–5 звезд, для оценки удовлетворенности пользователей.
- Корреляция трассировки: Каждое событие обратной связи связывается с исходной трассой и спаном, что позволяет перейти от сводных метрик удовлетворенности к отдельным взаимодействиям.
- Стандартный транспорт OpenTelemetry: События обратной связи отправляются через API событий OpenTelemetry, поэтому они экспортируются через ваш существующий конвейер OpenTelemetry в Application Insights или любую совместимую серверную систему.
Необходимые условия
Проект Foundry с подключённым ресурсом Application Insights. См. Настройка трассировки.
Инструментирование OpenTelemetry, настроенное в вашем приложении. Инструкции по настройке см. в разделе Настроить трассировку в Microsoft Foundry.
Python версии 3.9 или более поздней версии или поддерживаемый язык с поддержкой пакета SDK OTel.
Установлены пакеты
azure-ai-projectsиazure-monitor-opentelemetry:pip install "azure-ai-projects>=2.0.0" azure-monitor-opentelemetry python-dotenv
Типы оценки
Записывайте отзывы пользователей как событие OpenTelemetry. Система поддерживает два типа оценки:
| Тип | Description | Отрисовка пользовательского интерфейса | Диапазон оценки |
|---|---|---|---|
| Бинарный | Оценка по принципу «пройдено/не пройдено». | Пальцы вверх или пальцы вниз |
0.0 (сбой) или 1.0 (успех) |
| 5-балльная шкала Лайкерта | Порядковая оценка по шкале 5 точек. | 5-звездочная оценка или шкала Likert (строго не согласны → строго согласиться) |
1.0 до 5.0 |
Два исходных типа могут предоставлять отзывы:
- Builder: Человек, выполняющий оценку с использованием решения Microsoft для наблюдаемости, например в Foundry или на портале Azure Monitor.
- Конечный пользователь: Человек, выполняющий оценку через интерфейс приложения, за которым ведёт мониторинг решение Microsoft для наблюдаемости.
Атрибуты события
Каждая оценка, выполненная человеком, отправляется как событие gen_ai.evaluation.result. В следующих разделах описаны обязательные атрибуты для каждого типа оценки. Полная эталонная реализация см. в разделе sample_human_evaluations.py.
Выведите двоичную оценку (большой палец вверх или вниз)
Бинарные оценки фиксируют обратную связь в формате «прошёл/не прошёл». Оценка должна быть 0.0 (сбой) или 1.0 (проход).
Правила:
-
gen_ai.evaluation.score.value:0.0или1.0 -
gen_ai.evaluation.score.label:"fail"или"pass" -
internal_properties.gen_ai.evaluation.type:"boolean" -
internal_properties.gen_ai.evaluation.min_value:0.0 -
internal_properties.gen_ai.evaluation.max_value:1.0 -
internal_properties.gen_ai.evaluation.threshold:1.0 -
internal_properties.gen_ai.evaluation.desirable_direction:"increase"
Пример. Конечный пользователь дает пальцы вверх
Пример запуска см. в разделе sample_human_evaluations.py.
Выдайте оценку по 5-балльной шкале Лайкерта
Оценки по пятибалльной шкале Лайкерта позволяют собирать порядковую обратную связь по шкале от 1 до 5. Оценка, равная пороговому значению или превышающая его (по умолчанию 3.0), считается прошедшей.
Правила:
-
gen_ai.evaluation.score.value: значение между1.0и5.0 -
gen_ai.evaluation.score.label:"pass"значение оценки ≥ пороговое значение, в противном случае"fail" -
internal_properties.gen_ai.evaluation.type:"ordinal" -
internal_properties.gen_ai.evaluation.min_value:1.0 -
internal_properties.gen_ai.evaluation.max_value:5.0 -
internal_properties.gen_ai.evaluation.threshold:3.0 -
internal_properties.gen_ai.evaluation.desirable_direction:"increase"
Пример: Builder оценивает релевантность в портале Foundry
Пример запуска см. в разделе sample_human_evaluations.py.
Просмотр отзывов в Application Insights
После экспорта событий обратной связи через конвейер OTel их можно запросить в Application Insights с помощью KQL:
customEvents
| where name == "gen_ai.evaluation.result"
| extend
eval_name = tostring(customDimensions["gen_ai.evaluation.name"]),
score = todouble(customDimensions["gen_ai.evaluation.score.value"]),
label = tostring(customDimensions["gen_ai.evaluation.score.label"]),
eval_source = tostring(customDimensions["microsoft.gen_ai.human_evaluation.source"]),
internal = parse_json(tostring(customDimensions["internal_properties"]))
| extend
eval_type = tostring(internal["gen_ai.evaluation.type"])
| where eval_source in ("builder", "end_user")
| summarize
total = count(),
pass_rate = round(countif(label == "pass") * 100.0 / count(), 1),
avg_score = round(avg(score), 2)
by eval_name, eval_type, bin(timestamp, 1h)
| order by timestamp desc