Поделиться через


Мониторинг качества агента на рабочем трафике

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

В этой статье описывается, как отслеживать качество развернутых агентов на рабочем трафике с помощью оценки агента ИИ Мозаики.

Мониторинг через Интернет является важным аспектом обеспечения работы агента в режиме реального мира. Используя записную книжку, указанную ниже, можно непрерывно запускать оценку агента в запросах, обслуживаемых через конечную точку, обслуживаемую агентом. Записная книжка создает панель мониторинга, отображающую метрики качества, а также отзывы пользователей (отпечаток 👍 вверх или вниз 👎) для выходных данных агента в рабочих запросах. Эта обратная связь может поступать через приложение проверки от заинтересованных лиц или API обратной связи на рабочих конечных точках, что позволяет записывать реакции конечных пользователей. Панель мониторинга позволяет срезать метрики по разным измерениям, включая время, отзывы пользователей, состояние передачи и сбоя и раздел входного запроса (например, чтобы понять, связаны ли конкретные темы с более низким качеством выходных данных). Кроме того, вы можете более подробно изучить отдельные запросы с низким качеством ответов для дальнейшего их отладки. Все артефакты, такие как панель мониторинга, полностью настраиваются.

Панель мониторинга в Сети

Требования

  • Вспомогательные функции ИИ на основе ИИ Azure должны быть включены для рабочей области.
  • Включение tables инференса необходимо на конечной точке, которая обслуживает агента.

Непрерывная обработка рабочего трафика с помощью оценки агента

В следующем примере записной книжки показано, как запустить оценку агента в журналах запросов из конечной точки обслуживания агента. Чтобы запустить записную книжку, выполните следующие действия.

  • Импортируйте записную книжку в рабочую область (инструкции). Нажмите кнопку "Копировать ссылку для импорта", чтобы get URL-адрес импорта.
  • Заполните необходимое значение parameters в верхней части импортированного блокнота.
    • Имя конечной точки обслуживания развернутого агента.
    • Частота выборки от 0.0 до 1.0 до выборки запросов. Используйте более низкую скорость для конечных точек с большим количеством трафика.
    • (Необязательно) Папка рабочей области для хранения созданных артефактов (например, панелей мониторинга). По умолчанию используется домашняя папка.
    • (Необязательно) list тем для классификации входных запросов. По умолчанию используется list, состоящий из одного универсального раздела.
  • Нажмите кнопку "Запустить все " в импортированной записной книжке. Это позволит сделать предварительную обработку производственных журналов в течение 30-дневного периода window и запустить панель мониторинга, которая суммирует метрики качества.
  • Щелкните "Расписание ", чтобы создать задание для периодического запуска записной книжки. Задание будет постепенно обрабатывать рабочие журналы и обновлять панель мониторинга.

Записная книжка требует бессерверных вычислений или кластера под управлением Databricks Runtime 15.2 или более поздней версии. При непрерывном мониторинге рабочего трафика на конечных точках с большим количеством запросов рекомендуется задать более частое расписание. Например, почасовое расписание будет хорошо работать для конечной точки с более чем 10000 запросов в час и 10 % частоты выборки.

Запуск оценки агента в рабочей записной книжке трафика

Get записная книжка

Обеспечение соблюдения правил ответов агента

Судья соответствия рекомендациям гарантирует, что выходные данные вашей модели соответствуют указанным рекомендациям. Эти глобальные рекомендации можно написать, как показано в записной книжке, приведенной выше или следующим образом:

mlflow.evaluate(
    ...,
    evaluator_config={
        "databricks-agent": {
            "global_guidelines": [
                "The response must be in English",
                "The response must be clear, coherent, and concise",
            ],
        }
    }
)

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

Создание оповещений о метриках оценки

После периодического запуска записной книжки вы можете добавлять оповещения, чтобы получать уведомления при снижении уровня метрик качества, чем ожидалось. Эти оповещения создаются и используются так же, как и другие оповещения Databricks SQL. Сначала создайте запрос Databricks SQL в журнале запросов на оценку, созданный примером записной книжки table. В следующем коде показан пример запроса по запросам оценки table, фильтрация запросов из последнего часа:

SELECT
  `date`,
  AVG(pass_indicator) as avg_pass_rate
FROM (
  SELECT
    *,
    CASE
      WHEN `response/overall_assessment/rating` = 'yes' THEN 1
      WHEN `response/overall_assessment/rating` = 'no' THEN 0
      ELSE NULL
    END AS pass_indicator
  -- The eval requests log table is generated by the example notebook
  FROM {eval_requests_log_table_name}
  WHERE `date` >= CURRENT_TIMESTAMP() - INTERVAL 1 DAY
)
GROUP BY ALL

Затем создайте оповещение Databricks SQL для оценки запроса с требуемой частотой и отправьте уведомление, если оповещение активируется. На следующем рисунке показан пример конфигурации для отправки оповещения, когда общая скорость передачи ниже 80 %.

Конфигурация оповещения о мониторинге в Сети

По умолчанию отправляется уведомление по электронной почте. Вы также можете set веб-перехватчик или отправить уведомления другим приложениям, таким как Slack или PagerDuty.

Добавление выбранных рабочих журналов в приложение проверки для проверки человека

По мере того как пользователи предоставляют отзывы о ваших запросах, вам может потребоваться запросить экспертов по темам, чтобы просмотреть запросы с отрицательными отзывами (запросы с большими пальцами в ответе или извлечение). Для этого вы добавите в приложение проверки определенные журналы, чтобы запросить экспертную проверку.

В следующем коде показан пример запроса по журналу оценок table для извлечения самой последней оценки человека для каждого идентификатора запроса и идентификатора источника.

with ranked_logs as (
  select
      `timestamp`,
      request_id,
      source.id as source_id,
      text_assessment.ratings["answer_correct"]["value"] as text_rating,
      retrieval_assessment.ratings["answer_correct"]["value"] as retrieval_rating,
      retrieval_assessment.position as retrieval_position,
      row_number() over (
        partition by request_id, source.id, retrieval_assessment.position order by `timestamp` desc
      ) as rank
  from {assessment_log_table_name}
)
select
    request_id,
    source_id,
    text_rating,
    retrieval_rating
from ranked_logs
where rank = 1
order by `timestamp` desc

В следующем коде замените ... строку human_ratings_query = "..." запросом, аналогичным приведенному выше. Затем следующий код извлекает запросы с отрицательными отзывами и добавляет их в приложение проверки:

from databricks import agents

human_ratings_query = "..."
human_ratings_df = spark.sql(human_ratings_query).toPandas()

# Filter out the positive ratings, leaving only negative and "IDK" ratings
negative_ratings_df = human_ratings_df[
  (human_ratings_df["text_rating"] != "positive") | (human_ratings_df["retrieval_rating"] != "positive")
]
negative_ratings_request_ids = negative_ratings_df["request_id"].drop_duplicates().to_list()

agents.enable_trace_reviews(
  model_name=YOUR_MODEL_NAME,
  request_ids=negative_ratings_request_ids,
)

Дополнительные сведения о приложении для обзора см. в Get отзыве о качестве агентного приложения.