Como a qualidade, o custo e a latência são avaliados por Agent Evaluation (MLflow 2)
A Databricks recomenda usar o MLflow 3 para a avaliação e monitoramento de aplicativos GenAI. Esta página descreve o MLflow 2 Agent Evaluation.
- Para uma introdução à avaliação e ao monitoramento no MLflow 3, consulte Avaliar e monitorar agentes de AI.
- Para obter informações sobre como migrar para o MLflow 3, consulte Migrar para o MLflow 3 a partir da Agent Evaluation.
- Para informações sobre o MLflow 3 sobre este tópico, consulte Avaliadores personalizados.
Este artigo explica como o Agent Evaluation avalia a qualidade, o custo e a latência do seu aplicativo de AI e fornece percepções para guia suas melhorias de qualidade e otimizações de custo e latência. Abrange o seguinte:
- Como a qualidade é avaliada por juízes de LLM.
- Como o custo e a latência são avaliados.
- Como as métricas são agregadas no nível de uma execução do MLflow para qualidade, custo e latência.
Para informações de referência sobre cada um dos juízes LLM integrados, consulte Juízes de AI integrados (MLflow 2).
Como a qualidade é avaliada por juízes LLM
Agent Evaluation avalia a qualidade usando juízes LLM em dois os passos:
- Juízes LLM avaliam aspectos de qualidade específicos (como correção e fundamentação) para cada linha. Para obter detalhes, consulte o passo 1: juízes LLM avaliam a qualidade de cada linha.
- A Agent Evaluation combina as avaliações de juízes individuais em uma pontuação geral de aprovação/reprovação e causa raiz para quaisquer falhas. Para obter detalhes, consulte O passo 2: Combine as avaliações do juiz LLM para identificar a causa raiz de problemas de qualidade.
Para obter informações de confiança e segurança do juiz LLM, consulte Informações sobre os modelos que impulsionam os juízes LLM.
Em conversas de vários turnos, os juízes LLM avaliam apenas a última entrada na conversa.
O passo 1: os juízes LLM avaliam a qualidade de cada linha
Para cada linha de entrada, Agent Evaluation usa um conjunto de juízes LLM para avaliar diferentes aspectos de qualidade sobre as saídas do agente. Cada juiz produz uma pontuação de sim ou não e uma justificativa escrita para essa pontuação, conforme mostrado no exemplo abaixo:

Para detalhes sobre os juízes LLM usados, consulte juízes de AI integrados.
O passo 2: Combine as avaliações do juiz LLM para identificar a causa raiz dos problemas de qualidade
Após executar juízes LLM, o Agent Evaluation analisa suas saídas para avaliar a qualidade geral e determinar uma pontuação de qualidade de aprovação/reprovação nas avaliações coletivas do juiz. Se a qualidade geral falhar, o Agent Evaluation identifica qual juiz LLM específico causou a falha e fornece correções sugeridas.
Os dados são mostrados na IU do MLflow e também estão disponíveis na execução do MLflow em um DataFrame retornado pela chamada mlflow.evaluate(...). Consulte revisar a saída da avaliação para obter detalhes sobre como acessar o DataFrame.
A captura de tela a seguir é um exemplo de uma análise de resumo na IU:

Clique em uma solicitação para ver os detalhes:

Juízes de AI integrados
Consulte Juízes de AI integrados (MLflow 2) para obter detalhes sobre os Juízes de AI integrados fornecidos pela Agent Evaluation.
As seguintes capturas de tela mostram exemplos de como esses juízes aparecem na interface do usuário:


