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


Как оцениваются качество, стоимость и задержка с помощью агентской оценки

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

Справочные сведения о каждом из встроенных судей LLM см. в разделе "Встроенные судьи ИИ".

Как качество оценивается судьями LLM

Оценка агентов оценивает качество с помощью судей LLM в два этапа.

  1. Судьи LLM оценивают конкретные аспекты качества (например, правильность и обоснованность) в каждой строке. Дополнительные сведения см. в шаге 1. Судьи LLM оценивают качество каждой строки.
  2. Оценка работы агентов объединяет оценки отдельных экспертов в общую оценку прохождения или сбоя и основную причину неисправностей. Дополнительные сведения см. в шаге 2. Объединение оценок судьи LLM для выявления первопричины проблем качества.

Для получения информации о доверии и безопасности судей LLM см. Сведения о моделях, управляющих судьями LLM.

Заметка

Для многоступенчатых разговоров судьи LLM оценивают только последнюю запись в беседе.

Шаг 1. Судьи LLM оценивают качество каждой строки

Для каждой входной строки оценка агента использует набор судей LLM для оценки различных аспектов качества выходных данных агента. Каждый судья создает оценку "да" или "нет" и письменное обоснование для этой оценки, как показано в следующем примере:

sample-judge-row

Дополнительные сведения об используемых судьях LLM см. в разделе "Встроенные судьи ИИ".

Шаг 2: Объедините оценки судей LLM, чтобы выявить коренную причину проблем качества.

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

Данные отображаются в пользовательском интерфейсе MLflow, а также доступны из запуска MLflow в кадре данных, возвращаемом вызовом mlflow.evaluate(...) . Ознакомьтесь с результатами оценки, чтобы узнать, как получить доступ к DataFrame.

На следующем снимке экрана показан пример сводного анализа в пользовательском интерфейсе:

Обзор анализа первопричин

Нажмите на запрос, чтобы просмотреть сведения:

Подробные сведения об анализе первопричин

встроенные ИИ судьи

Дополнительные сведения о встроенных судьях ИИ, предоставляемых системой оценки Mosaic AI Agent, см. в разделе .

На следующих снимках экрана показаны примеры отображения этих судей в пользовательском интерфейсе:

Подробные сведения о судье

Подробные сведения о релевантности блока

Как определяется первопричина

Если все судьи одобряют, качество считается pass. Если какой-либо судья не справился, причиной считается первый судья, который не справился в порядке, указанном в списке ниже. Это упорядочивание используется, так как оценки судьи часто коррелируются в причинно-следственном порядке. Например, если context_sufficiency оценивается, что средство извлечения не извлекло правильные фрагменты или документы для входного запроса, то, скорее всего, генератор не сможет синтезировать хороший ответ и, следовательно correctness , завершится ошибкой.

Если эталонные данные предоставлены как входные данные, используется следующий порядок:

  1. context_sufficiency
  2. groundedness
  3. correctness
  4. safety
  5. guideline_adherence (если предоставляются guidelines или global_guidelines)
  6. Любой судья LLM, определяемый клиентом

Если истинные данные не предоставлены в качестве исходных данных, используется следующий порядок:

  1. chunk_relevance - Есть ли по крайней мере 1 релевантный блок?
  2. groundedness
  3. relevant_to_query
  4. safety
  5. guideline_adherence (если предоставляются guidelines или global_guidelines)
  6. Любой судья LLM, определяемый клиентом

Как Databricks поддерживает и улучшает точность системы оценки LLM

Databricks посвящен повышению качества наших судей LLM. Качество оценивается путем измерения того, насколько хорошо судья LLM согласен с человеческими оценщиками, используя следующие показатели.

  • Увеличил Каппа Коэна (мера межэкспертного согласия).
  • Повышенная точность (процент прогнозируемых меток, соответствующих меткам, заданным человеком).
  • Повышена оценка F1.
  • Снижена ложноположительный показатель.
  • Снижение ложно отрицательной частоты.

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

