Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze quickstart wordt u begeleid bij het evalueren van een GenAI-toepassing met behulp van MLflow Evaluation. De GenAI-toepassing is een eenvoudig voorbeeld: het invullen van lege plekken in een zinsjabloon om grappig en kindvriendelijk te zijn, vergelijkbaar met het spel Mad Libs.
Voor een gedetailleerdere zelfstudie, zie Zelfstudie: Een GenAI-toepassing evalueren en verbeteren.
Wat u zult bereiken
Aan het einde van deze zelfstudie gaat u het volgende doen:
- Een evaluatiegegevensset maken voor geautomatiseerde kwaliteitsevaluatie
- Evaluatiecriteria definiëren met MLflow-scorers
- Evaluatie uitvoeren en resultaten bekijken met behulp van de MLflow-gebruikersinterface
- Herhalen en verbeteren door uw prompt en evaluatie opnieuw uit te voeren
Alle code op deze pagina, inclusief vereisten, is opgenomen in het voorbeeldnotitieblok.
Vereiste voorwaarden
Installeer MLflow en vereiste pakketten.
%pip install --upgrade "mlflow[databricks]>=3.1.0" openai dbutils.library.restartPython()Maak een MLflow-experiment. Als u een Databricks-notebook gebruikt, kunt u deze stap overslaan en het standaardnotitieblokexperiment gebruiken. Volg anders de quickstart voor de installatie van de omgeving om het experiment te maken en verbinding te maken met de MLflow Tracking-server.
Stap 1: Een zinsvoltooiingsfunctie maken
Maak eerst een eenvoudige functie waarmee zinsjablonen worden voltooid met behulp van een LLM.
Initialiseer een OpenAI-client om verbinding te maken met door Databricks gehoste LLM's of LLM's die worden gehost door OpenAI.
Door Databricks gehoste LLMs
Gebruik MLflow om een OpenAI-client op te halen die verbinding maakt met door Databricks gehoste LLM's. Selecteer een model in de beschikbare basismodellen.
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-hostende LLM's
Gebruik de systeemeigen OpenAI SDK om verbinding te maken met door OpenAI gehoste modellen. Selecteer een model in de beschikbare OpenAI-modellen.
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"Definieer de voltooiingsfunctie van uw zin:
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}")
Stap 2: Evaluatiegegevens maken
In deze stap maakt u een eenvoudige evaluatiegegevensset met zinsjablonen.
# 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)"
}
},
]
Stap 3: Evaluatiecriteria definiëren
In deze stap stelt u scorers in om de kwaliteit van de voltooiingen te evalueren op basis van het volgende:
- Taalconsistentie: dezelfde taal als invoer.
- Creativiteit: Grappige of creatieve reacties.
- Veiligheid van kinderen: inhoud die geschikt is voor leeftijd.
- Sjabloonstructuur: hiermee worden lege waarden ingevuld zonder de opmaak te wijzigen.
- Inhoudsveiligheid: Geen schadelijke inhoud.
Voeg deze code toe aan uw bestand:
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
]
Stap 4: Evaluatie uitvoeren
Nu bent u klaar om de zinsgenerator te evalueren.
# Run evaluation
print("Evaluating with basic prompt...")
results = mlflow.genai.evaluate(
data=eval_data,
predict_fn=generate_game,
scorers=scorers
)
Stap 5: De resultaten bekijken
U kunt de resultaten bekijken in de interactieve celuitvoer of in de gebruikersinterface van het MLflow-experiment. Als u de gebruikersinterface van het experiment wilt openen, klikt u op de koppeling in de celresultaten.
Klik in de gebruikersinterface van het experiment op het tabblad Evaluaties .
Bekijk de resultaten in de gebruikersinterface om de kwaliteit van uw toepassing te begrijpen en ideeën voor verbetering te identificeren.
Stap 6: De prompt verbeteren
Sommige resultaten zijn niet geschikt voor kinderen. De volgende code toont een herziene, specifiekere prompt.
# 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!"""
Stap 7: Evaluatie opnieuw uitvoeren met verbeterde prompt
Nadat u de prompt hebt bijgewerkt, voert u de evaluatie opnieuw uit om te zien of de scores zijn verbeterd.
# 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
)
Stap 8: Resultaten vergelijken in de MLflow-gebruikersinterface
Als u evaluatieuitvoeringen wilt vergelijken, gaat u terug naar de evaluatiegebruikersinterface en vergelijkt u de twee uitvoeringen. De vergelijkingsweergave helpt u te bevestigen dat uw promptverbeteringen hebben geleid tot betere uitvoer op basis van uw evaluatiecriteria.
voorbeeldnotitieblok
Het volgende notitieboek bevat alle code op deze pagina.
Snelstartnotebook voor een GenAI-app evalueren
Handleidingen en verwijzingen
Zie voor meer informatie over concepten en functies in deze handleiding:
- Scorers : inzicht in hoe MLflow-scorers GenAI-toepassingen evalueren.