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 monitoramento no MLflow 3, consulte Avalie e monitore 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 obter informação sobre MLflow 3 neste tópico, consulte Avaliar e monitorar agentes de AI.
Este artigo oferece uma visão geral de como trabalhar com Agent Evaluation, com base no MLflow 2.
Como usar o Agent Evaluation?
O código a seguir mostra como chamar e testar o Agent Evaluation em saídas geradas anteriormente. Retorna um dataframe com pontuações de avaliação calculadas por juízes LLM que fazem parte do Agent Evaluation. Consulte Notebooks de exemplo para um notebook de início rápido contendo código semelhante que você pode executar em seu workspace do Databricks.
É possível copiar e colar o seguinte em seu Notebook Databricks existente:
%pip install mlflow==2.21.0 databricks-agents==0.16.0
dbutils.library.restartPython()
import mlflow
import pandas as pd
examples = {
"request": [
{
# Recommended `messages` format
"messages": [{
"role": "user",
"content": "Spark is a data analytics framework."
}],
},
# SplitChatMessagesRequest format
{
"query": "How do I convert a Spark DataFrame to Pandas?",
"history": [
{"role": "user", "content": "What is Spark?"},
{"role": "assistant", "content": "Spark is a data processing engine."},
],
}
# Note: Using a primitive string is discouraged. The string will be wrapped in the
# OpenAI messages format before being passed to your agent.
],
"response": [
"Spark is a data analytics framework.",
"This is not possible as Spark is not a panda.",
],
"retrieved_context": [ # Optional, needed for judging groundedness.
[{"doc_uri": "doc1.txt", "content": "In 2013, Spark, a data analytics framework, was open sourced by UC Berkeley's AMPLab."}],
[{"doc_uri": "doc2.txt", "content": "To convert a Spark DataFrame to Pandas, you can use toPandas()"}],
],
"expected_response": [ # Optional, needed for judging correctness.
"Spark is a data analytics framework.",
"To convert a Spark DataFrame to Pandas, you can use the toPandas() method.",
]
}
global_guidelines = {
"english": ["The response must be in English"],
"clarity": ["The response must be clear, coherent, and concise"],
}
result = mlflow.evaluate(
data=pd.DataFrame(examples), # Your evaluation set
# model=logged_model.model_uri, # If you have an MLFlow model. `retrieved_context` and `response` will be obtained from calling the model.
model_type="databricks-agent", # Enable Agent Evaluation
evaluator_config={
"databricks-agent": {"global_guidelines": global_guidelines}
}
)
# Review the evaluation results in the MLFLow UI (see console output), or access them in place:
display(result.tables['eval_results'])
Entradas e saídas do Agent Evaluation
Entradas
Para detalhes sobre a entrada esperada para Agent Evaluation, incluindo nomes de campo e tipos de dados, consulte o esquema de entrada. Alguns dos campos são os seguintes:
- Consulta do usuário (
request): Entrada para o agente (pergunta ou consulta do usuário). Por exemplo, “O que é RAG?”. - **Resposta do Agente
response():** Resposta gerada pelo agente. Por exemplo, "Geração aumentada de recuperação é...". - Resposta esperada (
expected_response): (Opcional) Uma resposta de verdade fundamental (correta). - Rastreamento do MLflow (
trace): (Opcional) O rastreamento do MLflow do agente, do qual o Agent Evaluation extrai saídas intermediárias, como o contexto recuperado ou as chamadas de ferramentas. Como alternativa, você pode fornecer essas saídas intermediárias diretamente. - Diretrizes (
guidelines): (Opcional) Uma lista de diretrizes ou diretrizes nomeadas às quais se espera que a saída do modelo adira.
Saídas
Com base nessas entradas, Agent Evaluation produz dois tipos de saídas:
-
**Resultados da Avaliação (por linha):** Para cada linha fornecida como entrada, o Agent Evaluation produz uma linha de saída correspondente que contém uma avaliação detalhada da qualidade, custo e latência do seu agente.
-
Os avaliadores de LLM verificam diferentes aspectos de qualidade, como correção ou fundamentação, produzindo uma pontuação de sim/não e um raciocínio por escrito para essa pontuação. Para detalhes, consulte Como a qualidade, o custo e a latência são avaliados pelo Agent Evaluation (MLflow 2).
-
As avaliações dos juízes de LLM são combinadas para produzir uma pontuação geral que indica se aquela linha “passa” (é de alta qualidade) ou “falha” (tem um problema de qualidade).
- Para quaisquer linhas com erro, uma causa raiz é identificada. Cada causa raiz corresponde a uma avaliação específica do juiz do LLM, permitindo o uso da justificativa do juiz para identificar possíveis correções.
-
O custo e a latência são extraídos do rastreamento do MLflow. Para obter detalhes, consulte Como o custo e a latência são avaliados.
-
-
**Métricas (pontuações agregadas):** Pontuações agregadas que resumem a qualidade, o custo e a latência do seu agente em todas as linhas de entrada. Isso inclui métricas, como a porcentagem de respostas corretas, a contagem média de tokens, a latência média e muito mais. Para obter detalhes, consulte Como o custo e a latência são avaliados e Como as métricas são agregadas no nível de uma execução do MLflow para qualidade, custo e latência.
Desenvolvimento (avaliação offline) e Produção (monitoramento online)
O Agent Evaluation é projetado para ser consistente entre os ambientes de desenvolvimento (offline) e produção (online). Este design permite uma transição suave do desenvolvimento à produção, possibilitando iterar, avaliar, implantado e monitorar rapidamente aplicativos de agente de alta qualidade.
A principal diferença entre desenvolvimento e produção é que, em produção, não há rótulos de ground-truth, enquanto em desenvolvimento, você pode, opcionalmente, usar rótulos de ground-truth. O uso de rótulos de ground-truth permite que a Agent Evaluation compute métricas de qualidade adicionais.
Desenvolvimento (offline)
No desenvolvimento, seus requests e expected_responses vêm de um conjunto de avaliação . Um conjunto de avaliação é uma coleção de entradas representativas que seu agente deve ser capaz de processar com precisão. Para obter mais informações sobre conjuntos de avaliação, consulte Conjuntos de avaliação (MLflow 2).
Para obter response e trace, o Agent Evaluation pode chamar o código do seu agente para gerar essas saídas para cada linha no conjunto de avaliação. Alternativamente, é possível gerar essas saídas por conta própria e passá-las para o Agent Evaluation. Consulte Como fornecer entrada para uma execução de avaliação para obter mais informações.
Produção (online)
Para obter informações sobre monitoramento em produção, consulte Monitore aplicativos GenAI em produção. Este recurso MLflow 3 é compatível com experimentos MLflow 2. Para habilitar o monitoramento no experimento MLflow 2, use o SDK MLflow 3, instalando mlflow>=3.1.
Estabeleça um parâmetro de qualidade com um conjunto de avaliação
Para medir a qualidade de um aplicativo de AI em desenvolvimento (offline), é necessário definir um conjunto de avaliação, ou seja, um conjunto de perguntas representativas e respostas opcionais de verdade fundamental. Se o aplicativo envolver o passo de recuperação, como em fluxos de trabalho RAG, então é possível fornecer opcionalmente documentos de apoio nos quais se espera que a resposta seja baseada.
- Para obter detalhes sobre conjuntos de avaliação, incluindo dependências de métricas e práticas recomendadas, consulte Conjuntos de avaliação (MLflow 2).
- Para o esquema obrigatório, consulte esquema de entrada do Agent Evaluation (MLflow 2).
- Para obter informações sobre como gerar sinteticamente um conjunto de avaliação de alta qualidade, consulte Sintetizar conjuntos de avaliação.
Execuções de avaliação
Para obter detalhes sobre como executar uma avaliação, consulte Execute uma avaliação e visualize os resultados (MLflow 2). Agent Evaluation oferece suporte a duas opções para fornecer saída da cadeia:
- Você pode executar o aplicativo como parte da execução da avaliação. O aplicativo gera resultados para cada entrada no conjunto de avaliação.
- Você pode fornecer a saída de uma execução anterior do aplicativo.
Para detalhes e explicações sobre quando usar cada opção, consulte Fornecer informações para uma execução de avaliação.
Obtenha feedback humano sobre a qualidade de um aplicativo de AI generativa
O aplicativo de revisão Databricks facilita a coleta de feedback sobre a qualidade de um aplicativo de AI de revisores humanos. Para detalhes, consulte Use o aplicativo de revisão para análises humanas de um aplicativo de AI generativa (MLflow 2).
Disponibilidade Geo de Agent Evaluation
Agent Evaluation é um Serviço Designado que usa Geos para gerenciar a residência de dados ao processar o conteúdo do cliente. Para saber mais sobre a disponibilidade do Agent Evaluation em diferentes áreas geográficas, consulte Serviços Designados do Databricks.
preços
Para obter informações sobre preços, consulte Preços do Agent Evaluation.
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.
Notebook de exemplo
Os Notebook a seguir ilustram como usar o Agent Evaluation.