import{c as a,Q as i,j as s,m as e}from"./chunks/framework.BPKcPtvA.js";const k=JSON.parse('{"title":"Labs Overview","description":"","frontmatter":{},"headers":[],"relativePath":"labs/index.md","filePath":"labs/index.md","lastUpdated":1780488472000}'),n={name:"labs/index.md"};function l(d,t,r,h,o,p){return i(),s("div",null,[...t[0]||(t[0]=[e(`
13 hands-on labs covering the full agentic engineering stack. Each lab has a starter.py (fill in the blanks) and solution.py (reference answer).
| Lab | Module | Topic | Est. Time |
|---|---|---|---|
| L1: First Agent | M1 | Single-tool agent from scratch | 60 min |
| L2a: Multi-Tool Agent | M2 | File ops + web search | 75 min |
| L2b: Context-Aware | M2 | Sliding window + summarization | 60 min |
| L3a: Whitelist Hook | M3 | L4 security implementation | 60 min |
| L3b: Verifier Agent | M3 | Read-only verification | 75 min |
| L4a: Agent Chain | M4 | YAML pipeline | 60 min |
| L4b: Multi-Team | M4 | Team config + domain locking | 90 min |
| L5a: Observability | M5 | SQLite tool tracing | 60 min |
| L5b: CI/CD | M5 | Golden dataset + regression gate | 60 min |
| L6a: Eval Harness | M6 | pass@k evaluation | 60 min |
| L6b: Cost Optimization | M6 | Cascade routing | 45 min |
| L7a: Autoresearch | M7 | Self-improving experiment loop | 75 min |
| L7b: Meta-Agent | M7 | Agent that builds agents | 60 min |
cd course/labs/L1-first-agent/
# Without API key (uses mock LLM automatically):
python starter.py test.txt "What is this file about?"
# With API key:
export ANTHROPIC_API_KEY="sk-ant-..."
python starter.py test.txt "What is this file about?"
# Check solution after attempting:
python solution.py test.txt "What is this file about?"Each lab has:
starter.py — Code skeleton with TODO markerssolution.py — Complete reference implementationAll labs include automatic mock LLM fallback. No API keys required. The mock client returns realistic, deterministic responses so you can verify your code logic without paying for API calls.
`,11)])])}const b=a(n,[["render",l]]);export{k as __pageData,b as default};