MLflow 与 TypeScript 的邂逅:使用 MLflow 调试和监控全栈 AI 应用

由 AI 驱动的网络应用时代已经到来,而 TypeScript 已成为 Web 开发者构建全栈 AI 系统的首选语言。
今天,我们激动地宣布推出 MLflow TypeScript SDK,它将 MLflow 业界领先的可观测性能力直接带到您的 TypeScript 和 JavaScript 应用中。
MLflow TypeScript SDK
TypeScript SDK 提供了自动追踪功能,无需任何配置即可检测您的 LLM 调用,同时还提供手动检测功能,可为复杂的工作流添加自定义跨度 (span)。您可以获得丰富的可观测性,以可视化执行流程、延迟和令牌使用情况,并能收集人类反馈以捕获用户评分。
快速链接
- 📦 NPM 包
- 💻 Github 代码库
- 📚 快速入门指南
以下代码片段展示了如何使用 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 的实际效果吗?我们创建了一个完整的演示应用程序,通过一个真实的 OpenAI 聊天机器人展示了 MLflow TypeScript SDK。
🚀 运行演示
该演示包含一个完整的 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 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 服务的云提供商,如 AWS、AzureML、Nebius 等。
针对 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 还提供了强大的高级功能来改进和监控您的 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 对构建 AI 应用程序的 TypeScript 和 JavaScript 开发者而言,是向前迈出的重要一步。借助自动追踪、丰富的可观测性、人类反馈收集以及无缝的生产监控,您现在拥有了构建可靠、高质量 AI 系统所需的所有工具。
其主要优势包括:为流行的 LLM 提供商提供零配置追踪、基于 OpenTelemetry 标准的生产级可观测性、与您现有的 TypeScript/JavaScript 技术栈无缝集成、丰富的监控和评估工具生态系统,以及开源可用并提供企业级支持。
开始使用
准备好开始了吗?以下是开始使用 MLflow TypeScript SDK 的基本资源