Exercices Prompt Engineering System prompt adaptatif
🎉

Bravo!

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

System prompt adaptatif

Un chatbot de support technique ne parle pas de la meme facon a un debutant et a un developpeur senior. En production, ton system prompt s'adapte dynamiquement au contexte : le produit concerne, le niveau de l'utilisateur, la langue, les contraintes de longueur...

L'idee est de construire le system prompt en assemblant des blocs :

base = "Tu es un assistant technique pour {produit}."
niveau = " Adapte tes réponses pour un utilisateur {niveau}."
langue = " Reponds toujours en {langue}."
contrainte = " Limite tes réponses a {max_mots} mots maximum."

Écris une fonction construire_system_prompt(config) qui prend un dictionnaire de configuration et retourne un system prompt adapte. Le dictionnaire peut contenir les clés suivantes (toutes optionnelles sauf 'produit') :

- 'produit' (obligatoire) : le nom du produit
- 'niveau' (optionnel, défaut 'intermediaire') : 'debutant', 'intermediaire' ou 'avance'
- 'langue' (optionnel, défaut 'francais') : la langue de réponse
- 'max_mots' (optionnel) : si present, ajoute la contrainte de longueur

Le prompt retourne doit contenir :
- toujours la phrase avec le produit
- toujours la phrase avec le niveau
- toujours la phrase avec la langue
- la contrainte de mots seulement si max_mots est present dans le dictionnaire

Exemple :
construire_system_prompt({'produit': 'Python'})
retourne "Tu es un assistant technique pour Python. Adapte tes réponses pour un utilisateur intermediaire. Reponds toujours en francais."

construire_system_prompt({'produit': 'Django', 'niveau': 'debutant', 'max_mots': 100})
retourne "Tu es un assistant technique pour Django. Adapte tes réponses pour un utilisateur debutant. Reponds toujours en francais. Limite tes réponses a 100 mots maximum."

Tests (1/1)

Tests
# Cas minimal
result = construire_system_prompt({'produit': 'Python'})
assert 'Python' in result, 'Le produit doit apparaitre dans le prompt'
assert 'intermediaire' in result, 'Le niveau par défaut doit etre intermediaire'
assert 'francais' in result, 'La langue par défaut doit etre francais'
assert 'mots maximum' not in result, 'Sans max_mots, pas de contrainte de longueur'

# Cas complet
result2 = construire_system_prompt({'produit': 'Django', 'niveau': 'debutant', 'langue': 'anglais', 'max_mots': 50})
assert 'Django' in result2, 'Le produit Django doit apparaitre'
assert 'debutant' in result2, 'Le niveau debutant doit apparaitre'
assert 'anglais' in result2, 'La langue anglais doit apparaitre'
assert '50 mots maximum' in result2, 'La contrainte de 50 mots doit apparaitre'

# Avec juste max_mots
result3 = construire_system_prompt({'produit': 'FastAPI', 'max_mots': 200})
assert '200 mots maximum' in result3, 'max_mots doit etre pris en compte'
assert 'intermediaire' in result3, 'Le niveau par défaut doit toujours etre la'

# Vérifier le type
assert isinstance(result, str), 'Doit retourner une chaine de caracteres'

Indices (3 disponibles)

solution.py
Non stockée