Module 2: Semantic Router¶
What you're building¶
Your agent currently answers everything, even off-topic questions like "Why is the sky blue?" 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:
Exercise¶
- Open
exercises/banking/semantic_router.pyin your IDE. - Add 2-3 more references to each route to improve classification. Each
Routehas:
| 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 are my account balances?",
"Fixed deposit rate FD6",
"Waive annual card fee",
"Branch hours Tampines",
"What accounts do I have?",
"Early withdrawal penalty",
"Can you help me?",
"What do you know about me?",
# Add 2-3 more banking queries...
],
distance_threshold=0.7,
),
Route(
name="deny_list",
references=[
"Why is the sky blue?",
"Tell me a joke",
"How do I cook pasta?",
# Add 2-3 more off-topic queries...
],
distance_threshold=0.5,
),
Click for a hint
For the allow list, think about accounts, fixed deposits, card fees, branches, or greetings like "Hello". For the deny list, think about cooking, trivia, coding help, or creative writing.
Verify¶
Stop the running server (Ctrl+C) and restart:
Open localhost:3040.
- Ask: "What accounts do I have and what are my current balances?" and click
Semantic-routerin the right activity panel to see it pass through - Ask: "Why is the sky blue?" and see it get blocked with a redirect message