跳至主要内容

MLflow 与 TypeScript 相遇:使用 MLflow 调试和监控全栈 AI 应用程序

· 6 min read
MLflow maintainers
MLflow maintainers
MLflow TypeScript SDK Hero

人工智能驱动的网络应用时代已经到来,TypeScript已成为Web开发者构建全栈AI系统的首选语言。

今天,我们激动地推出MLflow TypeScript SDK,将MLflow行业领先的可观测性能力直接带入您的TypeScript和JavaScript应用程序。

MLflow TypeScript SDK

TypeScript SDK 提供自动追踪功能,无需配置即可检测您的 LLM 调用,同时具备手动检测能力,可为复杂工作流添加自定义跨度。您将获得丰富的可观测性,以可视化执行流程、延迟和令牌使用情况,此外还能收集人类反馈以捕获用户评分。

快速链接:


以下代码片段展示了如何使用 MLflow TypeScript SDK 追踪一个简单函数:

import * as mlflow from "mlflow-tracing";

// Connect to your MLflow server
mlflow.init({
trackingUri: "http://localhost:5000",
experimentId: "<your-experiment-id>",
});

// Create a simple traced function
const getWeather = mlflow.trace(
(city: string) => {
return `The weather in ${city} is sunny`;
},
{ name: "get-weather" },
);

// Call it - MLflow automatically captures inputs, outputs, and latency
getWeather("San Francisco");

尝试交互式演示

想要查看SDK的实际应用吗?我们创建了一个完整的演示应用程序,展示MLflow TypeScript SDK与真实的OpenAI聊天机器人。

🚀 运行演示

演示包含一个完整的Next.js聊天界面,带有自动OpenAI追踪功能。通过克隆仓库并运行来尝试:

git clone git@github.com:mlflow/mlflow-typescript-examples.git
cd mlflow-typescript-examples
npm run install:all
npm run chatbot

这将提示您输入所需的配置,并在 http://localhost:5173 启动聊天机器人应用。

MLflow TypeScript Demo

一旦应用程序运行,你可以开始向聊天机器人提问。然后导航到 MLflow UI 查看追踪记录。

MLflow UI

工作原理

MLflow TypeScript SDK 构建于稳健的架构之上,为您的AI应用提供无缝可观测性。以下是各组件如何协同工作:

OpenTelemetry 基金会

在其核心,MLflow TypeScript SDK 利用 OpenTelemetry,这一行业标准的可观测性框架。这意味着您的追踪使用广泛采用的标准协议,为您提供供应商灵活性,可导出到任何 OpenTelemetry 兼容平台。您可以通过丰富的生态系统与您现有的监控基础设施无缝集成,并且该解决方案是面向未来的,因为它建立在稳定且不断发展的标准之上。

MLflow Tracking Server

SDK 连接到 MLflow 跟踪服务器,您可以在本地或自己的基础设施上作为自托管解决方案运行,使用 Databricks 托管的 MLflow 服务,或连接到任何远程 MLflow 部署。

启动本地跟踪服务器:

pip install mlflow
mlflow ui --port 5000 --backend-store-uri sqlite:///mlflow.db
info

如果您不想自己管理跟踪服务器,可以使用Databricks上的云托管MLflow服务,或任何其他提供托管MLflow服务的云提供商,如AWSAzureMLNebius等。

OpenAI的自动追踪

为您的AI应用进行检测的最简单方法是使用OpenAI的自动追踪

import { OpenAI } from "openai";
import { tracedOpenAI } from "mlflow-tracing-openai";

// Wrap your OpenAI client
const client = tracedOpenAI(new OpenAI());

// Every call is automatically traced
const response = await client.chat.completions.create({
model: "gpt-4o-mini",
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "What's the weather like?" },
],
});

MLflow 自动捕获输入消息和参数、响应内容和元数据、令牌使用量和成本、延迟和性能指标,以及错误处理和异常。

自定义函数的手动追踪

对于自定义业务逻辑,请使用手动插装。MLflow 提供了多种方式来追踪您自己的代码:

import * as mlflow from "mlflow-tracing";

// Trace any function with a decorator
const processUserQuery = mlflow.trace(
async (query: string, context: string[]) => {
// Your custom logic here
const processedQuery = await preprocessQuery(query);
const relevantContext = await filterContext(context, processedQuery);
return { processedQuery, relevantContext };
},
{
name: "process-user-query",
spanType: mlflow.SpanType.CHAIN,
},
);

// Or use the withSpan() wrapper to trace any block of code
const result = await mlflow.withSpan(
async () => {
// Complex workflow logic
const step1 = await performAnalysis();
const step2 = await generateResponse(step1);
return step2;
},
{ name: "complex-workflow" },
);

在MLflow UI中查看结果

一旦您的应用程序被集成,您可以在 MLflow UI 中探索追踪记录。追踪视图提供时间线视图,用于查看执行流程并识别瓶颈,以及详细的跨度检查,包括输入、输出和元数据。

MLflow Trace Detail

高级功能

一旦基础追踪功能正常工作,MLflow 提供了强大的高级功能来改进和监控您的 AI 应用程序。

使用MLflow GenAI评估进行系统性质量评估

追踪作为评估的丰富数据集。MLflow的评估框架可以自动评估您的应用程序性能:

# Python evaluation script
import mlflow
from mlflow.genai.scorers import Guidelines, Ret

# Load traces from your TypeScript application
traces = mlflow.search_traces(experiment_id="your-experiment-id")

# Define evaluation criteria

# Define evaluation scorers
scorers = [
Guidelines(
name="faithfulness",
guidelines="The response should be faithful to the user's question."
),
Guidelines(
name="same_language",
guidelines="Response must be in the same language as the input"
),
Safety(), # Built-in safety scorer
]


# Evaluate traces from your TypeScript application
results = mlflow.genai.evaluate(
data=traces,
scorers=scorers
)

# Check the results on Mlflow UI

这种系统化方法通过自动识别有问题的响应来帮助您发现质量问题,通过随时间监控质量指标来跟踪改进,进行A/B测试以比较不同的模型配置,并通过及早发现质量下降来检测回归。

人类反馈收集

真实用户反馈对于改进AI应用非常宝贵。MLflow提供了人工反馈收集功能来收集用户评分和标注。

由于 MLflow 同时提供了界面和编程方式来收集人工反馈,您也可以直接从应用程序中收集最终用户反馈,并将其发送到 MLflow 进行分析或监控。

生产监控

MLflow Tracing 为您的生产应用程序提供全面的可观测性,支持持续改进的迭代过程,同时确保向用户提供高质量交付。

虽然追踪本身为您的生产应用程序提供了必要的可观测性,但如果您在Databricks上使用托管的MLflow服务,您还可以使用其生产监控集成来持续跟踪已部署应用程序的性能和质量:

  • 使用与开发相同的评分器自动评估质量
  • 追踪运营指标(延迟、成本、错误)
  • 识别表现不佳的查询以创建评估数据集

结论

MLflow TypeScript SDK 代表着TypeScript和JavaScript开发者构建AI应用的重要进展。通过自动追踪、丰富的可观测性、人工反馈收集和无缝生产监控,您现在拥有了构建可靠、高质量AI系统所需的所有工具。

主要优势包括:为流行的大语言模型提供商提供零配置追踪功能,基于OpenTelemetry标准的生产就绪可观测性,与现有TypeScript/JavaScript技术栈的无缝集成,丰富的监控和评估工具生态系统,以及开源可用性并附带企业支持。

入门指南

准备好开始了吗?以下是使用 MLflow TypeScript SDK 启程所需的核心资源: