Aller au contenu principal
🔒 Mode aperçu. Les quinze premières leçons Foundations sont gratuites ; celle-ci est Pro. Démarrez un trial de 7 jours pour débloquer l'éditeur, les conseils AI et le reste du programme. Carte requise, annulez à tout moment dans Dashboard.Démarrer le trial de 7 jours →
← CoursAI Engineering with PythonModule 3 · RAG (Récupération-Génération Augmentée)Filtrage des métadonnéeswrite39 / 105
+75 XP
Tâche
📝 **Question :** **Écrivez la fonction** \`safe_search(query, filter)\` qui protège un RAG multi-tenant contre la classe de fuite n°1 — un filtre \`tenant_id\` manquant. Règles : - Si \`filter\` n'est pas un dict → lever \`ValueError("le filtre doit être un dict")\`. - Si \`tenant_id\` est absent OU vide/faux → raise \`ValueError("SECURITY : le filtre tenant_id est obligatoire et non vide")\`. - Sinon, retournez \`f"OK | {query!r} étendu au locataire {filter['tenant_id']!r}"\`. Ensuite, exécutez-le sur quatre formes de requête (deux réelles, deux dangereuses) : \`\`\` D'accord | La « politique de remboursement » s'étend au locataire « acme » BLOQUÉ | 'tableau des salaires' | SÉCURITÉ : le filtre tenant_id est obligatoire et non vide D'accord | « historique des commandes » limité au locataire « globex » BLOQUÉ | 'Clés API' | SÉCURITÉ : le filtre tenant_id est obligatoire et non vide \`\`\` Le cas de la chaîne vide est le cas sournois — \`"tenant_id" dans filter\` passerait, mais \`filter.get("tenant_id")\` renvoie faux. ** Vérifiez toujours la véracité, jamais seulement la présence de la clé. ** Une interface frontale mal configurée définissant par défaut \`tenant_id\` sur \`""\` a provoqué des fuites entre locataires dans le monde réel. 📋 Choisissez la bonne réponse. 💡 **Indice :** Relisez la théorie ci-dessus en cas de doute.
✏️ Écris ton code ici
🐍
Chargement de Python...
Téléchargement unique (~1 Mo). Ensuite, c’est instantané.
📊 Résultat
Cliquez sur Exécuter pour voir le résultat...

💬 Discussion

Soyez le premier à poser une question ou partager une astuce.
Connectez-vous pour rejoindre la discussion. La lecture est gratuite.
Chargement de la discussion…