Instrumentar aplicações Node.js com MLflow Tracing
O TypeScript SDKdoMLflow traz recursos MLflow Tracing para aplicativos TypeScript e JavaScript. Adicione observabilidade pronta para produção aos seus aplicativos GenAI com alterações mínimas de código e aproveite a poderosa plataforma de análise e monitoramento Databricks.
Requisitos
A Databricks recomenda instalar a versão mais recente do MLflow Tracing TypeScript SDK ao desenvolver aplicativos Node.js com rastreamento.
Para instrumentar seus aplicativos Node.js com o MLflow Tracing, instale o seguinte:
- mlflow-tracingdo registro npm
- Node.js 14 ou acima
- Um workspace Databricks com acesso aos experimentos MLflow
Para rastreamento automático com OpenAI, você também precisa:
- mlflow-openaido registro npm
Configurar o SDK
Instalar o pacote
Instale o pacote do registro npm:
npm install mlflow-tracing
Criar um experimento MLflow
- Abra seu workspace Databricks .
- Na barra lateral esquerda, em AI/ML , clique em Experimentos .
- Na parte superior da página Experimentos, clique em Aplicativos e agentes GenAI .
- Clique no ícone ao lado do nome do experimento para encontrar o ID do experimento e anotá-lo. 

Configurar autenticação
Escolha um dos seguintes métodos de autenticação:
- Environment Variables
- .env File
- No seu experimento MLflow , clique em ícone > registrar rastreamentos localmente > clique em Gerar chave API . 
- Copie e execute o código gerado no seu terminal:
export DATABRICKS_TOKEN=<databricks-personal-access-token>
export DATABRICKS_HOST=https://<workspace-name>.cloud.databricks.com
- No seu experimento MLflow , clique em ícone > registrar rastreamentos localmente > clique em Gerar chave API . 
- Copie o código gerado para um arquivo .envna raiz do seu projeto:
DATABRICKS_TOKEN=<databricks-personal-access-token>
DATABRICKS_HOST=https://<workspace-name>.cloud.databricks.com
Inicializar o SDK
No seu aplicativo Node.js, inicialize o SDK com o ID do experimento:
import * as mlflow from 'mlflow-tracing';
mlflow.init({
  trackingUri: 'databricks',
  experimentId: '<your-experiment-id>',
});
Rastreamento Automático
Adicione uma linha de código para rastrear automaticamente a biblioteca suportada. O MLflow Tracing TypeScript SDK atualmente oferece suporte ao rastreamento automático para o OpenAI SDK.
Para usar o rastreamento automático para OpenAI, instale o pacote mlflow-openai :
npm install mlflow-openai
Em seguida, envolva o cliente OpenAI com a função tracedOpenAI :
import * as mlflow from 'mlflow-tracing';
// Initialize the tracing SDK
mlflow.init({
  trackingUri: 'databricks',
  experimentId: '<your-experiment-id>',
});
import { OpenAI } from 'openai';
import { tracedOpenAI } from 'mlflow-openai';
// Wrap the OpenAI client with the tracedOpenAI function
const client = tracedOpenAI(new OpenAI());
// Invoke the client as usual
const response = await client.chat.completions.create({
  model: 'gpt-4o-mini',
  messages: [
    { role: 'system', content: 'You are a helpful weather assistant.' },
    { role: 'user', content: "What's the weather like in Seattle?" },
  ],
});
Rastreamento manual
Rastreando uma função com a API trace
A API trace é útil quando você deseja rastrear uma função.
- Named function
- Anonymous function
import * as mlflow from 'mlflow-tracing';
const getWeather = async (city: string) => {
  return `The weather in ${city} is sunny`;
};
// Wrap the function with mlflow.trace to create a traced function
const tracedGetWeather = mlflow.trace(getWeather, { name: 'get-weather' });
// Invoke the traced function as usual
const result = await tracedGetWeather('San Francisco');
import * as mlflow from 'mlflow-tracing';
const getWeather = mlflow.trace(
  (city: string) => {
    return `The weather in ${city} is sunny`;
  },
  // When wrapping an anonymous function, specify the span name
  { name: 'get-weather' },
);
// Invoke the traced function as usual
const result = getWeather('San Francisco');
Na invocação da função rastreada, o MLflow criará automaticamente um intervalo que captura:
- Argumentos de entrada
- Valor de retorno
- Informação de exceção se lançada
- Latência
Capturando chamadas de função aninhadas
Se você rastrear funções aninhadas, o MLflow gerará um rastreamento com vários intervalos, onde a estrutura do intervalo captura as chamadas de função aninhadas.
const sum = mlflow.trace(
  (a: number, b: number) => {
    return a + b;
  },
  { name: 'sum' },
);
const multiply = mlflow.trace(
  (a: number, b: number) => {
    return a * b;
  },
  { name: 'multiply' },
);
const computeArea = mlflow.trace(
  (a: number, b: number, h: number) => {
    const sumOfBase = sum(a, b);
    const area = multiply(sumOfBase, h);
    return multiply(area, 0.5);
  },
  { name: 'compute-area' },
);
computeArea(1, 2, 3);
O rastreamento ficará assim:
- compute-area
  - sum (a=1, b=2)
  - multiply (a=3, b=3)
  - multiply (a=9, b=0.5)
