Pular para o conteúdo principal

Como monitorar seu aplicativo gen AI

info

Beta

Esse recurso está na versão beta.

Esta página descreve como monitorar aplicativos generativos AI implantados usando a estrutura do agente Mosaic AI.

Databricks O monitoramento gen AI ajuda o senhor a rastrear métricas operacionais, como volume, latência, erros e custo, bem como métricas de qualidade, como correção e adesão às diretrizes, usando os juízes doMosaic AI Agent Evaluation AI.

monitoramento UI Hero

Requisitos

Python
%pip install databricks-agents>=0.17.0
dbutils.library.restartPython()
  • O trabalho sem servidor deve estar ativado.
  • LLM As métricas do juiz exigem que AI o recurso assistivo seja ativado. Outras métricas, como a latência, são suportadas independentemente dessa configuração.

Limitações

important
  • Os rastreamentos podem levar até 2 horas para ficarem disponíveis na interface do usuário de monitoramento.
  • As métricas de qualidade podem levar mais 30 minutos para serem acessadas em compute depois que o rastreamento aparecer na UI de monitoramento.

Para obter mais detalhes, consulte Monitorar a execução e programar.

Se o senhor precisar de uma latência menor, entre em contato com o representante Databricks account .

Configurar o monitoramento

O monitoramento de agentes oferece suporte a agentes implantados usando o Mosaic AI Agent Framework.

Estrutura de agentes

Quando o senhor implanta agentes criados com ChatAgent ou ChatModel usando agents.deploy, o monitoramento básico é configurado automaticamente. Isso inclui:

  • Solicitar acompanhamento de volume
  • Latência métrica
  • Registro de erros

Esse monitoramento automático não inclui métricas de avaliação específicas, como adesão às diretrizes ou segurança, mas fornece telemetria essencial para rastrear o uso e o desempenho do seu agente.

dica

Para incluir o feedback do usuário final 👍 / 👎 no seu monitor, consulte Fornecer feedback sobre um agente implantado (experimental) para obter instruções sobre como anexar feedback à sua tabela de inferência.

Configurar métricas de monitoramento de agentes

Para adicionar métricas de avaliação ao monitoramento automático, use o método update_monitor:

important

Um monitor deve ser conectado a um MLflow Experiment. Cada experimento pode ter apenas um monitor conectado (para um único endpoint). Em default, update_monitor e create_monitor usam o experimento MLflow do Notebook. Para substituir esse comportamento e selecionar um experimento diferente, use o parâmetro experiment_id.

Python
from databricks.agents.evals.monitors import update_monitor

monitor = update_monitor(
endpoint_name = "model-serving-endpoint-name",
monitoring_config = {
"sample": 0.01, # Sample 1% of requests
"metrics": ['guideline_adherence', 'groundedness', 'safety', 'relevance_to_query'],
"global_guidelines": {
"english": ["The response must be in English"],
"clarity": ["The response must be clear, coherent, and concise"],
}
}
)

Para agentes não implantados com o monitoramento automático, o senhor pode configurar o monitoramento com o método create_monitor:

Python
from databricks.agents.evals.monitors import create_monitor

monitor = create_monitor(
endpoint_name = "model-serving-endpoint-name",
monitoring_config = {
"sample": 0.01, # Sample 1% of requests
"metrics": ['guideline_adherence', 'groundedness', 'safety', 'relevance_to_query'],
"global_guidelines": {
"english": ["The response must be in English"],
"clarity": ["The response must be clear, coherent, and concise"],
}
}
)

Ambos os métodos usam as seguintes entradas:

  • endpoint_name: str - Nome do modelo de serviço endpoint a ser monitorado.

  • monitoring_config: dict - Configuração para o monitor. Os seguintes parâmetros são suportados:

    • sample: float - A fração de solicitações a serem avaliadas (entre 0 e 1).
    • metrics: list[str] - Lista de métricas a serem avaliadas. As métricas compatíveis são guideline_adherence, groundedness, safety, relevance_to_query e chunk_relevance. Para obter mais informações sobre essas métricas, consulte integrada AI judges.
    • [Optional] global_guidelines: dict[str, list[str]] - Diretrizes globais para avaliar as respostas dos agentes. Consulte Adesão às diretrizes.
    • [Optional] paused: str - PAUSED ou UNPAUSED.
  • [Optional] experiment_id: O experimento MLflow em que os resultados do monitor serão exibidos. Se não for especificado, o monitor usará o mesmo experimento em que o agente foi originalmente registrado.

O senhor verá um link para a UI de monitoramento na saída da célula. Os resultados da avaliação podem ser visualizados nessa UI e são armazenados em monitor.evaluated_traces_table. Para view linhas avaliadas, execução:

Python
display(spark.table(monitor.evaluated_traces_table).filter("evaluation_status != 'skipped'"))

Tabela de traços avaliados

Os resultados da avaliação são armazenados na tabela de rastreamentos avaliados, que tem o seguinte esquema:

Nome da coluna

Tipo de coluna

Exemplo

Descrição

databricks_request_id

String

“a215652c-0464-49eb-8138-fc190b9c5b25”

O identificador de solicitação gerado pelo Databricks que também é armazenado na tabela de inferência

Data

Data

“2024-12-16”

Data da solicitação

código_de_status

INT

200

O código de status HTTP que foi retornado do modelo

tempo_execução_ms

Long

1239

O tempo de execução do agente, em milissegundos. Isso não inclui latências de rede aérea e representa apenas o tempo necessário para a invocação do agente.

carimbo de data/hora

Timestamp

2024-12-16T 03:36:42.270 + 00:00

Carimbo de data/hora em que a solicitação foi recebida

timestamp de avaliação

Timestamp

2024-12-16T 05:00:15.220 + 00:00

Carimbo de data e hora em que o monitor avaliou essa solicitação

trace

String

{“info”: {“request_id”:” a215652c-0464-49eb-8138-fc190b9c5b25”,” experiment_id”:...},...}

Rastreamento do MLflow para essa solicitação

solicitação

String

"O que é Mosaic AI Agent Evaluation?"

Solicitação do usuário ao agente

request_raw

String

{"messages": [{"role": "user", "content": "What is Mosaic AI Agent Evaluation?"}]}

Solicitação bruta do usuário ao agente, seguindo o esquema de conclusão de bate-papo do OpenAI

resposta

String

"Mosaic AI A avaliação de agentes ajuda os desenvolvedores a avaliar a qualidade, o custo e a latência dos aplicativos AI autênticos".

Resposta do agente

status_de_avaliação

String

“processado”

“processado” se a linha foi amostrada. “ignorado” se a linha não foi amostrada. "to_process" se o Job de monitoramento ainda não tiver avaliado a linha.

As colunas abaixo variam de acordo com as métricas que estão sendo executadas pelo seu monitor. Cada métrica terá uma classificação e uma coluna de justificativa:

Nome da coluna

Tipo de coluna

Exemplo

Descrição

resposta/llm_judged/segurança/classificação

String

“sim”

Avaliação de segurança julgada pelo LLM

resposta/llm_judged/segurança/justificativa

String

“Nenhum conteúdo prejudicial detectado em resposta”

Justificativa do LLM para a avaliação

visualizar resultados do monitoramento

Antes de visualizar os resultados do monitoramento, o senhor deve ter o seguinte:

  • Acesso a um site em execução SQL warehouse. Caso contrário, crie um.
  • Um monitor que o senhor criou seguindo as instruções em Configurar monitoramento.

Depois que esses pré-requisitos forem atendidos, o senhor poderá acessar view uma página que resume os resultados gerados por um monitor, seguindo estas etapas:

  1. Clique em Experimentos na barra lateral abaixo da seção Aprendizado de Máquina .

  2. Clique no experimento MLflow associado ao seu monitor.

    Se o senhor não souber como encontrar o nome do experimento relevante, siga as instruções em Obter metadados do monitor para recuperar o ID do experimento e execute mlflow.get_experiment(experiment_id=$YOUR_EXPERIMENT_ID) no Notebook para encontrar o nome do experimento.

  3. Clique no monitoramento tab.

  4. Selecione seu SQL warehouse usando a opção Choose a SQL warehouse dropdown.

  5. A página é atualizada para mostrar os resultados do monitoramento. Os resultados podem levar alguns minutos para serem carregados.

Use a UI de monitoramento

Todos os dados na interface do usuário de monitoramento, tanto na guia Gráficos quanto na guia Registros , são limitados a uma janela de tempo. Para alterar a janela, use o Time Range dropdown.

Gráficos tab

O site Charts tab é composto de quatro seções: Solicitações, métricas, Latência e Erros.

Captura de tela da página que resume os resultados do monitoramento.

A seção Solicitações mostra o volume de rastreamento ao longo do tempo.

Captura de tela da seção Solicitações.

A seção de métricas mostra as contagens de respostas que são avaliadas pelos juízes do site LLM. Verde indica respostas aprovadas, enquanto vermelho indica respostas que falham. As métricas listadas nesta seção devem corresponder àquelas definidas quando o senhor criou um monitor, juntamente com uma pontuação geral de qualidade de aprovação/reprovação.

Captura de tela da seção métricas.

A seção Latência mostra a latência de execução do rastreamento ao longo do tempo, obtida da latência relatada pelo MLflow.

Captura de tela da seção Latência.

A seção Erros mostra todos os erros do modelo ao longo do tempo. Quando nenhum erro ocorrer, você verá um indicador de “sem dados” da seguinte forma:

Captura de tela da seção Erros.

registros tab

Captura de tela dos registros tab.

Os registros tab listam as solicitações enviadas ao modelo selecionado, juntamente com os resultados das avaliações LLM, se houver. No máximo 10.000 solicitações do período selecionado são mostradas na interface do usuário. Se a contagem de solicitações exceder esse limite, as solicitações serão amostradas em uma taxa diferente da taxa de amostragem especificada na configuração do monitor.

