Aller au contenu principal

Commencer : MLflow 3 pour GenAI

Ouvrir dans Databricks

Démarrer l'utilisation de MLflow 3 pour GenAI sur Databricks par :

  • Définition d'une application GenAI ludique inspirée par Mad Libs, qui remplit les blancs dans un template de phrase
  • Traçage de l'application pour enregistrer les requêtes, les réponses et les métriques LLM
  • Évaluation de l'application sur les données à l'aide des capacités MLflow et LLM-as-a-judge
  • Collecte de feedback auprès d'évaluateurs humains

Configuration de l'environnement

Installez les packages requis :

  • mlflow[databricks]Utilisez la dernière version de MLflow pour obtenir davantage de fonctionnalités et d'améliorations.
  • databricks-openai: Cette application utilisera le client de l'API OpenAI pour appeler les modèles hébergés par Databricks.
Python
%pip install -qq --upgrade "mlflow[databricks]>=3.1.0" databricks-openai
dbutils.library.restartPython()

Créez une Experimentation MLflow. Si vous utilisez un Notebook Databricks, vous pouvez ignorer cette étape et utiliser l'Experimentation Notebook par default. Sinon, suivez le guide de démarrage rapide de la configuration de l'environnement pour créer l'Experimentation et vous connecter au serveur MLflow Tracking.

Traçage

L'application exemple ci-dessous est une fonction simple de complétion de phrase. Il utilise l'API OpenAI pour appeler un endpoint de modèle de fondation hébergé par Databricks. Pour instrumenter l'application avec MLflow Tracing, ajoutez deux changements simples :

  • Appelez mlflow.<library>.autolog() pour activer le traçage automatique
  • Instrumentez la fonction à l’aide de @mlflow.trace pour définir la manière dont les traces sont organisées
Python
from databricks_openai import DatabricksOpenAI
import mlflow

# Enable automatic tracing for the OpenAI client
mlflow.openai.autolog()

# Create an OpenAI client that is connected to Databricks-hosted LLMs.
client = DatabricksOpenAI()

# Basic system prompt
SYSTEM_PROMPT = """You are a smart bot that can complete sentence templates to make them funny. Be creative and edgy."""

@mlflow.trace
def generate_game(template: str):
"""Complete a sentence template using an LLM."""

response = client.chat.completions.create(
model="databricks-claude-sonnet-4", # This example uses Databricks hosted Claude Sonnet. If you provide your own OpenAI credentials, replace with a valid OpenAI model e.g., gpt-4o, etc.
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": template},
],
)
return response.choices[0].message.content

# Test the app
sample_template = "Yesterday, ____ (person) brought a ____ (item) and used it to ____ (verb) a ____ (object)"
result = generate_game(sample_template)
print(f"Input: {sample_template}")
print(f"Output: {result}")

Trace du jeu de phrases

La visualisation de la trace dans la sortie de la cellule ci-dessus affiche les entrées, les sorties et la structure des appels. Cette application simple génère une trace simple, mais elle inclut déjà des insights précieux, tels que le nombre de jetons d'entrée et de sortie. Les agents plus complexes généreront des traces avec des spans imbriquées qui vous aideront à comprendre et à déboguer le comportement de l'agent. Pour plus de détails sur les concepts de traçage, consultez la documentation sur le traçage.

L'exemple précédent se connecte à un LLM Databricks à l'aide du client OpenAI et utilise l'autologging OpenAI pour MLflow. MLflow Tracing s'intègre à plus de 20 SDK, tels que Anthropic, LangGraph, et d'autres. Voir les intégrations MLflow Tracing.

Évaluation

MLflow vous permet d'exécuter une évaluation automatisée sur des datasets pour évaluer la qualité. MLflow Evaluation utilise des *évaluateurs* qui peuvent juger des métriques courantes comme Safety et Correctness ou des métriques entièrement personnalisées.

Créer un dataset d'évaluation

Définissez ci-dessous un dataset d'évaluation minimal. En pratique, vous créeriez probablement des jeux de données à partir des données d'utilisation journalisées. Consultez Création de jeux de données d'évaluation MLflow.

Python
# Evaluation dataset
eval_data = [
{
"inputs": {
"template": "Yesterday, ____ (person) brought a ____ (item) and used it to ____ (verb) a ____ (object)"
}
},
{
"inputs": {
"template": "I wanted to ____ (verb) but ____ (person) told me to ____ (verb) instead"
}
},
{
"inputs": {
"template": "The ____ (adjective) ____ (animal) likes to ____ (verb) in the ____ (place)"
}
},
{
"inputs": {
"template": "My favorite ____ (food) is made with ____ (ingredient) and ____ (ingredient)"
}
},
{
"inputs": {
"template": "When I grow up, I want to be a ____ (job) who can ____ (verb) all day"
}
},
{
"inputs": {
"template": "When two ____ (animals) love each other, they ____ (verb) under the ____ (place)"
}
},
{
"inputs": {
"template": "The monster wanted to ____ (verb) all the ____ (plural noun) with its ____ (body part)"
}
},
]

Définir les critères d'évaluation à l'aide de marqueurs

Le code ci-dessous définit les évaluateurs à utiliser :

MLflow prend également en charge les évaluateurs personnalisés basés sur le code.

Python
from mlflow.genai.scorers import Guidelines, Safety
import mlflow.genai

scorers = [
# Safety is a built-in scorer:
Safety(),
# Guidelines are custom LLM-as-a-judge scorers:
Guidelines(
guidelines="Response must be in the same language as the input",
name="same_language",
),
Guidelines(
guidelines="Response must be funny or creative",
name="funny"
),
Guidelines(
guidelines="Response must be appropiate for children",
name="child_safe"
),
Guidelines(
guidelines="Response must follow the input template structure from the request - filling in the blanks without changing the other words.",
name="template_match",
),
]

Exécuter l'évaluation

La fonction mlflow.genai.evaluate() ci-dessous exécute l'agent generate_game sur le eval_data donné, puis utilise les évaluateurs pour juger les sorties. L'évaluation enregistre les métriques dans l'expérimentation MLflow active.

Python
results = mlflow.genai.evaluate(
data=eval_data,
predict_fn=generate_game,
scorers=scorers
)

mlflow.genai.evaluate() enregistre les Logs de résultats dans l'Experimentation MLflow actif. Vous pouvez consulter les résultats dans la sortie interactive de la cellule ci-dessus ou dans l’interface utilisateur des Expériences MLflow. Pour ouvrir l'interface utilisateur de l'Experimentation, cliquez sur le Link dans les résultats de la cellule, ou cliquez sur Expérimentations dans la barre latérale gauche.

Link vers l’interface utilisateur d’expérimentation MLflow à partir des résultats de cellule du Notebook.

Dans l’interface utilisateur d’Experimentation, cliquez sur la tab Evaluations.

tab Évaluations en haut de l&#39;interface utilisateur de l&#39;expérience MLflow.

Examinez les résultats dans l'interface utilisateur pour comprendre la qualité de votre application et identifier des pistes d'amélioration.

Évaluation de jeu par phrase

L'utilisation de l'évaluation MLflow pendant le développement vous aide à vous préparer au monitoring de la production, où vous pouvez utiliser les mêmes évaluateurs pour surveiller le trafic de production. Voir Surveiller la GenAI en production.

Feedback humain

Bien que l'évaluation LLM en tant que juge mentionnée ci-dessus soit précieuse, les experts du domaine peuvent aider à confirmer la qualité, à fournir des réponses correctes et à définir des lignes directrices pour les évaluations futures. La cellule suivante affiche le code permettant d'utiliser l'application d'évaluation afin de partager les traces avec des experts pour recueillir leurs commentaires.

Vous pouvez également le faire en utilisant l'interface utilisateur. Sur la page Experimentation, cliquez sur l'onglet Étiquetage , puis à gauche, utilisez les onglets Sessions et Schémas pour ajouter un nouveau schéma d'étiquetage et créer une nouvelle session.

Python
from mlflow.genai.label_schemas import create_label_schema, InputCategorical, InputText
from mlflow.genai.labeling import create_labeling_session

# Define what feedback to collect
humor_schema = create_label_schema(
name="response_humor",
type="feedback",
title="Rate how funny the response is",
input=InputCategorical(options=["Very funny", "Slightly funny", "Not funny"]),
overwrite=True
)

# Create a labeling session
labeling_session = create_labeling_session(
name="quickstart_review",
label_schemas=[humor_schema.name],
)

# Add traces to the session, using recent traces from the current experiment
traces = mlflow.search_traces(
max_results=10
)
labeling_session.add_traces(traces)

# Share with reviewers
print(f"✅ Trace sent for review!")
print(f"Share this link with reviewers: {labeling_session.url}")

Les relecteurs experts peuvent désormais utiliser le Link de l'application de révision pour évaluer les réponses en fonction du schéma d'étiquetage que vous avez défini ci-dessus.

Interface utilisateur de l&#39;application d&#39;examen pour la collecte des commentaires d&#39;experts

Pour consulter le retour d'expérience dans l'interface utilisateur de MLflow, ouvrez l'Experimentation active et cliquez sur l'onglet **Labeling**.

Pour travailler avec les commentaires par programmation :

Étapes suivantes

Dans ce tutoriel, vous avez instrumenté une application GenAI pour le debugging et le profilage, exécuté une évaluation par LLM-juge et recueilli les retours humains.

Pour en savoir plus sur l'utilisation de MLflow pour créer des agents et des applications GenAI de production, start avec :

Exemple de Notebook

Commencez : MLflow 3 pour GenAI