Дополнительные сведения о том, как Databricks измеряет и непрерывно улучшает качество судей, см. в разделе Databricks объявляет значительные улучшения встроенных судей LLM в оценке агента.

вызов судей с помощью пакета SDK для Python

Пакет SDK databricks-agents включает API для непосредственного вызова судей на входные данные пользователей. Эти API можно использовать для быстрого и простого эксперимента, чтобы узнать, как работают судьи.

Выполните следующий код, чтобы установить databricks-agents пакет и перезапустить ядро Python:

%pip install databricks-agents -U
dbutils.library.restartPython()

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

from databricks.agents.evals import judges

SAMPLE_REQUEST = "What is MLflow?"
SAMPLE_RESPONSE = "MLflow is an open-source platform"
SAMPLE_RETRIEVED_CONTEXT = [
        {
            "content": "MLflow is an open-source platform, purpose-built to assist machine learning practitioners and teams in handling the complexities of the machine learning process. MLflow focuses on the full lifecycle for machine learning projects, ensuring that each phase is manageable, traceable, and reproducible."
        }
    ]
SAMPLE_EXPECTED_RESPONSE = "MLflow is an open-source platform, purpose-built to assist machine learning practitioners and teams in handling the complexities of the machine learning process. MLflow focuses on the full lifecycle for machine learning projects, ensuring that each phase is manageable, traceable, and reproducible."
# You can also just pass an array of guidelines directly to guidelines, but Databricks recommends naming them with a dictionary.
SAMPLE_GUIDELINES = {
    "english": ["The response must be in English", "The retrieved context must be in English"],
    "clarity": ["The response must be clear, coherent, and concise"],
}
SAMPLE_GUIDELINES_CONTEXT = {
  "retrieved_context": str(SAMPLE_RETRIEVED_CONTEXT)
}

# For chunk_relevance, the required inputs are `request`, `response` and `retrieved_context`.
judges.chunk_relevance(
  request=SAMPLE_REQUEST,
  response=SAMPLE_RESPONSE,
  retrieved_context=SAMPLE_RETRIEVED_CONTEXT,
)

# For context_sufficiency, the required inputs are `request`, `expected_response` and `retrieved_context`.
judges.context_sufficiency(
  request=SAMPLE_REQUEST,
  expected_response=SAMPLE_EXPECTED_RESPONSE,
  retrieved_context=SAMPLE_RETRIEVED_CONTEXT,
)

# For correctness, required inputs are `request`, `response` and `expected_response`.
judges.correctness(
  request=SAMPLE_REQUEST,
  response=SAMPLE_RESPONSE,
  expected_response=SAMPLE_EXPECTED_RESPONSE
)

# For relevance_to_query, the required inputs are `request` and `response`.
judges.relevance_to_query(
  request=SAMPLE_REQUEST,
  response=SAMPLE_RESPONSE,
)

# For groundedness, the required inputs are `request`, `response` and `retrieved_context`.
judges.groundedness(
  request=SAMPLE_REQUEST,
  response=SAMPLE_RESPONSE,
  retrieved_context=SAMPLE_RETRIEVED_CONTEXT,
)

# For guideline_adherence, the required inputs are `request`, `response` or `guidelines_context`, and `guidelines`.
judges.guideline_adherence(
  request=SAMPLE_REQUEST,
  response=SAMPLE_RESPONSE,
  guidelines=SAMPLE_GUIDELINES,
  # `guidelines_context` requires `databricks-agents>=0.20.0`. It can be specified with or in place of the response.
  guidelines_context=SAMPLE_GUIDELINES_CONTEXT,
)

# For safety, the required inputs are `request` and `response`.
judges.safety(
  request=SAMPLE_REQUEST,
  response=SAMPLE_RESPONSE,
)

Оценка затрат и задержки

Оценка агента измеряет количество токенов и задержку выполнения, чтобы помочь вам лучше понять производительность агента.

Стоимость токена

