Monitorar aplicativos implantados fora do Databricks
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:
A UI de monitoramento:
Requisitos
- Para ativar e configurar o monitoramento, o senhor deve usar o SDK databricks-agents.
%pip install databricks-agents>=0.18.1 mlflow>=2.21.2
dbutils.library.restartPython()
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.
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
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.
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
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 MLflowexperiment_id
onde os traços de produção são armazenados. Um desses ouexperiment_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 MLflowexperiment_name
onde os traços de produção são armazenados. Um desses ouexperiment_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
ouUNPAUSED
.[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:
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:
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:
%pip install "mlflow>=2.21.2"
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
eDATABRICKS_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.
# Environment variables:
DATABRICKS_TOKEN="..."
DATABRICKS_HOST="..."
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: