Exercices Prompt Engineering Router vers le bon modèle selon la tache
🎉

Bravo!

Avancé 🧠 Fondamentaux 30 XP 0 personnes ont réussi

Router vers le bon modèle selon la tache

Utiliser gpt-4o pour reformuler un email, c'est comme prendre un avion pour traverser la rue. En production, tu routes chaque requete vers le modele le plus adapte : gpt-4o-mini pour les taches simples (pas cher, rapide) et gpt-4o pour les taches complexes (analyse juridique, debug de code). Ca divise ta facture par 10.

Un routeur intelligent analyse la demande et choisit le bon modele automatiquement.

Écris une fonction choisir_modele(prompt, tokens_estimes) qui retourne le nom du modèle a utiliser selon ces regles :

- Si le prompt contient un des mots-cles suivants (insensible a la casse) : 'analyse', 'juridique', 'contrat', 'code', 'debug', 'architecture' -> utilise 'gpt-4o' (tache complexe)
- Si tokens_estimes > 2000 -> utilise 'gpt-4o-mini' (on economise sur les longs textes simples)
- Sinon -> utilise 'gpt-4o-mini' (défaut economique)

La fonction retourne aussi le cout estime. Elle retourne un dictionnaire avec 'modèle' et 'cout_estime' (en utilisant la formule de calcul de cout avec les memes prix que l'exercice 6, en supposant que la réponse fera autant de tokens que le prompt).

Exemple :
choisir_modele('Analyse ce contrat', 500)
retourne {'modèle': 'gpt-4o', 'cout_estime': ...}

choisir_modele('Dis bonjour', 100)
retourne {'modèle': 'gpt-4o-mini', 'cout_estime': ...}

Tests (1/1)

Tests
import math

# Tache complexe
result = choisir_modele('Analyse ce contrat juridique', 500)
assert result['modèle'] == 'gpt-4o', 'Un prompt avec analyse et juridique doit utiliser gpt-4o'
assert result['cout_estime'] > 0, 'Le cout doit etre positif'

# Tache simple
result2 = choisir_modele('Dis bonjour', 100)
assert result2['modèle'] == 'gpt-4o-mini', 'Un prompt simple doit utiliser gpt-4o-mini'

# Mot-cle en majuscules
result3 = choisir_modele('DEBUG ce problème', 300)
assert result3['modèle'] == 'gpt-4o', 'La detection doit etre insensible a la casse'

# Cout gpt-4o plus cher que gpt-4o-mini
cout_mini = choisir_modele('Bonjour', 1000)['cout_estime']
cout_4o = choisir_modele('Analyse ceci', 1000)['cout_estime']
assert cout_4o > cout_mini, 'gpt-4o doit couter plus cher que gpt-4o-mini'

# Vérification du calcul de cout pour gpt-4o-mini
result4 = choisir_modele('Salut', 1000000)
attendu = (1000000 * 0.15 / 1000000) + (1000000 * 0.60 / 1000000)
assert math.isclose(result4['cout_estime'], attendu, rel_tol=1e-6), 'Le calcul de cout est incorrect'

Indices (3 disponibles)

solution.py
Non stockée