Към основното съдържание
🔒 Режим за преглед. Първите петнадесет урока на Foundations са безплатни; този е Pro. Стартирайте 7-дневен trial, за да отключите редактора, AI подсказките и останалата част от курса. Изисква се карта, отменете по всяко време в Dashboard.Стартирай 7-дневен trial →
← КурсовеAI Engineering with PythonМодул 3 · RAG (генериране с допълнено извличане)Филтриране на метаданниwrite39 / 105
+75 XP
Задача
📝 **Въпрос:** **Напишете функцията** \`safe_search(query, filter)\`, която защитава RAG с множество клиенти срещу #1 клас течове — липсващ филтър \`tenant_id\`. правила: - Ако \`filter\` не е dict → повдигнете \`ValueError("filter must be a dict")\`. - Ако \`tenant_id\` липсва ИЛИ празен/фалшив → повдигнете \`ValueError("СИГУРНОСТ: филтърът tenant_id е задължителен и не е празен")\`. - В противен случай върнете \`f"OK | {query!r} с обхват на клиент {filter['tenant_id']!r}"\`. След това го изпълнете срещу четири заявки (две реални, две опасни): \`\`\` ОК | „правила за възстановяване“ с обхват на наемател „acme“ БЛОКИРАН | 'таблица със заплати' | СИГУРНОСТ: филтърът tenant_id е задължителен и не е празен ОК | „хронология на поръчките“ с обхват на наемател „globex“ БЛОКИРАН | „API ключове“ | СИГУРНОСТ: филтърът tenant_id е задължителен и не е празен \`\`\` Случаят с празен низ е подъл — \`"tenant_id" във филтъра\` ще премине, но \`filter.get("tenant_id")\` връща грешно. **Винаги проверявайте истинността, никога само наличието на ключ.** Неправилно конфигуриран интерфейс, който по подразбиране \`tenant_id\` е \`""\` е причинил изтичане на информация между клиенти в реалния свят. 📋 Изберете правилния отговор. 💡 **Съвет:** Прочетете отново теорията по-горе, ако не сте сигурни.
✏️ Пиши кода тук
🐍
Зареждане на Python...
Еднократно изтегляне (~1 MB). После работи мигновено.
📊 Резултат
Натисни Изпълни, за да видиш резултата...

💬 Дискусия

Бъди първи — задай въпрос или сподели съвет.
Влез за да се присъединиш към дискусията. Четенето е безплатно.
Зареждане на дискусията…