Débutant
🧠 Fondamentaux
10 XP
0 personnes ont réussi
Valider une question utilisateur
Quand tu deploies un chatbot en production, la premiere chose a gerer c'est le n'importe quoi que les utilisateurs vont taper. Un champ vide, un emoji tout seul, un message de 3000 mots, ou une question qui n'a rien a voir avec ton domaine. Si tu envoies tout ca au LLM, tu gaspilles des tokens (et donc de l'argent) pour rien.
La validation en amont, c'est le videur a l'entree de la boite. Il verifie trois choses : que le message n'est pas vide, qu'il a une longueur raisonnable, et qu'il contient au moins un mot-cle lie a ton domaine.
Voici l'idee :
def valider_question(question, mots_cles, longueur_max=500): if not question or not question.strip(): return {"valide": False, "raison": "Question vide"} ...
Tu vas ecrire une fonction valider_question(question, mots_cles, longueur_max=500) qui prend une question (string), une liste de mots-cles du domaine, et une longueur maximale. Elle renvoie un dictionnaire avec deux cles : "valide" (True ou False) et "raison" (un message explicatif).
Les regles de validation dans cet ordre : 1. Si la question est vide ou ne contient que des espaces, renvoie "Question vide" 2. Si la question depasse la longueur maximale, renvoie "Question trop longue" 3. Si aucun mot-cle du domaine n'apparait dans la question (en minuscules), renvoie "Hors sujet" 4. Sinon, c'est valide avec la raison "OK"
Exemple :
mots_cles = ["python", "code", "fonction", "variable"] valider_question("Comment ecrire une fonction en Python ?", mots_cles) renvoie {"valide": True, "raison": "OK"}
valider_question("Quelle est la meteo ?", mots_cles) renvoie {"valide": False, "raison": "Hors sujet"}
Tests (4/5)
Question valide avec mot-cle
r = valider_question('Comment ecrire une fonction ?', ['python', 'fonction', 'code'])
assert r == {'valide': True, 'raison': 'OK'}, f'Attendu valide, obtenu {r}'
r = valider_question('python ' * 200, ['python'], longueur_max=50)
assert r == {'valide': False, 'raison': 'Question trop longue'}
Question hors sujet
r = valider_question('Quelle est la meteo demain ?', ['python', 'code', 'fonction'])
assert r == {'valide': False, 'raison': 'Hors sujet'}
+ 0 tests cachés
Indices (3 disponibles)
Solution officielle
def valider_question(question, mots_cles, longueur_max=500):
if not question or not question.strip():
return {"valide": False, "raison": "Question vide"}
if len(question) > longueur_max:
return {"valide": False, "raison": "Question trop longue"}
question_lower = question.lower()
for mot in mots_cles:
if mot.lower() in question_lower:
return {"valide": True, "raison": "OK"}
return {"valide": False, "raison": "Hors sujet"}