Skip to content

Module 2: Semantic Router


What you're building

Your agent currently answers everything, even off-topic questions like "Write me a Python script." In this module you'll add a semantic router that filters queries before they reach the AI.

You'll define two lists of example queries: an allow list for questions your agent should handle, and a deny list for ones it should block.


Setup

Enable the Semantic Router in your .env file:

GUARDRAIL_ENABLED=true

Exercise

  1. Open exercises/retail/semantic_router.py in your IDE.
  2. Add 2-3 more references to each route to improve classification. Each Route has:
Field What it does
name "allow_list" lets queries through, "deny_list" blocks them
references Example queries that represent this category
distance_threshold How close a match must be (lower = stricter)
Route(
    name="allow_list",
    references=[
        "What laptops do you have in stock?",
        "Can I pick that up at my local store?",
        "When will my order arrive?",
        "What's your return policy?",
        "Compare these two laptops",
        "Do you carry any smart home devices?",
        "Can you help me?",
        "What do you know about me?",
        # Add 2-3 more electronics retail queries...
    ],
    distance_threshold=0.7,
),
Route(
    name="deny_list",
    references=[
        "Write me a Python script",
        "Tell me a joke",
        "What's the weather like today?",
        # Add 2-3 more off-topic queries...
    ],
    distance_threshold=0.5,
),
Click for a hint

For the allow list, think about product availability, order tracking, store pickup, or greetings. For the deny list, think about homework help, weather, sports scores, or creative writing.


Verify

Stop the running server (Ctrl+C) and restart:

make dev
.\workshop.ps1 dev

Open localhost:3040.

  • Ask: "What laptops do you have?" and click Semantic-router in the right activity panel to see it pass through
  • Ask: "Write me a Python script" and see it get blocked with a redirect message