Rastreando um método de classe com a API @trace
O TypeScript versão 5.0+ oferece suporte a decoradores. O MLflow Tracing suporta essa sintaxe para rastrear métodos de classe facilmente. O MLflow criará automaticamente um intervalo que captura:
- Argumentos de entrada
- Valor de retorno
- Informação de exceção se lançada
- Latência
import * as mlflow from 'mlflow-tracing';
class MyClass {
  @mlflow.trace({ spanType: mlflow.SpanType.LLM })
  generateText(prompt: string) {
    return "It's sunny in Seattle!";
  }
}
const myClass = new MyClass();
myClass.generateText("What's the weather like in Seattle?");
Rastreando um bloco de código com a API withSpan
A API withSpan é útil quando você deseja rastrear um bloco de código, não uma função.
import * as mlflow from 'mlflow-tracing';
const question = "What's the weather like in Seattle?";
const result = await mlflow.withSpan(
  async (span: mlflow.Span) => {
    return "It's sunny in Seattle!";
  },
  // Pass name, span type, and inputs as options.
  {
    name: 'generateText',
    spanType: mlflow.SpanType.TOOL,
    inputs: { prompt: question },
  },
);
Crie e encerre um intervalo explicitamente
Para obter mais controle sobre o ciclo de vida do intervalo, você pode criar e encerrar um intervalo explicitamente.
import * as mlflow from 'mlflow-tracing';
const span = mlflow.startSpan({
  name: 'generateText',
  spanType: mlflow.SpanType.LLM,
  inputs: { prompt: question },
});
span.end({
  outputs: { answer: "It's sunny in Seattle!" },
  status: 'OK',
});
Agrupando Rastros por Usuários e Sessões
Muitos aplicativos do mundo real usam sessões para manter interações de usuários em vários turnos. Por outro lado, os rastreamentos geralmente são gerados por solicitação. O MLflow oferece suporte ao agrupamento de rastreamentos por sessões de usuário para ajudar você a entender a jornada do usuário final e identificar problemas. Consulte o guia Rastrear usuários e sessões para obter mais detalhes.
Exemplo de aplicação full-stack
Confira o exemplo de pilha completa para ver um exemplo completo de como usar o SDK TypeScript do MLflow Tracing em um aplicativo Node.js.
Próximos passos
Veja as páginas seguintes:
- Depure e observe seu aplicativo - Use a interface do usuário Trace para analisar o comportamento e o desempenho do seu aplicativo
- Avalie a qualidade do aplicativo - Aproveite seus rastros para avaliar e melhorar sistematicamente a qualidade do aplicativo
- Monitoramento de produção - Acompanhar métricas de qualidade em tempo real na produção