Aller au contenu principal

Optimisation de prompts MLflow (bêta)

info

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.
info

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 :

Text
Answer this question: {{question}}

Après optimisation :

Text
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 :

Python
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 :

Python
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 :

Python
# 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:

Python
# ✅ 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