Exercices AI Engineering Valider une question utilisateur
🎉

Bravo!

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}'
Question vide
r = valider_question('', ['python'])
assert r == {'valide': False, 'raison': 'Question vide'}
r2 = valider_question('   ', ['python'])
assert r2 == {'valide': False, 'raison': 'Question vide'}
Question trop longue
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.py