Débutant
🧠 Fondamentaux
10 XP
0 personnes ont réussi
Router une requete vers le bon pipeline
Dans une application LLM serieuse, tu ne traites pas toutes les questions de la meme facon. Une question factuelle ("Quelle est la capitale du Japon ?") peut etre traitee par un systeme RAG qui cherche dans une base de connaissances. Une question creative ("Ecris-moi un poeme") va directement au LLM. Et un calcul ("Combien font 15% de 250 ?") passe par un outil de calcul.
Ce mecanisme s'appelle le routing. C'est comme un aiguillage de train : selon le type de question, tu diriges vers le bon rail. En production, ca evite d'envoyer un calcul simple a un LLM (qui peut se tromper) alors qu'une calculatrice donne le resultat exact.
Tu vas ecrire une fonction router_requete(question, routes) qui prend une question et un dictionnaire de routes. Chaque cle du dictionnaire est le nom d'un pipeline, et la valeur est une liste de mots-cles declencheurs. La fonction renvoie le nom du premier pipeline dont un mot-cle apparait dans la question (en minuscules). Si aucune route ne correspond, elle renvoie "general".
Exemple :
routes = {"rag": ["qui est", "definir"], "creative": ["ecris", "imagine"]} router_requete("Qui est Alan Turing ?", routes) renvoie "rag" router_requete("Raconte-moi une blague", routes) renvoie "general"
Tests (4/5)
Route vers le bon pipeline
routes = {'rag': ['qui est', 'definir'], 'creative': ['ecris', 'imagine']}
assert router_requete('Qui est Marie Curie ?', routes) == 'rag'
routes = {'rag': ['qui est'], 'creative': ['ecris']}
assert router_requete('Bonjour comment ca va ?', routes) == 'general'
Insensible a la casse
routes = {'rag': ['qui est']}
assert router_requete('QUI EST Einstein ?', routes) == 'rag'
+ 0 tests cachés
Indices (3 disponibles)
Solution officielle
def router_requete(question, routes):
question_lower = question.lower()
for pipeline, mots_cles in routes.items():
for mot in mots_cles:
if mot.lower() in question_lower:
return pipeline
return "general"