Rastreamento de extensão com gerenciadores de contexto
O gerenciador de contexto mlflow.start_span permite criar intervalos para blocos de código arbitrários. Pode ser útil para capturar interações complexas dentro do seu código com mais detalhes do que é possível capturando os limites de uma única função.
O rastreamento de trechos de código com gerenciadores de contexto oferece controle preciso sobre qual código será rastreado:
- Blocos de código arbitrários : Rastreie qualquer bloco de código, não apenas funções inteiras.
- Limites flexíveis : Defina pontos iniciais e finais exatos para os vãos.
- Gerenciamento automático de contexto : o MLflow lida com relacionamentos pai-filho e limpeza.
- Funciona com decoradores de função : combine com
@mlflow.tracepara abordagens híbridas. - Tratamento de exceções : Captura automática de erros, como decoradores.
Pré-requisitos
- MLflow 3
- MLflow 2.x
Esta página requer o seguinte pacote:
mlflow[databricks]3.1 e versões superiores: Funcionalidade principal MLflow com recurso GenAI e conectividade com Databricks .openai1.0.0 e versões superiores: (Opcional) Somente se o seu código personalizado interagir com OpenAI; substitua por outros SDKs, se necessário.
Instale os requisitos básicos:
%pip install --upgrade "mlflow[databricks]>=3.1"
# %pip install --upgrade openai>=1.0.0 # Install if needed
Este guia requer o seguinte pacote:
mlflow[databricks]2.15.0 e versões superiores: Funcionalidade principal MLflow com conectividade Databricks .openai1.0.0 e versões superiores: (Opcional) Somente se o seu código personalizado interagir com OpenAI.
Versão MLflow
A Databricks recomenda fortemente a instalação do MLflow 3.1 ou mais recente se estiver usando mlflow[databricks].
Instale os requisitos básicos:
%pip install --upgrade "mlflow[databricks]>=2.15.0,<3.0.0"
# pip install --upgrade openai>=1.0.0 # Install if needed
API do Gerenciador de Contexto
De forma semelhante ao decorador, o gerenciador de contexto captura automaticamente a relação pai-filho, exceções, tempo de execução e funciona com rastreamento automático. No entanto, o nome, as entradas e as saídas do intervalo devem ser fornecidos manualmente. Você pode configurá-los usando o objeto mlflow.entities.Span que é retornado pelo gerenciador de contexto.
with mlflow.start_span(name="my_span") as span:
span.set_inputs({"x": 1, "y": 2})
z = x + y
span.set_outputs(z)
abaixo está um exemplo um pouco mais complexo que usa o gerenciador de contexto mlflow.start_span em conjunto com o decorador e o rastreamento automático para OpenAI.
import mlflow
import openai
from mlflow.entities import SpanType
# Enable auto-tracing for OpenAI
mlflow.openai.autolog()
# Create OpenAI client
client = openai.OpenAI()
@mlflow.trace(span_type=SpanType.CHAIN)
def start_session():
messages = [{"role": "system", "content": "You are a friendly chat bot"}]
while True:
with mlflow.start_span(name="User") as span:
span.set_inputs(messages)
user_input = input(">> ")
span.set_outputs(user_input)
if user_input == "BYE":
break
messages.append({"role": "user", "content": user_input})
response = client.chat.completions.create(
model="gpt-4o-mini",
max_tokens=100,
messages=messages,
)
answer = response.choices[0].message.content
print(f"Assistant: {answer}")
messages.append({"role": "assistant", "content": answer})
start_session()
Próximos passos
- Decoradores de função - Uma abordagem mais simples para rastrear funções inteiras.
- APIs de cliente de baixo nível - Aprenda cenários avançados que exigem controle total.
- Depure e observe seu aplicativo - Use seu aplicativo rastreado manualmente para depuração.