Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пакет SDK для TypeScript MLflow предоставляет возможности трассировки MLflow для приложений TypeScript и JavaScript. Добавьте готовую к эксплуатации систему наблюдения в ваши приложения GenAI с минимальными изменениями кода и используйте мощную платформу аналитики и мониторинга Databricks.
Требования
Подсказка
Databricks рекомендует установить последнюю версию пакета SDK для трассировки MLflow TypeScript при разработке приложений Node.js с помощью трассировки.
Чтобы инструментировать приложения Node.js с помощью трассировки MLflow, установите следующее:
-
mlflow-tracingиз реестра npm - Node.js 14 или более поздней версии
- Рабочая область Databricks с доступом к экспериментам MLflow
Для автоматической трассировки с помощью OpenAI также требуется:
-
mlflow-openaiиз реестра npm
Настройка пакета SDK
Установите пакет
Установите пакет из реестра npm:
npm install mlflow-tracing
Создание эксперимента MLflow
- Откройте рабочую область Databricks.
- В левой боковой панели в разделе ИИ/ML щелкните "Эксперименты".
- В верхней части страницы "Эксперименты" щелкните приложения GenAI и агенты.
- Щелкните
рядом с именем эксперимента, чтобы найти идентификатор эксперимента и запишите его вниз.
Настройка проверки подлинности
Выберите один из следующих методов проверки подлинности:
Переменные среды
- В эксперименте MLflow щелкните
Затем >запишите трассировки локально>, после чего щелкните "Создать ключ API".
- Скопируйте и запустите созданный код в терминале:
export DATABRICKS_TOKEN=<databricks-personal-access-token>
export DATABRICKS_HOST=https://<workspace-name>.cloud.databricks.com
ENV-файл
- В эксперименте MLflow щелкните
Затем >запишите трассировки локально>, после чего щелкните "Создать ключ API".
- Скопируйте созданный код в файл в корневом
.envкаталоге проекта:
DATABRICKS_TOKEN=<databricks-personal-access-token>
DATABRICKS_HOST=https://<workspace-name>.cloud.databricks.com
Инициализация пакета SDK
В приложении Node.js инициализировать пакет SDK с помощью идентификатора эксперимента:
import * as mlflow from 'mlflow-tracing';
mlflow.init({
trackingUri: 'databricks',
experimentId: '<your-experiment-id>',
});
Автоматическая трассировка
Добавьте одну строку кода для автоматической трассировки поддерживаемых библиотек. Пакет SDK для трассировки MLflow TypeScript в настоящее время поддерживает автоматическую трассировку для пакета SDK OpenAI.
Чтобы использовать автоматическую трассировку для OpenAI, установите mlflow-openai пакет:
npm install mlflow-openai
Затем оберните клиент OpenAI с помощью функции tracedOpenAI.
import * as mlflow from 'mlflow-tracing';
// Initialize the tracing SDK
mlflow.init({
trackingUri: 'databricks',
experimentId: '<your-experiment-id>',
});
import { OpenAI } from 'openai';
import { tracedOpenAI } from 'mlflow-openai';
// Wrap the OpenAI client with the tracedOpenAI function
const client = tracedOpenAI(new OpenAI());
// Invoke the client as usual
const response = await client.chat.completions.create({
model: 'gpt-4o-mini',
messages: [
{ role: 'system', content: 'You are a helpful weather assistant.' },
{ role: 'user', content: "What's the weather like in Seattle?" },
],
});
Трассировка вручную
Трассировка функции с помощью trace API
trace API полезен, если требуется трассировать функцию.
Именованная функция
import * as mlflow from 'mlflow-tracing';
const getWeather = async (city: string) => {
return `The weather in ${city} is sunny`;
};
// Wrap the function with mlflow.trace to create a traced function
const tracedGetWeather = mlflow.trace(getWeather, { name: 'get-weather' });
// Invoke the traced function as usual
const result = await tracedGetWeather('San Francisco');
Анонимная функция
import * as mlflow from 'mlflow-tracing';
const getWeather = mlflow.trace(
(city: string) => {
return `The weather in ${city} is sunny`;
},
// When wrapping an anonymous function, specify the span name
{ name: 'get-weather' },
);
// Invoke the traced function as usual
const result = getWeather('San Francisco');
При вызове трассировки функции MLflow автоматически создаст диапазон, который фиксирует:
- Входные аргументы
- Возвращаемое значение
- Сведения об исключении, если было вызвано
- Задержка
Запись вызовов вложенных функций
При трассировке вложенных функций MLflow создаст трассировку с несколькими диапазонами, где структура диапазона фиксирует вложенные вызовы функций.
const sum = mlflow.trace(
(a: number, b: number) => {
return a + b;
},
{ name: 'sum' },
);
const multiply = mlflow.trace(
(a: number, b: number) => {
return a * b;
},
{ name: 'multiply' },
);
const computeArea = mlflow.trace(
(a: number, b: number, h: number) => {
const sumOfBase = sum(a, b);
const area = multiply(sumOfBase, h);
return multiply(area, 0.5);
},
{ name: 'compute-area' },
);
computeArea(1, 2, 3);
Трассировка будет выглядеть следующим образом:
- compute-area
- sum (a=1, b=2)
- multiply (a=3, b=3)
- multiply (a=9, b=0.5)
Трассировка метода класса с помощью @trace API
TypeScript версии 5.0+ поддерживает декораторы. MLflow Tracing поддерживает этот синтаксис для удобной трассировки методов класса. MLflow автоматически создаст диапазон, который фиксирует:
- Входные аргументы
- Возвращаемое значение
- Сведения об исключении, если было вызвано
- Задержка
import * as mlflow from 'mlflow-tracing';
class MyClass {
@mlflow.trace({ spanType: mlflow.SpanType.LLM })
generateText(prompt: string) {
return "It's sunny in Seattle!";
}
}
const myClass = new MyClass();
myClass.generateText("What's the weather like in Seattle?");
Трассировка блока кода с помощью withSpan API
withSpan API полезен, если требуется трассировать блок кода, а не функцию.
import * as mlflow from 'mlflow-tracing';
const question = "What's the weather like in Seattle?";
const result = await mlflow.withSpan(
async (span: mlflow.Span) => {
return "It's sunny in Seattle!";
},
// Pass name, span type, and inputs as options.
{
name: 'generateText',
spanType: mlflow.SpanType.TOOL,
inputs: { prompt: question },
},
);
Создание и завершение диапазона явным образом
Чтобы получить больше контроля над жизненным циклом диапазона, можно создать и завершить диапазон явным образом.
import * as mlflow from 'mlflow-tracing';
const span = mlflow.startSpan({
name: 'generateText',
spanType: mlflow.SpanType.LLM,
inputs: { prompt: question },
});
span.end({
outputs: { answer: "It's sunny in Seattle!" },
status: 'OK',
});
Группирование трассировок по пользователям и сеансам
Многие приложения, используемые на практике, используют сеансы для поддержки многократных взаимодействий с пользователями. С другой стороны, следы часто создаются по запросу. MLflow поддерживает группирование трассировок по сеансам пользователей, чтобы помочь вам понять пути взаимодействия конечных пользователей и выявить проблемы. Дополнительные сведения см. в руководстве по добавлению контекста в трассировку .
Пример фулл-стек приложения
Ознакомьтесь с примером полного стека , чтобы получить полный пример использования пакета SDK трассировки MLflow TypeScript в приложении Node.js.
Дальнейшие шаги
См. следующие страницы:
- Отладка и наблюдение за приложением . Использование пользовательского интерфейса трассировки для анализа поведения и производительности приложения
- Оценка качества приложения — использование трассировок для систематической оценки и улучшения качества приложения
- Мониторинг производства: отслеживание метрик качества в режиме реального времени в производстве