Pular para o conteúdo principal

Monitorar aplicativos implantados fora do Databricks

info

Beta

Esse recurso está na versão beta.

Esta página descreve como configurar o monitoramento para aplicativos generativos AI implantados fora do 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 Monitorar aplicativos generativos 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.18.1 mlflow>=2.21.2
dbutils.library.restartPython()
important

Você não precisa ter o databricks-agents instalado em seu aplicativo de produção. Seu aplicativo de produção precisa apenas de mlflow instalado, o que habilita a instrumentação do MLflow Tracing.

Configurar o monitoramento

Se o senhor tiver um aplicativo AI implantado fora do Databricks ou estiver usando aplicativos Databricks, use o método create_external_monitor dentro de um notebook Databricks para configurar o monitor.

nota

O monitor é criado dentro de um experimento MLflow. A UI de monitoramento aparece como tab no experimento MLflow. O acesso aos rastros do log é controlado por meio das ACLs do experimento MLflow.

Em seguida, o senhor instrumentará o código implantado usando o rastreamento do MLFlow e mlflow.tracing.set_destination conforme descrito abaixo. Para aplicativos implantados usando o Agent Framework, consulte implantado um agente para aplicativos generativos AI.

As etapas abaixo pressupõem que o senhor esteja trabalhando em um notebook Databricks. Para criar um monitor a partir de seu ambiente de desenvolvimento local (por exemplo, seu IDE), acesse download e use este scriptPython.

Este Notebook inclui as etapas mostradas no restante desta página.

Criar um exemplo de monitor externo Notebook

Open notebook in new tab

Etapa 1: criar um experimento MLflow

Você pode usar um experimento existente ou criar um novo experimento. Para criar um novo experimento, siga as etapas abaixo.

Python
import mlflow
mlflow_experiment_path = "/Users/your-user-name@company.com/my_monitor_name"
mlflow.set_experiment(experiment_name=mlflow_experiment_path)

# Get the experiment ID to use in the next step
experiment_id = mlflow.tracking.fluent._get_experiment_id()

Etapa 2: criar um monitor externo

important

Por default, se o senhor executar create_external_monitor de um Databricks Notebook sem especificar explicitamente um experimento, o monitor será criado no experimento MLflow do Notebook.

create_external_monitor usa as seguintes entradas:

  • catalog_name: str - O nome do catálogo no qual gravar artefatos delta.
  • schema_name: str - O nome do esquema no qual gravar os artefatos delta. Esse esquema deve fazer parte do catálogo acima.
  • [Optional] experiment_id: O MLflow experiment_id onde os traços de produção são armazenados. Um desses ou experiment_name deve ser definido. Se não for especificado, o monitor usará o experimento do Notebook onde esse comando foi executado.
  • [Optional] experiment_name: O MLflow experiment_name onde os traços de produção são armazenados. Um desses ou experiment_id deve ser definido. Se não for especificado, o monitor usará o experimento do Notebook onde esse comando foi executado.
  • assessments_config: AssessmentsSuiteConfig | dict - Configuração para avaliações computadas pelo monitor. Os seguintes parâmetros são suportados:
    • [Optional] sample: float - A fração de solicitações para as avaliações do compute (entre 0 e 1). padrão para 1.0 (compute avaliações para todo o tráfego).
    • [Optional] paused: str - PAUSED ou UNPAUSED.
    • [Optional] assessments: list[BuiltinJudge | GuidelinesJudge] Uma lista de avaliações que são um juiz integrado ou o juiz de diretrizes.

BuiltinJudge usa os seguintes argumentos:

  • type: str Um dos juízes integrados apoiados 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.

GuidelinesJudge usa os seguintes argumentos:

  • guidelines: dict[str, list[str]] Um ditado 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.

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

Por exemplo:

Python
from databricks.agents.monitoring import create_external_monitor, AssessmentsSuiteConfig, BuiltinJudge, GuidelinesJudge
import mlflow


