Pular para o conteúdo principal

Monitorar aplicativos implantados usando o Agent Framework

info

Beta

Esse recurso está na versão beta.

Esta página descreve como configurar o monitoramento para aplicativos generativos AI implantados usando o Mosaic AI Agent Framework. Para obter informações gerais sobre o uso do monitoramento, como o esquema de resultados, a visualização de resultados, o uso da interface do usuário, a adição de alertas e o gerenciamento de monitores, consulte What is lakehouse monitoring for generative AI?

O lakehouse monitoramento for 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.

Como funciona o monitoramento:

Visão geral de como funciona

A UI de monitoramento:

lakehouse monitoramento para gen AI UI Hero

Requisitos

Python
%pip install databricks-agents>=0.22.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.
  • O criador do endpoint (o usuário que implanta o agente) deve ter as permissões CREATE VOLUME no esquema selecionado para armazenar as tabelas de inferência no momento da implantação. Isso garante que tabelas relevantes de avaliação e registro possam ser criadas no esquema. Consulte Habilitar e desabilitar tabelas de inferência.

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 15 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

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.monitoring import update_monitor, AssessmentsSuiteConfig, BuiltinJudge, GuidelinesJudge

monitor = update_monitor(
endpoint_name = "model-serving-endpoint-name",
assessments_config = AssessmentsSuiteConfig(
sample=1.0, # Sample 100% of requests
assessments=[
# Builtin judges: "safety", "groundedness", "relevance_to_query", "chunk_relevance"
BuiltinJudge(name='safety'), # or {'name': 'safety'}
BuiltinJudge(name='groundedness', sample_rate=0.4), # or {'name': 'groundedness', 'sample_rate': 0.4}
BuiltinJudge(name='relevance_to_query'), # or {'name': 'relevance_to_query'}
BuiltinJudge(name='chunk_relevance'), # or {'name': 'chunk_relevance'}
# Create custom judges with the guidelines judge.
GuidelinesJudge(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.monitoring import create_monitor, AssessmentsSuiteConfig, BuiltinJudge, GuidelinesJudge

monitor = create_monitor(
endpoint_name = "model-serving-endpoint-name",
assessments_config = AssessmentsSuiteConfig(
sample=1.0, # Sample 100% of requests
assessments=[
# Builtin judges: "safety", "groundedness", "relevance_to_query", "chunk_relevance"
BuiltinJudge(name='safety'), # or {'name': 'safety'}
BuiltinJudge(name='groundedness', sample_rate=0.4), # or {'name': 'groundedness', 'sample_rate': 0.4}
BuiltinJudge(name='relevance_to_query'), # or {'name': 'relevance_to_query'}
BuiltinJudge(name='chunk_relevance'), # or {'name': 'chunk_relevance'}
# Create custom judges with the guidelines judge.
GuidelinesJudge(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.

  • assessments_config: AssessmentsSuiteConfig | dict - Configuração para avaliações computadas pelo monitor. Os seguintes parâmetros são suportados:

    • [Optional] sample: float - A taxa de amostragem global, ou seja, a fração de solicitações para compute avaliações (entre 0 e 1). padrão para 1.0 (compute avaliações para todo o tráfego).
    • [Optional] paused: bool - Se o monitor está em pausa.
    • [Optional] assessments: list[BuiltinJudge | GuidelinesJudge] Uma lista de avaliações que são um juiz integrado ou o juiz de diretrizes.
  • [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.

BuiltinJudge usa os seguintes argumentos:

  • name: str - Um dos juízes integrados com suporte no monitoramento: "safety", "groundedness", "relevance_to_query", "chunk_relevance". Para obter mais detalhes sobre os juízes de integração, consulte Juízes de integração.
  • [Optional] sample_rate: float - A fração de solicitações para compute essa avaliação (entre 0 e 1). padrão para a taxa de amostragem global.

GuidelinesJudge usa os seguintes argumentos:

  • guidelines: dict[str, list[str]] - Um dicionário contendo nomes de diretrizes e diretrizes em texto simples que são usadas para afirmar sobre a solicitação/resposta. Para obter mais detalhes sobre as diretrizes, consulte Adesão às diretrizes.
  • [Optional] sample_rate: float - A fração de solicitações para as diretrizes do compute (entre 0 e 1). padrão para a taxa de amostragem global.

Para obter mais detalhes, consulte a documentação do Python SDK.

Depois de criar um monitor, 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'"))

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 .

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