Como a causa raiz é determinada
Se todos os juízes passarem, a qualidade será considerada pass. Se algum juiz falhar, a causa raiz será determinada como o primeiro juiz a falhar com base na lista ordenada abaixo. Essa ordenação é usada porque as avaliações dos juízes geralmente estão correlacionadas de forma causal. Por exemplo, se context_sufficiency avaliar que o recuperador não buscou os trechos ou documentos corretos para a solicitação de entrada, é provável que o gerador não consiga sintetizar uma boa resposta e, portanto, correctness também falhará.
Se a verdade fundamental for fornecida como entrada, a seguinte ordem é usada:
context_sufficiencygroundednesscorrectnesssafetyguideline_adherence(seguidelinesouglobal_guidelinesforem fornecidos)- Qualquer juiz LLM definido pelo cliente
Se a verdade fundamental não for fornecida como entrada, a seguinte ordem é usada:
chunk_relevance- há pelo menos 1 fragmento relevante?groundednessrelevant_to_querysafetyguideline_adherence(seguidelinesouglobal_guidelinesforem fornecidos)- Qualquer juiz LLM definido pelo cliente
Como a Databricks mantém e aprimora a precisão do juiz LLM
A Databricks dedica-se a aprimorar a qualidade dos nossos juízes de LLM. A qualidade é avaliada medindo o quão bem o juiz de LLM concorda com os avaliadores humanos, usando as seguintes métricas:
- Aumento do Kappa de Cohen (uma medida de concordância entre avaliadores).
- Maior precisão (percentual de rótulos previstos que correspondem ao rótulo do avaliador humano).
- Pontuação F1 aumentada.
- Taxa de falsos positivos diminuída.
- Taxa de falso negativo reduzida.
Para medir essas métricas, a Databricks usa exemplos diversos e desafiadores de datasets acadêmicos e proprietários que são representativos dos datasets de clientes para comparar e aprimorar os juízes em relação às abordagens de juízes de LLM de última geração, garantindo melhoria contínua e alta precisão.
Para mais detalhes sobre como a Databricks mede e melhora continuamente a qualidade dos juízes, consulte A Databricks anuncia melhorias significativas nos juízes de LLM integrados na Agent Evaluation.
Chame os juízes usando o SDK Python
O SDK databricks-agents inclui APIs para invocar diretamente juízes nas entradas do usuário. É possível usar estas APIs para um experimento rápido e fácil para ver como os juízes funcionam.
Execute o código a seguir para instalar o pacote databricks-agents e reiniciar o kernel Python:
%pip install databricks-agents==0.16.0 -U
dbutils.library.restartPython()
Você pode então executar o seguinte código em seu notebook e editá-lo conforme necessário para testar os diferentes juízes em suas próprias entradas.
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,
)
Como o custo e a latência são avaliados
O Agent Evaluation mede as contagens de tokens e a latência de execução para ajudar a entender o desempenho do seu agente.
Custo do tokens
Para avaliar o custo, o Agent Evaluation calcula a contagem total de tokens em todas as chamadas de geração de LLM no rastreamento. Isso aproxima o custo total dado como mais tokens, o que geralmente leva a mais custo. A contagem de tokens é calculada apenas quando um(a) trace está disponível. Se o argumento model for incluído na chamada para mlflow.evaluate(), um rastreamento é gerado automaticamente. Você também pode fornecer diretamente uma coluna trace no dataset de avaliação.
As seguintes contagens de tokens são calculadas para cada linha:
Campo de dados | Tipo | Descrição |
|---|---|---|
|
| Soma de todos os tokens de entrada e saída em todos os spans de LLM no rastreamento do agente. |
|
| Soma de todos os tokens de entrada em todas as extensões de LLM no rastreamento do agente. |
|
| Soma de todos os tokens de saída em todos os intervalos LLM no rastreamento do agente. |
Latência de execução
Compute toda a latência do aplicativo em segundos para o rastreamento. A latência é calculada somente quando um rastreamento está disponível. Se o argumento model for incluído na chamada para mlflow.evaluate(), um rastreamento será gerado automaticamente. Você também pode fornecer diretamente uma coluna trace no dataset de avaliação.
A seguinte medição de latência é calculada para cada linha:
Nome | Descrição |
|---|---|
| Latência de ponta a ponta com base no rastreamento |
Como as métricas são agregadas no nível de uma execução do MLflow para qualidade, custo e latência
Após calcular todas as avaliações de qualidade, custo e latência por linha, o Agent Evaluation agrega essas avaliações em métricas por execução que são registradas em uma execução do MLflow e resumem a qualidade, o custo e a latência do seu agente em todas as linhas de entrada.
Agent Evaluation produz as seguintes métricas:
Nome da métrica | Tipo | Descrição |
|---|---|---|
|
| Valor médio de |
|
| Porcentagem de perguntas onde |
|
| Porcentagem de perguntas onde |
|
| % das perguntas em que |
|
| Porcentagem de perguntas onde |
|
| Porcentagem de perguntas onde |
|
| % de perguntas em que |
|
| Valor médio de |
|
| Valor médio de |
|
| Valor médio de |
|
| Valor médio de |
|
| Porcentagem de perguntas onde |
|
| Valor médio de |
As capturas de tela a seguir mostram como as métricas aparecem na UI:


Informações sobre os modelos que capacitam os juízes do LLM
- Os juízes do LLM podem utilizar serviços de terceiros para avaliar suas aplicações GenAI, incluindo o Azure OpenAI operado pela Microsoft.
- Para o Azure OpenAI, a Databricks optou por não utilizar o Abuse Monitoring, portanto nenhum prompt ou resposta é armazenado com o Azure OpenAI.
- Para os espaços de trabalho da União Europeia (UE), os juízes do LLM utilizam modelos hospedados na UE. Todas as outras regiões utilizam modelos hospedados nos EUA.
- Desativar os recursos de IA desenvolvidos por parceiros impede que o juiz do LLM ligue para modelos desenvolvidos por parceiros. Ainda é possível usar juízes LLM fornecendo seu próprio modelo.
- Os juízes de LLM destinam-se a ajudar os clientes a avaliar seus agentes/aplicativos de GenAI, e as saídas dos juízes de LLM não devem ser usadas para ensinar, melhorar ou ajustar um LLM.