95 - Lühiülevaade: LLM, agendid, ai-proxy, Pi ja spec-driven arendus
Siit saad põhimõisted, tasuta ligipääsu Qwen3.8 27b mudelile kooli ai-proxy kaudu ja Pi coding agenti 5-minuti seadistuse.
| Kui sul on... | Loe |
|---|---|
| 5 minutit | §5 ai-proxy ja §6 Pi + Qwen3.8 |
| 15 minutit | kõik allpool |
| rohkem | lingid iga osa lõpus viivad täisloengutesse |
1. LLM — järgmise tokeni ennustaja
LLM (Large Language Model) pole maagia. See on närvivõrk, mis on treenitud ühte ülesannet täitma: ennusta järgmist tokenit. Kõik muu — chat, koodi genereerimine, agendid — on kihid selle peal.
Kui annad sisendiks "Pealinn Eestis on", tagastab mudel tõenäosusjaotuse järgmise tokeni üle: Tallinn 94%, Helsinki 2%, Riia 1%, jne. Valib ühe, lisab sisendisse, kordab. Ring käib, kuni kontekst saab täis või mudel ennustab spetsiaalse <END> tokeni.
Põhitõed:
- API on stateless. Mudel ei mäleta eelmisest päringust mitte midagi. Iga sõnum API-le sisaldab kogu eelnevat vestlust uuesti. "Mälu" on kliendi (harness'i) probleem, mitte mudeli oma.
- Mudel ei "mõtle" — ta genereerib tokeneid. "Reasoning" mudelid genereerivad lihtsalt rohkem tokeneid enne vastust.
- Halb vastus = halb kontekst. Enne kui süüdistad mudelit, mõtle: mis oli täpselt sellel hetkel sisendis?
Süvitsi: Loeng 01 — Intro, Loeng 11 — AI basics.
2. Token ja kontekstiaken
Token pole sõna ega täht — see on midagi vahepealset (subword, tavaliselt BPE-tokenizer). "tokenization" = 2 tokenit, "getElementById" = 4 tokenit (get, Element, By, Id). Umbes 4 tähemärki inglise keeles = 1 token. Eesti keel on kallim — ~1.5× rohkem tokeneid sama info kohta, sest tokenizer on treenitud peamiselt inglise keele peal.
| Mõiste | Mis see on | Miks see loeb |
|---|---|---|
| Kontekstiaken | Max sisend + väljund tokenites | 200k/1M Claude, 256k Qwen3.8, 8k vana GPT-3.5 |
| Input price | $ per miljon sisendtokenit (MTok) | Maksad iga kord, kui saadad terve vestluse uuesti |
| Output price | $ per miljon väljundtokenit | Tavaliselt 3–5× kallim kui input |
Mida see praktikas tähendab:
- Kontekstiaken peab mahutama nii sisendi kui väljundi. Süsteemiprompt + tööriistade kirjeldused +
AGENTS.mdvõtavad agendi puhul juba ~20% enne, kui sa midagi küsid. - Kvaliteet hakkab langema ~75% täituvusel. Seepärast on harness'ides
/compact— vana vestlus võetakse kokku. - Prompt cache: kui vestluse algus ei muutu, on korduv sisend ~90% odavam. Harness'id kasutavad seda ise.
Süvitsi: Loeng 02 — Token, Loeng 29 — kontekstihaldus.
3. Tools — tool calling
Mudel ei saa ise faili lugeda, internetist otsida ega shell-käsku käivitada. Aga ta saab paluda, et keegi teine seda teeks.
Tool calling on leping. Sa ütled mudelile "sul on olemas järgnevad tööriistad" koos JSON-schema'ga. Mudel, kui vajab, genereerib väljundiks struktureeritud JSON-i: {"tool": "read_file", "path": "/etc/hosts"}. Mudel ise ei käivita midagi — ta toodab teksti, mis ütleb "ma tahan kutsuda tööriista X argumentidega Y". Sinu kood (harness) näeb seda, käivitab tööriista ja saadab tulemuse mudelile järgmises päringus tagasi.

Tööriist on mudeli jaoks kolm asja:
| Osa | Mis | Märkus |
|---|---|---|
| Nimi | read_file | Lühike, ühemõtteline |
| Kirjeldus | "Loeb faili sisu antud teelt. Kasuta enne muutmist." | Tähtsaim osa — halb kirjeldus = tööriista ei kutsuta kunagi |
| Input schema | JSON Schema parameetritele | Mudel täidab selle |
Iga tööriista kirjeldus maksab tokeneid igas päringus: 30 tööriista ≈ 6000 tokenit enne, kui sa üldse midagi küsid. Vähem ja paremini kirjeldatud tööriistu on parem kui palju.
Süvitsi: Loeng 26 — Tools, Loeng 27 — MCP.
4. Harness — agent = LLM + tsükkel + tööriistad
Pane tool calling stateless API-sse ja saad tsükli:
while not done:
response = llm.call(messages, tools)
if response.wants_tool_call:
result = execute_tool(response.tool_call)
messages.append(response)
messages.append(tool_result(result))
else:
done = True
return response.text
See silmus ongi agent. Planeerimine, refleksioon, veaparandus — kõik see tekib prompt'idest, tööriista-disainist ja orkestratsioonist, mitte mudelist.
Agendi harness on CLI- või IDE-tööriist, mis mässib LLM-i sellesse silmusesse: loeb sinu promptid, saadab mudelile, võtab tagasi tool-call'id, käivitab need, saadab tulemuse mudelile, kordab kuni töö tehtud. Erinevus pole mudel — erinevus on infra silmuse ümber: millised tööriistad on sisseehitatud, kuidas konteksti hallatakse, kuidas õigusi kontrollitakse, milline on konfiguratsioon.
| Harness | Kust pärit | Mudelid | Eripära |
|---|---|---|---|
| Pi | avatud lähtekood | Kõik (openai-compatible, anthropic, ...) | Minimalistlik: 4 tööriista (read, write, edit, bash), kõik muu ehitad/paigaldad ise. Meie vaikevalik kooli proxyga. |
| Claude Code | Anthropic | Claude perekond | Kõige küpsem: skills, hooks, subagents, plan mode |
| opencode | SST (avatud lähtekood) | Kõik | Multi-provider, granulaarsed õigused, AGENTS.md |
| OpenAI Codex | OpenAI | GPT perekond | Terminal + VS Code; AGENTS.md standard |
| Kilo Code | avatud lähtekood | Kõik | VS Code laiendus, mode'id (architect/code/ask) |
| Cursor | Anysphere | Kõik | VS Code fork — aga lock-in |
Kõigil on sama alusmuster: projekti instruktsioonid (AGENTS.md / CLAUDE.md), tööriistad + MCP, skills, hooks, kontekstihaldus. Tööriist on vahetatav, reeglid tekstifailides on püsivad.
Süvitsi: Loeng 30 — Agents, Loeng 21 — AI tooling, 94 — BitWeb.