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:
Exercise¶
- Open
exercises/finance/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=[
"Compare the latest NVIDIA and AMD filings",
"Show me NVDA gross profit trends",
"What's the operating margin trend for AMD?",
"Which semiconductor company had the best gross profit growth?",
"What did management say about AI revenue?",
"Pull the SEC filing for Microsoft",
"Can you help me?",
"What do you know about me?",
# Add 2-3 more financial research 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 earnings, filings, sector comparisons, or greetings. For the deny list, think about personal finance, crypto, or homework.
Verify¶
Stop the running server (Ctrl+C) and restart:
Open localhost:3040.
- Ask: "Show me NVDA gross profit trends" and click
Semantic-routerin the right activity panel to see it pass through - Ask: "Should I buy this stock?" and see it get blocked with a redirect message