feat: quiz on M1, sitemap, robots.txt, model selection blog post

This commit is contained in:
artale 2026-06-12 10:35:24 +02:00
parent f96f1232ee
commit 285f516f20
62 changed files with 348 additions and 230 deletions

View File

@ -6,6 +6,9 @@ export default defineConfig({
lang: 'en-US', lang: 'en-US',
lastUpdated: true, lastUpdated: true,
cleanUrls: true, cleanUrls: true,
sitemap: {
hostname: 'https://git.fdsa.agency',
},
head: [ head: [
['link', { rel: 'icon', href: '/favicon.svg' }], ['link', { rel: 'icon', href: '/favicon.svg' }],

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
import{c as e,Q as t,j as a,m as i}from"./chunks/framework.BPKcPtvA.js";const u=JSON.parse('{"title":"Module 1: Foundations","description":"","frontmatter":{},"headers":[],"relativePath":"modules/m1-foundations.md","filePath":"modules/m1-foundations.md","lastUpdated":1780488246000}'),n={name:"modules/m1-foundations.md"};function o(l,s,r,h,p,d){return t(),a("div",null,[...s[0]||(s[0]=[i("",88)])])}const k=e(n,[["render",o]]);export{u as __pageData,k as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"404.md":"BiCvjdaY","api-keys.md":"D2Kyj8T3","blog_index.md":"ej0SMQFJ","blog_posts_agent-loops-complete-guide.md":"DcCNOI9M","blog_posts_cascade-routing.md":"DvBM3TSf","blog_posts_choosing-security-level.md":"BYXRZEDN","blog_posts_context-window-management.md":"Dr1RUj8G","blog_posts_mental-models.md":"BRY80gtq","blog_posts_repo-is-spec.md":"BxY1cXc_","blog_posts_security-ladder.md":"DQaqn6Yt","blog_posts_three-x-rule.md":"BHO6bhvz","blog_posts_verifier-pattern.md":"Gha_L_u5","blog_posts_vibe-vs-agentic.md":"7mduPfz1","blog_posts_what-is-an-agent.md":"BU2wUq_Y","blog_posts_why-multi-agent.md":"BVRIN2vH","buy.md":"qEifz7WE","certificate.md":"DZ26T6CI","checkout.md":"Ccj6L__h","checkout_cancel.md":"DwL5mulX","checkout_success.md":"CYTg6xhL","downloads.md":"CEHJXSp0","free-preview.md":"C5BtRucn","getting-started.md":"Boo_V9xC","index.md":"BNS2TR1g","labs_index.md":"sAzXzfkI","labs_l1-first-agent.md":"BwU9yf-G","labs_l2-context.md":"BexGm8_s","labs_l2-multi-tool.md":"Bj3Mb-oj","labs_l3-verifier.md":"xilrGGap","labs_l3-whitelist-hook.md":"DJtbL66Y","labs_l4-agent-chain.md":"D89P8dwJ","labs_l4-multi-team.md":"DmSK8e2P","labs_l5-cicd.md":"Dz1Jl78z","labs_l5-observability.md":"BDpqVYjT","labs_l6-cost-optimization.md":"CabFK4GB","labs_l6-eval-harness.md":"CBwH6xOR","labs_l7-autoresearch.md":"BYlzPLYo","labs_l7-meta-agent.md":"iTswbOPg","modules_competitive-analysis.md":"BHMHacei","modules_curriculum.md":"D7UeKRfo","modules_debate.md":"DWctKMlA","modules_feynman.md":"DBw5sPBP","modules_field-manual.md":"hmt_NLf1","modules_m1-foundations.md":"DHFyTzWj","modules_m2-architecture.md":"DVowtmf9","modules_m3-safety.md":"RiQQ_HWX","modules_m4-orchestration.md":"DFLcAKBv","modules_m5-production.md":"DTkLIrwQ","modules_m6-economics.md":"HihVEOPb","modules_m7-advanced.md":"B_jVHqsw","modules_m8-capstone.md":"CqV39Gzl","modules_non-technical.md":"BnvuUCRo","modules_reference-stack.md":"D9FXitvn","modules_software-factory.md":"C5Yf8Zwe","modules_tool-reference.md":"B40mlgZJ","public_certificate_template.md":"Cg1kPB1b","resources.md":"DcUu1NrK","skills.md":"BX3RBeCK","troubleshooting.md":"B6difx2I","verify.md":"Cl5ZMWNd"} {"404.md":"BiCvjdaY","api-keys.md":"D2Kyj8T3","blog_index.md":"CH9ul8Qh","blog_posts_agent-loops-complete-guide.md":"DrdeWzm3","blog_posts_cascade-routing.md":"DvBM3TSf","blog_posts_choosing-security-level.md":"BYXRZEDN","blog_posts_context-window-management.md":"40drllBG","blog_posts_mental-models.md":"BRY80gtq","blog_posts_model-selection-guide.md":"Ca-IsHa3","blog_posts_repo-is-spec.md":"BxY1cXc_","blog_posts_security-ladder.md":"DQaqn6Yt","blog_posts_three-x-rule.md":"BHO6bhvz","blog_posts_verifier-pattern.md":"Gha_L_u5","blog_posts_vibe-vs-agentic.md":"7mduPfz1","blog_posts_what-is-an-agent.md":"BU2wUq_Y","blog_posts_why-multi-agent.md":"BVRIN2vH","buy.md":"qEifz7WE","certificate.md":"DZ26T6CI","checkout.md":"Ccj6L__h","checkout_cancel.md":"DwL5mulX","checkout_success.md":"CYTg6xhL","downloads.md":"CEHJXSp0","free-preview.md":"C5BtRucn","getting-started.md":"Boo_V9xC","index.md":"BNS2TR1g","labs_index.md":"sAzXzfkI","labs_l1-first-agent.md":"BwU9yf-G","labs_l2-context.md":"BexGm8_s","labs_l2-multi-tool.md":"Bj3Mb-oj","labs_l3-verifier.md":"xilrGGap","labs_l3-whitelist-hook.md":"DJtbL66Y","labs_l4-agent-chain.md":"D89P8dwJ","labs_l4-multi-team.md":"DmSK8e2P","labs_l5-cicd.md":"Dz1Jl78z","labs_l5-observability.md":"BDpqVYjT","labs_l6-cost-optimization.md":"CabFK4GB","labs_l6-eval-harness.md":"CBwH6xOR","labs_l7-autoresearch.md":"BYlzPLYo","labs_l7-meta-agent.md":"iTswbOPg","modules_competitive-analysis.md":"BHMHacei","modules_curriculum.md":"D7UeKRfo","modules_debate.md":"DWctKMlA","modules_feynman.md":"DBw5sPBP","modules_field-manual.md":"hmt_NLf1","modules_m1-foundations.md":"CgHO7sNo","modules_m2-architecture.md":"DVowtmf9","modules_m3-safety.md":"RiQQ_HWX","modules_m4-orchestration.md":"DFLcAKBv","modules_m5-production.md":"DTkLIrwQ","modules_m6-economics.md":"HihVEOPb","modules_m7-advanced.md":"B_jVHqsw","modules_m8-capstone.md":"CqV39Gzl","modules_non-technical.md":"BnvuUCRo","modules_reference-stack.md":"D9FXitvn","modules_software-factory.md":"C5Yf8Zwe","modules_tool-reference.md":"B40mlgZJ","public_certificate_template.md":"Cg1kPB1b","resources.md":"DcUu1NrK","skills.md":"BX3RBeCK","troubleshooting.md":"B6difx2I","verify.md":"Cl5ZMWNd"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,9 @@ Essays on agentic engineering, security, multi-agent systems, and production dep
## Latest Posts ## Latest Posts
### [How to Choose the Right Model for Your Agent](/blog/posts/model-selection-guide) — June 22
A practical decision framework for model selection. Cascade routing, anti-patterns, and when to use local models.
### [Context Window Management for AI Agents](/blog/posts/context-window-management) — June 18 ### [Context Window Management for AI Agents](/blog/posts/context-window-management) — June 18
Sliding windows, summarization, mental models, and the 80/20 rule of context budget allocation. Sliding windows, summarization, mental models, and the 80/20 rule of context budget allocation.

View File

@ -0,0 +1,133 @@
# How to Choose the Right Model for Your Agent
**June 22, 2026**
You're building an agent. Which model do you use? The answer isn't "the best one" — it's "the right one for this subtask."
---
## The Model Landscape (Mid-2026)
| Tier | Models | Cost/1M tokens | Best For |
|------|--------|----------------|----------|
| **Frontier** | Claude Opus 4, GPT-5, Gemini Ultra 2.0 | $12-30 | Complex reasoning, code generation, safety-critical decisions |
| **Mid** | Claude Sonnet 4, GPT-5-mini, Gemini Pro 2.0 | $3-8 | Analysis, classification, summarization |
| **Cheap** | Claude Haiku 3.5, GPT-5-flash, Gemini Flash 2.0 | $0.15-0.50 | Bulk processing, extraction, simple tool calls |
| **Local** | Llama 4, DeepSeek Coder, Mistral Large 2 | Free (HW cost) | Private data, offline, latency-sensitive |
The price range from cheapest to most expensive is **200x**. Using the wrong tier for a task is like renting a dump truck to move a shoebox.
---
## The Decision Framework
```
Task complexity
├─ Is it deterministic? (grep, parse, format, extract)
│ → Use CHEAP model (Haiku/Flash)
├─ Does it need reasoning? (analyze, explain, plan)
│ → Use MID model (Sonnet/Pro)
├─ Is it customer-facing? (report, email, summary)
│ → Use FRONTIER model (Opus/GPT-5)
└─ Does it involve private data? (PII, IP, secrets)
→ Use LOCAL model (Llama/DeepSeek)
```
---
## Cascade Routing in Practice
```python
MODEL_TIERS = {
"cheap": {
"model": "claude-haiku-3.5-20260501",
"cost_per_m_tokens": 0.15,
"max_tokens": 4000,
},
"mid": {
"model": "claude-sonnet-4-20260501",
"cost_per_m_tokens": 3.00,
"max_tokens": 8000,
},
"premium": {
"model": "claude-opus-4-20260501",
"cost_per_m_tokens": 15.00,
"max_tokens": 16000,
},
}
def route_to_tier(task_type, prompt):
if task_type in ("extract", "parse", "format", "search", "classify"):
tier = "cheap"
elif task_type in ("analyze", "explain", "plan", "review"):
tier = "mid"
elif task_type in ("generate", "synthesize", "report", "decide"):
tier = "premium"
else:
tier = "mid" # safe default
model = MODEL_TIERS[tier]
response = call_llm(model["model"], prompt, model["max_tokens"])
cost = (count_tokens(prompt) / 1_000_000) * model["cost_per_m_tokens"]
return {"response": response, "tier": tier, "cost": cost}
```
---
## Model Selection Anti-Patterns
### "Just Use the Best Model"
The most expensive anti-pattern. Running every task through Opus costs 100x more than routing simple tasks to Haiku. For a production agent making 500 calls/day:
- All Opus: ~$75/day
- Cascaded: ~$8/day
**Savings: 89%**
### "Use the Cheapest Model Everywhere"
Saves money, loses quality. Cheap models hallucinate more, follow instructions less reliably, and produce worse output on complex tasks. A single bad output from a cheap model can cost more in debugging time than you saved in API fees.
### "One Model Per Agent"
This is acceptable for simple agents but misses optimization opportunities. Within a single agent session, you can route different subtasks to different models. The same agent can use Haiku for file discovery and Opus for synthesis.
---
## When Local Models Make Sense
Local models (Llama 4, DeepSeek) are not competitive with cloud APIs on quality. But they win on:
1. **Privacy** — Data never leaves your machine
2. **Latency** — No network calls (5ms vs 500ms)
3. **Cost at scale** — Free after hardware purchase
4. **Offline operation** — Works without internet
**Best use cases**: Code completion, local file analysis, private document review, development assistance.
**Worst use cases**: Complex reasoning, multi-step planning, tasks requiring up-to-date knowledge.
---
## The 80/20 Rule of Model Selection
80% of cost savings come from one change: **stop using frontier models for routine work**.
| Task Type | Current Model | Recommended Model | Savings |
|-----------|--------------|-------------------|---------|
| File discovery | Opus/Sonnet | Haiku/Flash | 95% |
| Data extraction | Opus/Sonnet | Haiku/Flash | 95% |
| Classification | Opus/Sonnet | Haiku/Flash | 95% |
| Analysis | Opus | Sonnet | 80% |
| Code review | Opus | Sonnet | 80% |
| Report generation | Opus | Opus (keep) | 0% |
| Complex reasoning | Opus | Opus (keep) | 0% |
---
*This is adapted from Module 6: Economics of the [Agentic Engineering the Hard Way](/free-preview) course. Full course includes 65 lessons, 13 labs, and 20 skill kits.*

View File

@ -278,6 +278,45 @@ This single pattern:
--- ---
## Module 1 Quiz
Test your understanding of the foundations.
<Quiz :questions="[
{
q: 'What three components define an AI agent?',
opts: ['LLM + Data + Training', 'LLM + Tools + Loop', 'Model + API + Frontend', 'Prompt + Response + Memory'],
ans: 1,
exp: 'An agent is defined by its reasoning engine (LLM), its capability surface (Tools), and its autonomous decision cycle (Loop). Remove any one and it is not an agent.'
},
{
q: 'What does the harness determine that the model does NOT?',
opts: ['Response quality', 'Token pricing', 'Tool selection accuracy + loop termination + security', 'Training data quality'],
ans: 2,
exp: 'The harness controls loop termination, security hooks, context management, retry logic, and cost — not the model. A good harness with a mediocre model outperforms a bad harness with the best model.'
},
{
q: 'What is the main risk of not setting MAX_ITERATIONS on an agent loop?',
opts: ['The agent runs too slowly', 'The agent can loop forever, burning unlimited tokens', 'The model refuses to answer', 'Tools stop working after 10 calls'],
ans: 1,
exp: 'Without a maximum iteration limit, an agent can loop indefinitely on an ambiguous task, potentially costing $50+ in runaway token usage before you notice.'
},
{
q: 'Which of these is NOT one of the 5 subsystems of a harness?',
opts: ['Tool execution system', 'Loop control system', 'Model training system', 'Context management system'],
ans: 2,
exp: 'Model training is not part of the harness. The 5 subsystems are: Tool Execution, Loop Control, Context Management, Security & Safety, and Observability & Cost.'
},
{
q: 'In the decision framework, what does P (Process) vs F (First Principles) distinguish?',
opts: ['Python vs FastAPI', 'Following a known procedure vs reasoning from fundamentals', 'Public vs Private agents', 'Primary vs Fallback models'],
ans: 1,
exp: 'P-threads follow known procedures (optimized, safe, repeatable). F-threads reason from first principles (creative, adaptive, expensive). Knowing which to use is the core of agentic engineering.'
}
]" />
---
## Lab 1.9: Your First Agent ## Lab 1.9: Your First Agent
**Objective**: Build a single-tool agent from scratch in under 50 lines. **Objective**: Build a single-tool agent from scratch in under 50 lines.

3
site/public/robots.txt Normal file
View File

@ -0,0 +1,3 @@
User-agent: *
Allow: /
Sitemap: https://git.fdsa.agency/sitemap.xml