面向每个 TypeScript LLM 堆栈的 AI 可观测性

TypeScript 和 JavaScript 继续主导全栈 AI 开发,MLflow 3.6 加强了对这一现实的承诺。除了今年早些时候推出的 OpenAI SDK 钩子外,我们现在为 Vercel AI SDK、LangChain.js、LangGraph.js、Mastra、Anthropic 和 Gemini 提供了自动跟踪集成。
在实际操作中,来自现代 JS LLM 栈的任何跟踪信息都将与您的 Python 服务一样,以相同的 MLflow 实验 UI 显示,包括提示/响应有效载荷、Token 使用量、工具结果和错误元数据。

设置 MLflow
让 MLflow 与 JS 栈并行运行不再需要 Python 环境
-
Docker Compose 捆绑包 – 对于最简单的本地或小型团队部署,强烈推荐使用 MLflow 的官方 Docker Compose 设置。要开始使用,只需克隆 GitHub 仓库,然后导航到仓库中提供的
docker-compose目录。运行docker compose up -d即可启动整个 MLflow 跟踪堆栈:这将自动启动 MLflow 跟踪服务器以及预配置的 SQL 后端(如 PostgreSQL),两者都已预先连接,以便无缝摄取 OpenTelemetry 协议 (OTLP) 跟踪。 -
托管解决方案 – MLflow 在许多云提供商上均可用,例如 Databricks、AWS SageMaker Experiments、Azure ML、Nebius 等。您可以将
MLFLOW_TRACKING_URI指向 Databricks 的免费版本或其他托管的 MLflow 服务,开始发出跟踪信息,而无需自己托管任何内容。
Vercel AI SDK / Next.js
Vercel AI SDK 跟踪建立在 OpenTelemetry 之上,并设计为最大限度地减少仪器化工作。由于 MLflow 跟踪服务器与 OpenTelemetry 兼容,您只需最少的配置即可直接将 Vercel AI SDK 跟踪发送到 MLflow 跟踪服务器。
以下代码片段展示了如何使用 Vercel AI SDK 和 Next.js 为 LLM 应用程序设置跟踪。
OTEL_EXPORTER_OTLP_ENDPOINT=<your-mlflow-tracking-server-endpoint>
OTEL_EXPORTER_OTLP_TRACES_HEADERS=x-mlflow-experiment-id=<your-experiment-id>
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf
import { registerOTel } from "@vercel/otel";
export async function register() {
registerOTel({ serviceName: "next-app" });
}
import { openai } from "@ai-sdk/openai";
import { generateText } from "ai";
export async function POST(req: Request) {
const { prompt } = await req.json();
const { text } = await generateText({
model: openai("gpt-4o-mini"),
maxOutputTokens: 100,
prompt,
experimental_telemetry: { isEnabled: true },
});
return new Response(JSON.stringify({ text }), {
headers: { "Content-Type": "application/json" },
});
}
有关更多详细信息,请参阅 Vercel AI SDK 跟踪。
Mastra
Mastra 包含一个内置的 OpenTelemetry 导出器,可以轻松地将跟踪数据直接发送到 MLflow 跟踪服务器。要启用跟踪,只需在 Mastra 设置中添加一个 observability 配置块。通过提供一个指向您的 MLflow 服务器的 OpenTelemetry 导出器实例,您的所有 Mastra 工作流——包括链和工具的完整层次结构——都将在 MLflow 中自动跟踪和可视化。此设置保留了工作流组件之间的结构和关系,因此您可以在 MLflow UI 中直接查看端到端工作流执行的详细跟踪。
import { OtelExporter } from "@mastra/otel-exporter";
export const mastra = new Mastra({
workflows: { weatherWorkflow },
...
// Add the following observability configuration to enable OpenTelemetry tracing.
observability: {
configs: {
otel: {
serviceName: "mastra-app",
exporters: [new OtelExporter({
provider: {
custom: {
// Specify tracking server URI with the `/v1/traces` path.
endpoint: "https://:5000/v1/traces",
// Set the MLflow experiment ID in the header.
headers: { "x-mlflow-experiment-id": "<your-experiment-id>"},
// MLflow supports HTTP/Protobuf protocol.
protocol: "http/protobuf"
}
}
})]
}
}
},
});
启动 npm run dev,与 Playground 交互,然后刷新 MLflow UI 以查看跟踪。
有关更多详细信息,请参阅 Mastra 跟踪。
LangChain.js / LangGraph.js
LangChain.js 仪器化基于 OpenTelemetry。配置一次跟踪器,MLflow 就会通过 OTLP /v1/traces 端点摄取所有跟踪(链、代理、检索器、工具调用和异步流)。
import {
NodeTracerProvider,
SimpleSpanProcessor,
} from "@opentelemetry/sdk-trace-node";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
import { LangChainInstrumentation } from "@arizeai/openinference-instrumentation-langchain";
import * as CallbackManagerModule from "@langchain/core/callbacks/manager";
const exporter = new OTLPTraceExporter({
url: "https://:5000/v1/traces",
headers: { "x-mlflow-experiment-id": "123" },
});
const provider = new NodeTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));
provider.register();
new LangChainInstrumentation().manuallyInstrument(CallbackManagerModule);
有关更多详细信息,请参阅 LangChain 跟踪 或 LangGraph 跟踪。
OpenAI SDK
mlflow-openai 包装了官方的 OpenAI SDK,因此您可以跟踪对 OpenAI 的每一次调用,并捕获消息、工具调用、Token 使用量和错误。
import { OpenAI } from "openai";
import { tracedOpenAI } from "mlflow-openai";
import * as mlflow from "mlflow-tracing";
mlflow.init({ trackingUri: "https://:5000", experimentId: "openai" });
const client = tracedOpenAI(new OpenAI({ apiKey: process.env.OPENAI_API_KEY }));
const response = await client.chat.completions.create({
model: "gpt-4o-mini",
messages: [{ role: "user", content: "What's the weather like?" }],
});
有关更多详细信息,请参阅 OpenAI 跟踪。
Anthropic SDK
mlflow-anthropic 包装了官方 SDK,因此您只需一行代码即可跟踪 Claude 调用(同步或异步)。
import Anthropic from "@anthropic-ai/sdk";
import { tracedAnthropic } from "mlflow-anthropic";
import * as mlflow from "mlflow-tracing";
mlflow.init({
trackingUri: "https://:5000",
experimentId: "anthropic",
});
const client = tracedAnthropic(new Anthropic());
const message = await client.messages.create({
model: "claude-sonnet-4-5-20250929",
max_tokens: 1024,
messages: [
{ role: "user", content: "Summarize the new TypeScript release." },
],
});
有关更多详细信息,请参阅 Anthropic 跟踪。
Gemini SDK
通过 mlflow-gemini 支持 Google 的 GenAI SDK,涵盖 models.generateContent() 以及函数调用元数据。
import { GoogleGenAI } from "@google/genai";
import { tracedGemini } from "mlflow-gemini";
const client = tracedGemini(
new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY }),
);
const response = await client.models.generateContent({
model: "gemini-2.5-flash",
contents: "List three GenAI observability KPIs.",
});
有关更多详细信息,请参阅 Gemini 跟踪。
后续步骤
- 跟踪集成目录 - 查找您喜欢框架的跟踪集成。
- TypeScript SDK 快速入门 - 开始使用 MLflow TypeScript SDK。
- 评估和监控 - 使用 MLflow 评估和监控您的 AI 应用程序。
通过打开一个 Issue 告诉我们您接下来想要哪个 JavaScript 框架!