Чтобы оценить затраты, Агентская оценка вычисляет общее количество токенов во всех вызовах генерации LLM в процессе трассировки. Это приблизит общую стоимость, указанную как больше токенов, что обычно приводит к большей стоимости. Подсчет токенов выполняется только в том случае, если trace доступен. Если аргумент model включен в вызов mlflow.evaluate(), трассировка создается автоматически. Вы также можете напрямую указать столбец trace в наборе данных оценки.

Для каждой строки определяются следующие количества маркеров.

Поле данных Тип Описание
total_token_count integer Сумма всех маркеров ввода и вывода во всех диапазонах LLM в трассировке агента.
total_input_token_count integer Сумма всех входных маркеров во всех диапазонах LLM в трассировке агента.
total_output_token_count integer Сумма всех выходных токенов во всех диапазонах LLM в следе агента.

Задержка выполнения

Вычисляет задержку всего приложения в секундах для трассировки. Задержка вычисляется только при наличии трассировки. Если аргумент model включен в вызов mlflow.evaluate(), трассировка создается автоматически. Вы также можете напрямую указать столбец trace в наборе данных оценки.

Для каждой строки вычисляется следующее измерение задержки:

Имя Описание
latency_seconds Сквозная задержка на основе трассировки

Как метрики агрегируются на уровне запуска MLflow для качества, затрат и задержки

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

Оценка агента создает следующие метрики:

Имя метрики Тип Описание
retrieval/llm_judged/chunk_relevance/precision/average float, [0, 1] Среднее значение chunk_relevance/precision по всем вопросам.
retrieval/llm_judged/context_sufficiency/rating/percentage float, [0, 1] % вопросов, где context_sufficiency/rating оценен как yes.
response/llm_judged/correctness/rating/percentage float, [0, 1] % вопросов, где correctness/rating оценен как yes.
response/llm_judged/relevance_to_query/rating/percentage float, [0, 1] % вопросов, где relevance_to_query/rating оценивается как yes.
response/llm_judged/groundedness/rating/percentage float, [0, 1] % вопросов, где groundedness/rating оценен как yes.
response/llm_judged/guideline_adherence/rating/percentage float, [0, 1] % вопросов, где guideline_adherence/rating оценен как yes.
response/llm_judged/safety/rating/average float, [0, 1] % вопросов, где safety/rating оценено как yes.
agent/total_token_count/average int Среднее значение total_token_count по всем вопросам.
agent/input_token_count/average int Среднее значение input_token_count по всем вопросам.
agent/output_token_count/average int Среднее значение output_token_count по всем вопросам.
agent/latency_seconds/average float Среднее значение latency_seconds по всем вопросам.
response/llm_judged/{custom_response_judge_name}/rating/percentage float, [0, 1] % вопросов, где {custom_response_judge_name}/rating оценен как yes.
retrieval/llm_judged/{custom_retrieval_judge_name}/precision/average float, [0, 1] Среднее значение {custom_retrieval_judge_name}/precision по всем вопросам.

На следующих снимках экрана показано, как метрики отображаются в пользовательском интерфейсе:

метрики оценки, значения

метрики оценки, диаграммы

Сведения о моделях, которые могут использовать судьи LLM

  • Судьи LLM могут использовать сторонние службы для оценки приложений GenAI, включая Azure OpenAI, управляемых корпорацией Майкрософт.
  • Для Azure OpenAI Databricks отказался от мониторинга злоупотреблений, поэтому запросы или ответы не хранятся в Azure OpenAI.
  • Для рабочих областей Европейского союза (ЕС) судьи LLM используют модели, размещенные в ЕС. Все остальные регионы используют модели, размещенные в США.
  • Отключение вспомогательных функций на основе ИИ Azure запрещает судье LLM вызывать модели на основе Azure AI.
  • Данные, отправленные судье LLM, не используются при обучении модели.
  • Судьи LLM предназначены для того, чтобы помочь клиентам оценить свои приложения RAG, и выходные данные судьи LLM не должны использоваться для обучения, улучшения или точной настройки LLM.