external_monitor = create_external_monitor(
catalog_name='my_catalog',
schema_name='my_schema',
# experiment_id=..., # Replace this line with your MLflow experiment ID. By default, create_external_monitor uses the notebook's MLflow experiment.
assessments_config=AssessmentsSuiteConfig(
sample=1.0,
assessments=[
# Builtin judges: "safety", "groundedness", "relevance_to_query", "chunk_relevance"
BuiltinJudge(name='safety'), # or {'name': 'safety'}
BuiltinJudge(name='groundedness'), # or {'name': 'groundedness'}
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={
"pii": ["The response must not contain personal information."],
"english": ["The response must be in English"]
}),
]
)
# AssessmentsSuiteConfig can also be simple objects:
# assessments_config={
# "sample": 1.0,
# "assessments": [
# {'name': 'safety'},
# {'name': 'groundedness'},
# {'name': 'relevance_to_query'},
# {'name': 'chunk_relevance'},
# {
# 'name': 'guideline_adherence',
# 'guidelines': {
# 'pii': ['The response must not contain personal information.'],
# 'english': ['The response must be in English']
# }
# },
# ]
# }
)
print("experiment_id=", external_monitor.experiment_id)

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 no monitoring_table. Para view linhas avaliadas, execução:

Python
display(spark.table("cat.schema.monitor_table"))

Etapa 3: Instrumentar seu aplicativo gen AI com rastreamento do MLFlow

Para começar, instale o seguinte pacote em seu agente implantado:

sh
%pip install "mlflow>=2.21.2"
important

Os tokens devem ser de uma entidade de serviço ou usuário que tenha acesso EDIT ao experimento MLflow onde o monitor está configurado.

Em seu aplicativo gen AI, adicione o seguinte:

  • Defina o endereço DATABRICKS_HOST e DATABRICKS_TOKEN variável de ambiente.

    • DATABRICKS_HOST é o URL do site workspace, por exemplo, https://workspace-url.databricks.com
    • DATABRICKS_TOKEN é um token PAT. Siga estas etapas.
      • Se quiser usar os tokens PAT de uma entidade de serviço, certifique-se de conceder à entidade de serviço EDIT gravações no experimento MLflow que você configurou na parte superior do Notebook. Sem isso, o MLflow Tracing NÃO conseguirá log traces.
  • mlflow.tracing.set_destination para definir o destino do rastreamento.

  • MLFlow Automatic Tracing ou APIs fluentes do MLFlow para rastrear seu aplicativo. O MLFlow oferece suporte ao autologging para muitas estruturas populares, como LangChain, Bedrock, DSPy, OpenAI e muito mais.

  • Databricks autenticação tokens para que o MLFlow possa log rastrear para Databricks.

sh
# Environment variables:
DATABRICKS_TOKEN="..."
DATABRICKS_HOST="..."
Python
import mlflow
from mlflow.tracing.destination import Databricks

# Setup the destination.
mlflow_experiment_id = "..." # This is the experiment_id that is configured in step 2.
mlflow.tracing.set_destination(Databricks(experiment_id=mlflow_experiment_id))

# Your AI app code, instrumented with mlflow.
# MLFlow supports autologging for a variety of

## Option 1: MLFlow autologging
import mlflow

mlflow.langchain.autolog()

# Enable other optional logging
# mlflow.langchain.autolog(log_models=True, log_input_examples=True)

# Your LangChain model code here
# ...
# ...

# Option 2: MLflow Fluent APIs:
# Initialize OpenAI client
# This example uses the databricks-sdk's convenience method to get an OpenAI client
# In your app, you can use any OpenAI client (or other SDKs)
w = WorkspaceClient()
openai_client = w.serving_endpoints.get_open_ai_client()

# These traces will automatically be sent to Databricks.
@mlflow.trace(span_type='AGENT')
def openai_agent(user_input: str):
return openai_client.chat.completions.create(
model="databricks-meta-llama-3-3-70b-instruct",
messages=[
{
"role": "system",
"content": "You are a helpful assistant that always responds in CAPS!",
},
{"role": "user", "content": user_input},
],
)

# Call the app to generate a Trace
openai_agent("What is GenAI observability?")

Etapa 4. Acesse a UI de monitoramento para view o rastreamento dos registros.

Acesse o experimento MLflow que o senhor configurou na etapa 2. Clique no monitoramento tab e, em seguida, em "logs" no canto superior esquerdo para ver o rastreamento de logs da etapa 3.

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

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ários minutos para ser concluída, dependendo do volume de solicitações e da taxa de amostragem.

Após a avaliação inicial, o monitor é atualizado automaticamente a cada 15 minutos para avaliar novas solicitações. Há um atraso entre o momento em que as solicitações são feitas ao endpoint e quando elas são avaliadas pelo monitor.

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

Limitações

A seguir estão as limitações do monitoramento de Lakehouse para aplicativos GenAI implantados fora do site Databricks:

  • A Taxa de transferência máxima de ingestão de rastreamento é de 10 QPS (consultas por segundo).
  • Os campos request e response do MLFlow TraceData não devem exceder 25 KB combinados.
  • O MLFlow TraceData spans não deve exceder 1 MB.