跳到主要内容

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

·阅读时长 6 分钟
MLflow maintainers
MLflow 维护者
MLflow TypeScript SDK Hero

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

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

MLflow TypeScript SDK

TypeScript SDK 提供了自动跟踪功能,只需零配置即可对您的 LLM 调用进行检测,同时还支持手动检测功能,用于为复杂工作流添加自定义跨度。您可以获得丰富的可观察性,以可视化执行流程、延迟和 token 使用情况,还可以收集人类反馈以捕获用户评分。

快速链接


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

import * as mlflow from "mlflow-tracing";

// Connect to your MLflow server
mlflow.init({
trackingUri: "https://: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

这将提示您输入必要的配置,并启动聊天机器人应用程序,地址为 https://:5173

MLflow TypeScript Demo

应用程序运行后,您就可以开始向聊天机器人提问了。然后导航到 MLflow UI 查看跟踪信息。

MLflow UI

工作原理

MLflow TypeScript SDK 构建在一个强大的架构之上,为您的 AI 应用程序提供无缝的可观察性。以下是各个组件如何协同工作:

OpenTelemetry 基金会

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

MLflow Tracking Server

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

要启动本地跟踪服务器

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

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

OpenAI 的自动跟踪

使用 OpenAI 的自动跟踪 是检测 AI 应用程序的最简单方法。

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 自动捕获输入消息和参数、响应内容和元数据、token 使用量和成本、延迟和性能指标,以及错误处理和异常。

自定义函数的手动跟踪

对于自定义业务逻辑,请使用手动检测。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 同时提供了 UI 和编程方式来收集人类反馈,您还可以直接从您的应用程序中收集最终用户反馈,并将其发送到 MLflow 进行分析或监控。

生产环境监控

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

虽然 Tracing 本身就为您的生产应用程序提供了重要的可观察性,但如果您使用的是 Databricks 上的托管 MLflow 服务,您还可以使用其 生产环境监控 集成来持续跟踪您已部署应用程序的性能和质量。

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

结论

MLflow TypeScript SDK 代表了 TypeScript 和 JavaScript 开发人员在构建 AI 应用程序方面迈出了重要一步。借助自动跟踪、丰富的可观察性、人类反馈收集和无缝的生产环境监控,您现在拥有了构建可靠、高质量 AI 系统所需的所有工具。

主要优势包括:对流行 LLM 提供商的零配置跟踪,基于 OpenTelemetry 标准构建的生产级可观察性,与现有 TypeScript/JavaScript 堆栈的无缝集成,丰富的监控和评估工具生态系统,以及开源可用性和企业级支持。

开始使用

准备好开始了吗?以下是开始使用 MLflow TypeScript SDK 的重要资源: