Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese Schnellstartanleitung führt Sie durch die Auswertung einer GenAI-Anwendung mithilfe der MLflow Evaluation. Die GenAI-Anwendung ist ein einfaches Beispiel: Ausfüllen von Leerzeichen in einer Satzvorlage, um lustig und kindgerecht zu sein, ähnlich wie das Spiel Mad Libs.
Ein ausführlicheres Lernprogramm finden Sie im Lernprogramm: Auswerten und Verbessern einer GenAI-Anwendung.
Was Sie erreichen werden
Am Ende dieses Lernprogramms werden Sie:
- Erstellen eines Auswertungsdatensatzes für eine automatisierte Qualitätsbewertung
- Definieren von Bewertungskriterien mithilfe von MLflow-Scorern
- Ausführen von Auswertungs- und Überprüfungsergebnissen mithilfe der MLflow-Benutzeroberfläche
- Iterieren und verbessern, indem Sie den Prompt ändern und die Auswertung erneut ausführen
Der gesamte Code auf dieser Seite, einschließlich der Voraussetzungen, ist im Beispielnotizbuch enthalten.
Voraussetzungen
Installieren Sie MLflow und erforderliche Pakete.
%pip install --upgrade "mlflow[databricks]>=3.1.0" openai dbutils.library.restartPython()Erstellen Sie ein MLflow-Experiment. Wenn Sie ein Databricks-Notizbuch verwenden, können Sie diesen Schritt überspringen und das Standard-Notizbuchexperiment verwenden. Folgen Sie andernfalls der Schnellstartanleitung der Umgebung , um das Experiment zu erstellen und eine Verbindung mit dem MLflow Tracking-Server herzustellen.
Schritt 1: Erstellen einer Satzabschlussfunktion
Erstellen Sie zuerst eine einfache Funktion, die Satzvorlagen mit einem LLM abschließt.
Initialisieren Sie einen OpenAI-Client, um eine Verbindung mit von Databricks gehosteten LLMs oder LLMs herzustellen, die von OpenAI gehostet werden.
Von Databricks gehostete LLMs
Verwenden Sie MLflow, um einen OpenAI-Client abzurufen, der eine Verbindung mit von Databricks gehosteten LLMs herstellt. Wählen Sie ein Modell aus den verfügbaren Foundation-Modellen aus.
import mlflow from databricks.sdk import WorkspaceClient # Enable MLflow's autologging to instrument your application with Tracing mlflow.openai.autolog() # Set up MLflow tracking to Databricks mlflow.set_tracking_uri("databricks") mlflow.set_experiment("/Shared/docs-demo") # Create an OpenAI client that is connected to Databricks-hosted LLMs w = WorkspaceClient() client = w.serving_endpoints.get_open_ai_client() # Select an LLM model_name = "databricks-claude-sonnet-4"OpenAI-gehostete LLMs
Verwenden Sie das native OpenAI SDK, um eine Verbindung mit in OpenAI gehosteten Modellen herzustellen. Wählen Sie ein Modell aus den verfügbaren OpenAI-Modellen aus.
import mlflow import os import openai # Ensure your OPENAI_API_KEY is set in your environment # os.environ["OPENAI_API_KEY"] = "<YOUR_API_KEY>" # Uncomment and set if not globally configured # Enable auto-tracing for OpenAI mlflow.openai.autolog() # Set up MLflow tracking to Databricks mlflow.set_tracking_uri("databricks") mlflow.set_experiment("/Shared/docs-demo") # Create an OpenAI client connected to OpenAI SDKs client = openai.OpenAI() # Select an LLM model_name = "gpt-4o-mini"Definieren Sie Ihre Satzabschlussfunktion:
import json # 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=model_name, # This example uses Databricks hosted Claude 3 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}")
Schritt 2: Erstellen von Auswertungsdaten
In diesem Schritt erstellen Sie ein einfaches Auswertungsdatenset mit Satzvorlagen.
# 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)"
}
},
]
Schritt 3: Definieren von Bewertungskriterien
In diesem Schritt richten Sie Bewertungssysteme ein, um die Qualität der Vervollständigungen basierend auf Folgendem zu bewerten:
- Konsistenz der Sprache: Gleiche Sprache wie Eingabe.
- Kreativität: Lustige oder kreative Antworten.
- Kindersicherheit: Altersgerechte Inhalte.
- Vorlagenstruktur: Füllt Leerzeichen, ohne das Format zu ändern.
- Inhaltssicherheit: Keine schädlichen Inhalte.
Fügen Sie ihrer Datei diesen Code hinzu:
from mlflow.genai.scorers import Guidelines, Safety
import mlflow.genai
# Define evaluation scorers
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",
),
Safety(), # Built-in safety scorer
]
Schritt 4: Ausführen der Auswertung
Jetzt können Sie den Satzgenerator auswerten.
# Run evaluation
print("Evaluating with basic prompt...")
results = mlflow.genai.evaluate(
data=eval_data,
predict_fn=generate_game,
scorers=scorers
)
Schritt 5: Überprüfen der Ergebnisse
Sie können die Ergebnisse in der interaktiven Zellausgabe oder in der MLflow-Experiment-UI überprüfen. Um die Experiment-Benutzeroberfläche zu öffnen, klicken Sie auf den Link in den Zellergebnissen.
Klicken Sie auf der Benutzeroberfläche "Experiment" auf die Registerkarte "Auswertungen ".
Überprüfen Sie die Ergebnisse in der Benutzeroberfläche, um die Qualität Ihrer Anwendung zu verstehen und Ideen zur Verbesserung zu identifizieren.
Schritt 6: Verbessern der Eingabeaufforderung
Einige der Ergebnisse sind für Kinder nicht geeignet. Der folgende Code zeigt eine überarbeitete, spezifischere Eingabeaufforderung.
# Update the system prompt to be more specific
SYSTEM_PROMPT = """You are a creative sentence game bot for children's entertainment.
RULES:
1. Make choices that are SILLY, UNEXPECTED, and ABSURD (but appropriate for kids)
2. Use creative word combinations and mix unrelated concepts (e.g., "flying pizza" instead of just "pizza")
3. Avoid realistic or ordinary answers - be as imaginative as possible!
4. Ensure all content is family-friendly and child appropriate for 1 to 6 year olds.
Examples of good completions:
- For "favorite ____ (food)": use "rainbow spaghetti" or "giggling ice cream" NOT "pizza"
- For "____ (job)": use "bubble wrap popper" or "underwater basket weaver" NOT "doctor"
- For "____ (verb)": use "moonwalk backwards" or "juggle jello" NOT "walk" or "eat"
Remember: The funnier and more unexpected, the better!"""
Schritt 7: Bewertung erneut mit verbesserter Eingabeaufforderung ausführen
Führen Sie nach dem Aktualisieren der Eingabeaufforderung die Auswertung erneut aus, um festzustellen, ob sich die Ergebnisse verbessern.
# Re-run evaluation with the updated prompt
# This works because SYSTEM_PROMPT is defined as a global variable, so `generate_game` will use the updated prompt.
results = mlflow.genai.evaluate(
data=eval_data,
predict_fn=generate_game,
scorers=scorers
)
Schritt 8: Vergleichen der Ergebnisse in der MLflow-Benutzeroberfläche
Um Auswertungsläufe zu vergleichen, kehren Sie zur Auswertungs-UI zurück, und vergleichen Sie die beiden Ausführungen. Die Vergleichsansicht hilft Ihnen zu bestätigen, dass Ihre Eingabeaufforderungsverbesserungen zu besseren Ausgaben gemäß Ihren Auswertungskriterien geführt haben.
Beispielnotizbuch
Das folgende Notizbuch enthält den gesamten Code auf dieser Seite.
Auswertung eines Schnellstart-Notizbuchs für eine GenAI-App
Anleitungen und Referenzen
Ausführliche Informationen zu Konzepten und Features in diesem Handbuch finden Sie unter:
- Scorer – Verstehen, wie MLflow-Scorer GenAI-Anwendungen auswerten.