MLflow Prompt Optimization (Beta)

Von Bedeutung

Dieses Feature befindet sich derzeit in der Betaversion.

MLflow bietet die mlflow.genai.optimize_prompts() API, die es Ihnen ermöglicht, Ihre Prompts mithilfe von Auswertungsmetriken und Trainingsdaten automatisch zu verbessern. Dieses Feature ermöglicht es Ihnen, die Effektivität von Eingabeaufforderungen in jedem Agenten-Framework zu verbessern, indem Sie Optimierungsalgorithmen für Eingabeaufforderungen anwenden, den manuellen Aufwand reduzieren und eine konsistente Qualität sicherstellen.

MLflow unterstützt den Optimierungsalgorithmus GEPA durch den GepaPromptOptimizer, der vom Databricks AI Research Team erforscht und validiert wurde. GEPA iterativ optimiert Aufforderungen mithilfe von LLM-gesteuerter Reflexion und automatisiertem Feedback, was zu systematischen und datengesteuerten Verbesserungen führt.

Hauptvorteile

  • Automatische Verbesserung: Optimiert Aufforderungen basierend auf Auswertungsmetriken ohne manuelle Optimierung.
  • Datengesteuerte Optimierung: Verwendet Ihre Trainingsdaten und benutzerdefinierte Scorer, um die Optimierung zu steuern.
  • Framework Agnostic: Arbeitet mit jedem Agent-Framework und bietet umfassende Kompatibilität.
  • Gemeinsame Optimierung: Aktivieren Sie die gleichzeitige Verfeinerung mehrerer Eingabeaufforderungen für eine optimale Gesamtleistung.
  • Flexible Auswertung: Bietet Unterstützung für benutzerdefinierte Scorer und Aggregationsfunktionen.
  • Versionssteuerung: Registriert automatisch optimierte Eingabeaufforderungen in der MLflow-Eingabeaufforderungsregistrierung.
  • Erweiterbar: Schließen Sie benutzerdefinierte Optimierungsalgorithmen ein, indem Sie die Basisklasse erweitern.

Von Bedeutung

Für die optimize_prompts API ist MLflow >= 3.5.0 erforderlich.

Beispiel für die Prompt-Optimierung

Ein einfaches Beispiel für die Eingabeaufforderungsoptimierung finden Sie im Lernprogramm zum Optimieren von Eingabeaufforderungen .

Die API erzeugt eine verbesserte Eingabeaufforderung, die ihre Bewertungskriterien besser erfüllt.

Beispiel: Einfache Aufforderung → Optimierte Aufforderung

Vor Optimierung:

Answer this question: {{question}}

Nach Optimierung:

Answer this question: {{question}}.
Focus on providing precise,
factual information without additional commentary or explanations.

1. **Identify the Subject**: Clearly determine the specific subject
of the question (e.g., geography, history)
and provide a concise answer.

2. **Clarity and Precision**: Your response should be a single,
clear statement that directly addresses the question.
Do not add extra details, context, or alternatives.

3. **Expected Format**: The expected output should be the exact answer
with minimal words where appropriate.
For instance, when asked about capitals, the answer should
simply state the name of the capital city,
e.g., "Tokyo" for Japan, "Rome" for Italy, and "Paris" for France.

4. **Handling Variations**: If the question contains multiple
parts or variations, focus on the primary query
 and answer it directly. Avoid over-complication.

5. **Niche Knowledge**: Ensure that the responses are based on
commonly accepted geographic and historical facts,
as this type of information is crucial for accuracy in your answers.

Adhere strictly to these guidelines to maintain consistency
and quality in your responses.

Eine vollständige Erläuterung finden Sie in der MLflow-Dokumentation

Erweiterte Verwendung

Weitere Informationen zu erweiterten Anwendungsfällen finden Sie in den folgenden Leitfäden:

Gängige Anwendungsfälle

In den folgenden Abschnitten finden Sie Beispielcode für häufige Anwendungsfälle.

Verbessern der Genauigkeit

Optimieren Sie Eingabeaufforderungen, um genauere Ergebnisse zu erzielen.

from mlflow.genai.scorers import Correctness


result = mlflow.genai.optimize_prompts(
    predict_fn=predict_fn,
    train_data=dataset,
    prompt_uris=[prompt.uri],
    optimizer=GepaPromptOptimizer(reflection_model="databricks:/databricks-gpt-5"),
    scorers=[Correctness(model="databricks:/databricks-claude-sonnet-4-5")],
)

Optimieren der Sicherheit

Stellen Sie sicher, dass die Ausgaben sicher sind:

from mlflow.genai.scorers import Safety


result = mlflow.genai.optimize_prompts(
    predict_fn=predict_fn,
    train_data=dataset,
    prompt_uris=[prompt.uri],
    optimizer=GepaPromptOptimizer(reflection_model="databricks:/databricks-claude-sonnet-4-5"),
    scorers=[Safety(model="databricks:/databricks-claude-sonnet-4-5")],
)

Problembehandlung

In den folgenden Abschnitten finden Sie Anleitungen zur Problembehandlung für häufige Fehler.

Problem: Optimierung dauert zu lange

Lösung: Verringern Sie die Datasetgröße, oder reduzieren Sie das Optimiererbudget:

# Use fewer examples
small_dataset = dataset[:20]

# Use faster model for optimization
optimizer = GepaPromptOptimizer(
    reflection_model="databricks:/databricks-gpt-5-mini", max_metric_calls=100
)

Problem: Keine Verbesserung beobachtet

Lösung: Überprüfen Sie Ihre Auswertungsmetriken, und erhöhen Sie die Datasetvielfalt wie folgt:

  • Stellen Sie sicher, dass die Bewertenden genau das messen, was Ihnen wichtig ist.
  • Erhöhen Sie die Größe und Vielfalt von Schulungsdaten.
  • Versuchen Sie, Optimiererkonfigurationen zu ändern.
  • Stellen Sie sicher, dass die Form der Ausgaben den Erwartungen entspricht.

Problem: Prompts werden nicht verwendet

Lösung: Stellen Sie sicher, dass predict_fnmlflow.entities.model_registry.PromptVersion.format aufruft:

# ✅ Correct - loads from registry
def predict_fn(question: str):
    prompt = mlflow.genai.load_prompt(f"prompts:/{prompt_location}@latest)
    return llm_call(prompt.format(question=question))


# ❌ Incorrect - hardcoded prompt
def predict_fn(question: str):
    return llm_call(f"Answer: {question}")

Weitere Ressourcen