跳到主要内容

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

·7分钟阅读
MLflow maintainers
MLflow 维护者
MLflow TypeScript SDK Hero

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

今天,我们很高兴推出 **MLflow TypeScript SDK**,将业界领先的 MLflow 可观测性能力直接带入您的 TypeScript 和 JavaScript 应用中。

MLflow TypeScript SDK

TypeScript SDK 提供自动跟踪功能,可零配置地为您的大型语言模型 (LLM) 调用添加检测,并提供手动检测功能,以便为复杂的工作流程添加自定义跨度(span)。您可以获得丰富的可观测性,以可视化执行流程、延迟和 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 跟踪服务器

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

要启动本地跟踪服务器

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

如果您不想自己管理跟踪服务器,可以使用 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 自动捕获输入消息和参数、响应内容和元数据、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 跟踪为您的生产应用程序提供了全面的可观测性,支持持续改进的迭代过程,同时确保向用户提供高质量的服务。

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

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

结论

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

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

入门

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