Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa guida introduttiva illustra la valutazione di un'applicazione GenAI usando MLflow Evaluation. L'applicazione GenAI è un semplice esempio: compilare spazi vuoti in un modello di frase per essere divertente e appropriato per bambini, simile al gioco Mad Libs.
Per un'esercitazione più dettagliata, vedere Esercitazione: Valutare e migliorare un'applicazione GenAI.
Quello che otterrai
Al termine di questa esercitazione, si eseguiranno le seguenti attività:
- Creare un set di dati di valutazione per la valutazione della qualità automatizzata
- Definire i criteri di valutazione usando i scorer MLflow
- Eseguire la valutazione ed esaminare i risultati usando l'interfaccia utente di MLflow
- Iterare e migliorare modificando la richiesta e rieseguendo la valutazione
Tutto il codice in questa pagina, inclusi i prerequisiti, è incluso nel notebook di esempio.
Prerequisiti
Installare MLflow e i pacchetti necessari.
%pip install --upgrade "mlflow[databricks]>=3.1.0" openai dbutils.library.restartPython()Creare un esperimento MLflow. Se si usa un notebook di Databricks, è possibile ignorare questo passaggio e usare l'esperimento predefinito del notebook. In caso contrario, seguire la guida introduttiva alla configurazione dell'ambiente per creare l'esperimento e connettersi al server MLflow Tracking.
Passaggio 1: Creare una funzione di completamento frasi
Creare prima di tutto una funzione semplice che completa i modelli di frase usando un LLM.
Inizializza un client OpenAI per connettersi a LLM ospitati da Databricks o da OpenAI.
Modelli di linguaggio di grandi dimensioni ospitati in Databricks
Usare MLflow per ottenere un client OpenAI che si connette a LLM ospitati su Databricks. Selezionare un modello dai modelli di base disponibili.
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"LLMs ospitati da OpenAI
Usare OpenAI SDK nativo per connettersi ai modelli ospitati in OpenAI. Selezionare un modello dai modelli OpenAI disponibili.
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"Definire la funzione di completamento della frase:
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}")
Passaggio 2: Creare dati di valutazione
In questo passaggio viene creato un set di dati di valutazione semplice con modelli di frase.
# 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)"
}
},
]
Passaggio 3: Definire i criteri di valutazione
In questo passaggio si configurano i valutatori per valutare la qualità dei completamenti in base ai seguenti criteri.
- Coerenza della lingua: stessa lingua dell'input.
- Creatività: risposte divertenti o creative.
- Sicurezza dei bambini: contenuto appropriato per l'età.
- Struttura del modello: riempie gli spazi vuoti senza modificare il formato.
- Sicurezza del contenuto: nessun contenuto dannoso.
Aggiungere questo codice al file:
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
]
Passaggio 4: Eseguire la valutazione
A questo momento si è pronti per valutare il generatore di frasi.
# Run evaluation
print("Evaluating with basic prompt...")
results = mlflow.genai.evaluate(
data=eval_data,
predict_fn=generate_game,
scorers=scorers
)
Passaggio 5: Esaminare i risultati
È possibile esaminare i risultati nell'output interattivo della cella o nell'interfaccia utente dell'esperimento MLflow. Per aprire l'interfaccia utente dell'esperimento, fare clic sul collegamento nei risultati della cella.
Nell'interfaccia utente dell'esperimento fare clic sulla scheda Valutazioni .
Esaminare i risultati nell'interfaccia utente per comprendere la qualità dell'applicazione e identificare le idee per il miglioramento.
Passaggio 6: Migliorare il comando
Alcuni dei risultati non sono appropriati per i bambini. Il codice seguente mostra una richiesta modificata e più specifica.
# 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!"""
Passaggio 7: Eseguire nuovamente la valutazione con un prompt migliorato
Dopo aver aggiornato il prompt, eseguire nuovamente la valutazione per verificare se i punteggi migliorano.
# 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
)
Passaggio 8: Confrontare i risultati nell'interfaccia utente di MLflow
Per confrontare le esecuzioni di valutazione, tornare all'interfaccia utente di valutazione e confrontare le due esecuzioni. La visualizzazione di confronto aiuta a confermare che i miglioramenti delle richieste hanno portato a output migliori secondo i tuoi criteri di valutazione.
Notebook di esempio
Il notebook seguente include tutto il codice su questa pagina.
Valutazione di un notebook di avvio rapido dell'app GenAI
Guide e riferimenti
Per informazioni dettagliate sui concetti e sulle funzionalità di questa guida, vedere:
- Scorer : informazioni su come i scorer MLflow valutano le applicazioni GenAI.