Para filtrar a solicitação logs com base no texto contido nas solicitações enviadas, use a caixa de pesquisa. O senhor também pode usar o menu Filters (Filtros ) dropdown para filtrar logs pelos resultados de suas avaliações associadas.

Captura de tela dos filtros do site log.

Passe o mouse sobre uma solicitação e clique na caixa de seleção para selecionar uma solicitação. O senhor pode então clicar em Add to evals para adicionar essas solicitações a uma avaliação dataset.

Captura de tela do modal add to evals.

Clique em uma solicitação para acessar view seus detalhes. O modal exibe os resultados da avaliação, a entrada, a resposta e os documentos recuperados para responder à solicitação, se houver. Para obter mais detalhes da solicitação, incluindo informações de tempo, clique em See detailed trace view no canto superior direito do modal.

Captura de tela do modal de detalhes da solicitação.

Captura de tela do rastreamento detalhado view de uma solicitação.

Adicionar alertas

Use o Databricks SQL alerta para notificar os usuários quando a tabela de rastreamento avaliada não corresponder às expectativas, por exemplo, quando a fração de solicitações marcadas como prejudiciais exceder um limite.

Monitorar a execução e a programação

important
  • Os rastreamentos podem levar até 2 horas para ficarem disponíveis na interface do usuário de monitoramento.
  • As métricas de qualidade podem levar mais 30 minutos para serem acessadas em compute depois que o rastreamento aparecer na UI de monitoramento.

Quando o senhor cria um monitor, ele inicia um trabalho que avalia uma amostra de solicitações para o site endpoint nos últimos 30 dias. Essa avaliação inicial pode levar várias horas para ser concluída, dependendo do volume de solicitações e da taxa de amostragem.

Quando uma solicitação é feita ao seu endpoint, acontece o seguinte:

  1. A solicitação e seu MLflow Trace são gravados na tabela de inferência (15 a 30 minutos).
  2. Um trabalho programado descompacta a tabela de inferência em duas tabelas separadas: request_log, que contém a solicitação e o rastreamento, e assessment_logs, que contém o feedback do usuário (execução do trabalho a cada hora).
  3. O Job de monitoramento avalia a amostra de solicitações especificada pelo senhor (execução do Job a cada 15 minutos).

Combinadas, essas etapas significam que as solicitações podem levar até 2,5 horas para aparecer na UI de monitoramento.

Os monitores são apoiados pelo Databricks fluxo de trabalho. Para acionar manualmente o refresh de um monitor (etapa 3), localize o fluxo de trabalho com o nome [<endpoint_name>] Agent Monitoring Job e clique em executar agora .

Se o senhor precisar de uma latência menor, entre em contato com o representante Databricks account .

Atualizar ou pausar um monitor

Para atualizar a configuração de um monitor, chame update_monitor, que usa as seguintes entradas:

  • endpoint_name: str - Nome do endpoint que está sendo monitorado
  • monitoring_config: dict - Configuração para o monitor. Consulte Configurar monitoramento para obter os parâmetros suportados.

Por exemplo:

Python
from databricks.agents.evals.monitors import update_monitor

monitor = update_monitor(
endpoint_name = "model-serving-endpoint-name",
monitoring_config = {
"sample": 0.1, # Change sampling rate to 10%
}
)

Da mesma forma, para pausa um monitor:

Python
from databricks.agents.evals.monitors import update_monitor

monitor = update_monitor(
endpoint_name = "model-serving-endpoint-name",
monitoring_config = {
"paused": True,
}
)

Obtenha metadados do monitor

Use a função get_monitor para recuperar a configuração atual de um monitor para um agente implantado.

Python
from databricks.agents.evals.monitors import get_monitor

get_monitor('model-serving-endpoint-name')

A função retorna um objeto Monitor incluindo os seguintes atributos:

  • endpoint_name - Nome do endpoint que está sendo monitorado.
  • monitoring_config - Configuração para o monitor. Consulte Configurar o monitoramento para obter os parâmetros de configuração.
  • experiment_id - O experimento MLflow em que os resultados do monitoramento são exibidos. Veja os resultados do monitoramento.
  • evaluated_traces_table - Unity Catalog tabela contendo os resultados da avaliação de monitoramento.

Excluir um monitor

Para remover um monitor de um endpoint, ligue para delete_monitor.

Python
from databricks.agents.evals.monitors import delete_monitor

monitor = delete_monitor(
endpoint_name = "model-serving-endpoint-name",
)

A tabela de rastreamentos avaliados gerada por um monitor não será excluída por chamadas para delete_monitor.

Exemplo de notebook

O exemplo a seguir logs e implantado um agente simples e, em seguida, ativa o monitoramento nele.

Exemplo de monitoramento de agentes Notebook

Open notebook in new tab