Optimisation de prompts MLflow (bêta)
Bêta
Cette fonctionnalité est actuellement en bêta.
MLflow propose l'API mlflow.genai.optimize_prompts(), qui vous permet d'améliorer automatiquement vos invites à l'aide de métriques d'évaluation et de données d'entraînement. Cette fonctionnalité vous permet d'améliorer l'efficacité des invites dans n'importe quel framework d'agent en appliquant des algorithmes d'optimisation des invites, en réduisant l'effort manuel et en garantissant une qualité constante.
MLflow prend en charge l'algorithme d'optimisation GEPA via GepaPromptOptimizer, étudié et validé par l'équipe de recherche Databricks AI. GEPA affine les prompts de manière itérative en utilisant la réflexion axée sur les LLM et les retours automatisés, ce qui conduit à des améliorations systématiques et data-driven.
Avantages clés
- **Amélioration automatique** : optimise les invites en fonction des métriques d'évaluation sans réglage manuel.
- Optimisation data-driven : utilise vos données d'entraînement et vos évaluateurs personnalisés pour guider l'optimisation.
- **Indépendant du Framework** : Fonctionne avec n'importe quel Framework d'agent, offrant une large compatibilité.
- Optimisation conjointe : Activer l'affinage simultané de plusieurs prompts pour une performance globale optimale.
- Évaluation flexible : prend en charge les évaluateurs personnalisés et la fonction d'agrégation.
- **Contrôle de version** : enregistre automatiquement les invites optimisées dans le registre d'invites MLflow.
- Extensible : intégrez des algorithmes d'optimisation personnalisés en étendant la classe de base.
Exigences de version
L'optimize_prompts API nécessite MLflow >= 3.5.0 .
Exemple d’optimisation de l’invite
Consultez le tutoriel d'optimisation des invites pour un exemple simple d'optimisation des invites.
L'API produit une invite améliorée qui est plus performante selon vos critères d'évaluation.
Exemple : prompt simple → prompt optimisé
Avant optimisation :
Answer this question: {{question}}
Après optimisation :
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.
Pour une explication complète, consultez la documentation MLflow
Utilisation avancée
Consultez les guides suivants pour les cas d'utilisation avancés,
Cas d'utilisation courants
Les sections suivantes présentent des exemples de code pour les cas d'utilisation courants.
Amélioration de la précision
Optimiser les prompts pour produire des résultats plus précis :
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")],
)
Optimiser pour la sécurité
Assurez-vous que les sorties sont sûres :
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")],
)
Dépannage
Les sections suivantes fournissent des conseils de dépannage pour les erreurs courantes.
Problème : l'optimisation prend trop de temps
Solution : réduisez la taille du dataset ou réduisez le budget de l’optimiseur :
# 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
)
Problème : Aucune amélioration observée
Solution : Vérifiez vos métriques d'évaluation et augmentez la diversité de votre dataset comme suit :
- Assurez-vous que les évaluateurs mesurent précisément ce qui vous intéresse.
- Augmenter la taille et la diversité des données d'entraînement.
- Essayez de modifier les configurations de l'optimiseur.
- Vérifiez que la forme des sorties correspond aux attentes.
Problème : les prompts ne sont pas utilisés
Solution : Assurez-vous que predict_fn appelle mlflow.entities.model_registry.PromptVersion.format:
# ✅ 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}")
Ressources supplémentaires
- Optimiser les prompts — En savoir plus sur l'API d'optimisation des prompts.
- MLflow Tracing – Améliorez l'observabilité de votre application GenAI.
- Agent Evaluation — Évaluez la qualité de votre application GenAI.