MOCK RAG APP — this week's lab has no
retrieval step, so this page adds one line of glue: the fetched page is pasted into the user
turn as "Doc: " + page + "\nQuestion: " + question. The model, the guard and the
redaction are this week's real code (mock_llm() from
vulnerable_chatbot.py; input_guardrail() and
redact_secret() from guarded_chatbot.py). Edit the page, keep the
question innocent, and watch who is really giving the orders.
developer's system prompt retrieved page user's question the text that decided the outcome
guarded_chatbot.py's strongest fix isn't a filter at all: its SYSTEM_PROMPT holds no secret, so even a hijacked model has nothing to leak.