Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Трассировка MLflow предоставляет возможность автоматической трассировки для моделей Databricks Foundation. Так как модели Databricks Foundation используют API, совместимый с OpenAI, вы можете включить автоматическую трассировку, вызвав функцию mlflow.openai.autolog, и MLflow будет фиксировать трассы вызовов LLM и записывать их в активный эксперимент MLflow.
import mlflow
mlflow.openai.autolog()
Трассировка MLflow автоматически записывает следующие сведения о вызовах Databricks Foundation Model:
- Запросы и результаты выполнения
- Задержки
- Имя модели и конечная точка
- Дополнительные метаданные, такие как
temperature,max_tokensесли задано - Вызов функции, если она возвращается в рамках ответа
- Любое исключение, если оно возникнет
Замечание
В бессерверных вычислительных кластерах автоматическая журнализация не включена автоматически. Необходимо явно вызвать mlflow.openai.autolog() для включения автоматической трассировки для этой интеграции.
Предпосылки
Чтобы использовать трассировку MLflow с моделями Databricks Foundation, необходимо установить MLflow и пакет SDK OpenAI (так как модели Databricks Foundation используют API, совместимый с OpenAI).
Развитие
Для сред разработки установите полный пакет MLflow с дополнительными компонентами Databricks и пакетом SDK OpenAI:
pip install --upgrade "mlflow[databricks]>=3.1" openai
Полный mlflow[databricks] пакет включает все функции для локальной разработки и экспериментирования в Databricks.
Производство
Для рабочих развертываний установите mlflow-tracing и пакет SDK OpenAI:
pip install --upgrade mlflow-tracing openai
Пакет mlflow-tracing оптимизирован для использования в рабочей среде.
Замечание
MLflow 3 настоятельно рекомендуется для лучшего отслеживания с Databricks Foundation Models.
Перед выполнением примеров необходимо настроить среду:
Для пользователей вне ноутбуков Databricks: задайте переменные среды Databricks:
export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="your-personal-access-token"
Для пользователей записных книжек Databricks: эти учетные данные устанавливаются автоматически.
Поддерживаемые API
MLflow поддерживает автоматическую трассировку для следующих API модели Databricks Foundation:
| Завершение чата | Вызов функции | Стриминг | Асинхронность |
|---|---|---|---|
| ✅ | ✅ | ✅ | ✅ |
Чтобы запросить поддержку дополнительных API, откройте запрос на функцию на сайте GitHub.
Базовый пример
import mlflow
import os
from openai import OpenAI
# Databricks Foundation Model APIs use Databricks authentication.
# Enable auto-tracing for OpenAI (which will trace Databricks Foundation Model API calls)
mlflow.openai.autolog()
# Set up MLflow tracking to Databricks
mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/Shared/databricks-foundation-models-demo")
# Create OpenAI client configured for Databricks
client = OpenAI(
api_key=os.environ.get("DATABRICKS_TOKEN"),
base_url=f"{os.environ.get('DATABRICKS_HOST')}/serving-endpoints"
)
messages = [
{
"role": "user",
"content": "What is the capital of France?",
}
]
response = client.chat.completions.create(
model="databricks-llama-4-maverick",
messages=messages,
temperature=0.1,
max_tokens=100,
)
Стриминг
Трассировка MLflow поддерживает API потоковой передачи моделей Databricks Foundation. При той же настройке автоматической трассировки MLflow автоматически отслеживает ответ потоковой передачи и отрисовывает объединенные выходные данные в пользовательском интерфейсе диапазона.
import mlflow
import os
from openai import OpenAI
# Enable auto-tracing for OpenAI (which will trace Databricks Foundation Model API calls)
mlflow.openai.autolog()
# Set up MLflow tracking to Databricks if not already configured
# mlflow.set_tracking_uri("databricks")
# mlflow.set_experiment("/Shared/databricks-streaming-demo")
# Create OpenAI client configured for Databricks
client = OpenAI(
api_key=os.environ.get("DATABRICKS_TOKEN"),
base_url=f"{os.environ.get('DATABRICKS_HOST')}/serving-endpoints"
)
stream = client.chat.completions.create(
model="databricks-llama-4-maverick",
messages=[
{"role": "user", "content": "Explain the benefits of using Databricks Foundation Models"}
],
stream=True, # Enable streaming response
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")
Вызов функции
Трассировка MLflow автоматически фиксирует ответ на вызовы функций из моделей Databricks Foundation. Инструкция функции в ответе будет выделена в интерфейсе трассировки. Более того, можно аннотировать функцию инструмента с помощью декоратора @mlflow.trace, чтобы создать область для выполнения инструмента.
В следующем примере реализован простой агент вызова функции с помощью моделей Databricks Foundation и трассировки MLflow.
import json
import os
from openai import OpenAI
import mlflow
from mlflow.entities import SpanType
# Enable auto-tracing for OpenAI (which will trace Databricks Foundation Model API calls)
mlflow.openai.autolog()
# Set up MLflow tracking to Databricks if not already configured
# mlflow.set_tracking_uri("databricks")
# mlflow.set_experiment("/Shared/databricks-function-agent-demo")
# Create OpenAI client configured for Databricks
client = OpenAI(
api_key=os.environ.get("DATABRICKS_TOKEN"),
base_url=f"{os.environ.get('DATABRICKS_HOST')}/serving-endpoints"
)
# Define the tool function. Decorate it with `@mlflow.trace` to create a span for its execution.
@mlflow.trace(span_type=SpanType.TOOL)
def get_weather(city: str) -> str:
if city == "Tokyo":
return "sunny"
elif city == "Paris":
return "rainy"
return "unknown"
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
},
},
}
]
_tool_functions = {"get_weather": get_weather}
# Define a simple tool calling agent
@mlflow.trace(span_type=SpanType.AGENT)
def run_tool_agent(question: str):
messages = [{"role": "user", "content": question}]
# Invoke the model with the given question and available tools
response = client.chat.completions.create(
model="databricks-llama-4-maverick",
messages=messages,
tools=tools,
)
ai_msg = response.choices[0].message
# If the model requests tool call(s), invoke the function with the specified arguments
if tool_calls := ai_msg.tool_calls:
for tool_call in tool_calls:
function_name = tool_call.function.name
if tool_func := _tool_functions.get(function_name):
args = json.loads(tool_call.function.arguments)
tool_result = tool_func(**args)
else:
raise RuntimeError("An invalid tool is returned from the assistant!")
messages.append(
{
"role": "tool",
"tool_call_id": tool_call.id,
"content": tool_result,
}
)
# Send the tool results to the model and get a new response
response = client.chat.completions.create(
model="databricks-llama-4-maverick", messages=messages
)
return response.choices[0].message.content
# Run the tool calling agent
question = "What's the weather like in Paris today?"
answer = run_tool_agent(question)
Доступные модели
Databricks Foundation Models предоставляет доступ к разнообразным передовым моделям, включая Llama, Anthropic и другие ведущие базовые модели.
Полный и наиболее up-toсписок доступных моделей и их идентификаторов моделей см. в документации по Databricks Foundation Models.
Отключение автоматической трассировки
Автоматическая трассировка для моделей Databricks Foundation может быть отключена в глобальном масштабе путем вызова mlflow.openai.autolog(disable=True) или mlflow.autolog(disable=True).