Compartilhar via


Como monitorar a qualidade do seu agente no tráfego de produção

Importante

Esse recurso está em uma versão prévia.

Este artigo descreve como monitorar a qualidade dos agentes implantados no tráfego de produção usando a Avaliação do Agente do Mosaic AI.

O monitoramento on-line é um aspecto crucial para garantir que seu agente esteja trabalhando conforme o esperado com solicitações do mundo real. Usando o notebook fornecido abaixo, você pode executar a Avaliação do Agente continuamente nas solicitações atendidas por meio de um endpoint de atendimento ao agente. O notebook gera um painel que exibe métricas de qualidade, bem como comentários do usuário (polegar para cima 👍 ou polegar para baixo 👎) para as saídas do agente em solicitações de produção. Esses comentários podem chegar por meio do aplicativo de revisão das partes interessadas ou da API de comentários em endpoints de produção que permite capturar as reações do usuário final. O painel permite que você divida as métricas por diferentes dimensões, incluindo por tempo, feedback do usuário, status de aprovação/reprovação e tópico da solicitação de entrada (por exemplo, para entender se tópicos específicos estão correlacionados com saídas de qualidade inferior). Além disso, você pode se aprofundar em solicitações individuais com respostas de baixa qualidade para depurá-las ainda mais. Todos os artefatos, como o painel, são totalmente personalizáveis.

Painel de monitoramento online

Requisitos

Processe continuamente o tráfego de produção por meio da Avaliação do Agente

O notebook de exemplo a seguir ilustra como executar a Avaliação do Agente nos logs de solicitação de um ponto de extremidade de serviço do agente. Para executar o notebook, siga estas etapas:

  • Importe o bloco de anotações em seu espaço de trabalho (instruções). Você pode clicar no botão "Copiar link para importação" abaixo para obter um URL para a importação.
  • Preencha os parâmetros necessários na parte superior do caderno importado.
    • O nome do ponto de extremidade de serviço do agente implantado.
    • Uma taxa de amostragem entre 0,0 e 1,0 para solicitações de amostragem. Use uma taxa mais baixa para endpoints com grandes quantidades de tráfego.
    • (Opcional) Uma pasta de espaço de trabalho para armazenar artefatos gerados (como painéis). O padrão é a pasta pessoal.
    • (Opcional) Uma lista de tópicos para categorizar as solicitações de entrada. O padrão é uma lista que consiste em um único tópico abrangente.
  • Clique em Executar tudo no bloco de anotações importado. Isso fará um processamento inicial de seus logs de produção dentro de uma janela de 30 dias e inicializará o painel que resume as métricas de qualidade.
  • Clique em Agendar para criar um trabalho para executar o notebook periodicamente. O trabalho processará incrementalmente seus logs de produção e manterá o painel atualizado.

O notebook requer computação sem servidor ou um cluster que executa o Databricks Runtime 15.2 ou superior. Ao monitorar continuamente o tráfego de produção em endpoints com um grande número de solicitações, recomendamos definir um agendamento mais frequente. Por exemplo, uma programação por hora funcionaria bem para um endpoint com mais de 10.000 solicitações por hora e uma taxa de amostragem de 10%.

Executar Avaliação do Agente no notebook de tráfego de produção

Obter notebook

Criar alertas sobre métricas de avaliação

Depois de agendar o notebook para ser executado periodicamente, você pode adicionar alertas para ser notificado quando as métricas de qualidade caírem abaixo do esperado. Esses alertas são criados e usados da mesma forma que outros alertas SQL do Databricks. Primeiro, crie uma consulta SQL do Databricks na tabela de log de solicitações de avaliação gerada pelo notebook de exemplo. O código a seguir mostra um exemplo de consulta na tabela de solicitações de avaliação, filtrando solicitações da última hora:

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

Em seguida, crie um alerta SQL do Databricks para avaliar a consulta em uma frequência desejada e envie uma notificação se o alerta for disparado. A imagem a seguir mostra um exemplo de configuração para enviar um alerta quando a taxa de aprovação geral cair abaixo de 80%.

Configuração de alerta de monitoramento online

Por padrão, uma notificação por e-mail é enviada. Você também pode configurar um webhook ou enviar notificações para outros aplicativos, como Slack ou PagerDuty.

Adicionar logs de produção selecionados ao aplicativo de revisão para revisão humana

À medida que os usuários fornecem comentários sobre suas solicitações, você pode solicitar que especialistas no assunto analisem as solicitações com comentários negativos (solicitações com polegares para baixo na resposta ou recuperações). Para fazer isso, adicione logs específicos ao aplicativo de revisão para solicitar revisão especializada.

O código a seguir mostra um exemplo de consulta na tabela de log de avaliação para recuperar a avaliação humana mais recente por ID de solicitação e ID de origem:

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

No código a seguir, substitua ... na linha human_ratings_query = "..." por uma consulta semelhante à acima. O código a seguir extrai solicitações com comentários negativos e as adiciona ao aplicativo de revisão:

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,
)

Para obter mais detalhes sobre o aplicativo de revisão, consulte Obter comentários sobre a qualidade de um aplicativo agente.