Přeskočit na obsah
coden

Jak funguje AI agent: jazykový model ve smyčce s nástroji

Smyčka úvaha – volání nástroje – výsledek na skutečné úloze nad články webu, tři postupy a jejich cena v tokenech, proč roste kontext, plán a paměť, spolehlivost dlouhých úloh s kontrolou a bez ní, a proč agent potřebuje schvalování.

11 minut Matěj Žalmánek 2026-10-16

Série Základy AI Díl 81 z 83
  1. Mapa umělé inteligence: co je co a jak to do sebe zapadá
  2. Stručná historie umělé inteligence: od Turinga po jazykové modely
  3. Data, model, trénink, inference: základní pojmy na jednom příkladu
  4. Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relace: stavebnice, ze které se skládají definice v AI
  6. Funkce a zobrazení: proč je každý model v AI funkce
  7. Logika a důkazy: pravidla, podle kterých se v AI uvažuje
  8. Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
  9. Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
  10. Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
  11. Gradientní sestup: jak se model učí
  12. Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
  13. Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
  14. Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
  15. Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
  16. Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
  17. Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
  18. Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
  19. Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
  20. Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
  21. Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
  22. Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
  23. Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
  24. Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
  25. Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
  26. Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
  27. Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
  28. Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
  29. Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
  30. Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
  31. Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
  32. Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
  33. Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
  34. Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
  35. Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
  36. Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
  38. Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
  39. Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
  40. Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
  41. Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
  42. Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
  43. Přeučení a regularizace: proč model, který zná data nazpaměť, selže
  44. Vyhodnocení modelu: křížová validace, F1 a křivka ROC
  45. Shlukování a snížení dimenze: k-means, PCA a t-SNE
  46. Klasifikace a regrese: dvě úlohy učení s učitelem
  47. Lineární regrese: nejmenší čtverce geometricky i maticově
  48. Polynomiální a nelineární regrese: jak přímku ohnout
  49. Logistická regrese: sigmoida, šance a křížová entropie
  50. Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
  51. Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
  52. Ztrátové funkce: co přesně model minimalizuje
  53. Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
  54. Ansámbly: náhodný les a gradient boosting
  55. SVM a jádrový trik: nejširší hranice a jak ji ohnout
  56. Signál a vzorkování: proč platí Nyquistův teorém
  57. Fourierova transformace: rozklad signálu na frekvence
  58. Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
  59. Zvuk a řeč: spektrogram, melová škála a MFCC
  60. Obraz jako signál: pixely, barvy, konvoluce a hrany
  61. Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
  62. Neuronová síť od nuly: zpětné šíření chyby krok za krokem
  63. Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
  64. Konvoluční sítě: jak síť poznává obrázky
  65. Rekurentní sítě: paměť pro posloupnosti a mizející gradient
  66. LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
  67. Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
  68. Embeddingy a word2vec: jak se slovo stane vektorem
  69. Mechanismus pozornosti: jak se model naučí, kam se dívat
  70. Transformery a velké jazykové modely: architektura krok za krokem
  71. Tokenizace: jak se text rozseká na kousky pro model
  72. Předtrénování a škálování: proč větší model a víc dat funguje
  73. Doladění a RLHF: jak se z doplňovače textu stane asistent
  74. Prompty, kontext a RAG: jak modelu dát správné informace
  75. Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
  76. Generativní adversariální sítě (GAN): padělatel proti detektivovi
  77. Difúzní modely: jak se z čistého šumu stane obrázek
  78. Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
  79. Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
  80. Policy gradient a PPO: učení přímo strategie
  81. Jak funguje AI agent: jazykový model ve smyčce s nástroji
  82. Programování s AI agenty: zadání, testy a kontrola
  83. Vyhodnocení a bezpečnost AI systémů: jak měřit a jak hlídat

Celá osnova série 83 z 83 témat hotovo

Co si odnesete
  • Co se v agentovi děje krok po kroku a co dělá model a co obslužný program.
  • Proč je kontext drahý a jak ho dobří agenti šetří.
  • Proč dlouhé úlohy bez kontroly selhávají a jak pomáhají testy a schvalování.

Co se hodí znát předem: Prompty, kontext a RAG: jak modelu dát správné informace, Tokenizace: jak se text rozseká na kousky pro model, Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice

Jazykový model sám od sebe jen odpovídá: dostane text, vrátí text. Agent je model, kterému dáme ruce — nástroje, kterými může něco zjistit nebo udělat — a necháme ho pracovat ve smyčce, dokud úkol nedokončí. Takhle fungují programovací agenti, kteří sami čtou kód, spouštějí testy a opravují chyby, i asistenti, kteří hledají na webu. A takhle funguje i agent, kterého coden ovládá z telefonu. V tomhle dílu rozebereme smyčku na skutečné úloze a spočítáme, co stojí a kde se láme.

Navazuje na díly Prompty, kontext a RAG, Tokenizace a Markovovy rozhodovací procesy.

1. Model ve smyčce

Definice — AI agent

Obecně je agent funkce, která každé dosavadní historii vjemů přiřadí akci (agentní funkce z mapy AI). AI agent v užším smyslu tohoto dílu je tato konkrétní konstrukce. Nechť

  1. T je množina všech textů (konečných posloupností tokenů) a ⊕ : T × T → T připojení textu na konec;
  2. M : T → T je jazykový model, který z kontextu napíše další krok (model se vzorkováním je ve skutečnosti náhodný; tady bereme jeden pevný průběh);
  3. F ⊆ T je množina kroků, které jsou konečnou odpovědí; ostatní kroky v ∈ T ∖ F jsou volání nástroje;
  4. N : T ∖ F → T je obslužný program: volání nástroje skutečně provede a vrátí jeho výsledek jako text;
  5. c1 ∈ T je počáteční kontext (systémový prompt, popis nástrojů a úkol) a Kmax ∈ ℕ, Kmax ≥ 1, rozpočet kroků.

Běh agenta je posloupnost kontextů c1, c2, … a kroků v1, v2, … daná pro k = 1, 2, …, Kmax předpisem

vk = M(ck),   ck+1 = ck ⊕ vk ⊕ N(vk)   (je-li vk ∉ F).

Běh se zastaví v prvním kroku k, pro který vk ∈ F — výstupem je odpověď vk —, nebo po kroku Kmax, pokud žádný krok konečnou odpovědí nebyl — výstupem je „došel rozpočet kroků“.

Agent tedy střídá krok modelu a provedení nástroje, dokud model neodpoví nebo nedojde rozpočet. Střídání úvahy a akce popsali Shunyu Yao a kol. (2022) pod jménem ReAct (reason + act); zápis výše je zjednodušená formalizace pro tenhle díl.

Laicky řečeno

Chytrý kolega na telefonu, který nevidí váš počítač. Řekne „otevři složku src“, vy mu přečtete, co tam je, on řekne „teď soubor server.js, řádky 100 až 150“ — a tak dál, dokud nemá odpověď. Model je ten kolega, obslužný program jsou vaše ruce a oči. V řeči posilovaného učení: stavem je dosavadní konverzace, akcí volání nástroje.

vk = M(ck),   ck+1 = ck ⊕ vk ⊕ N(vk)

ck
kontext před k-tým voláním modelu: systémový prompt, úkol a všechno, co se zatím stalo. Je to celý „stav“ agenta — nic jiného si model nepamatuje
M
jazykový model; z kontextu napíše další krok. Jediná část, která „přemýšlí“, a jediná, které nelze úplně věřit
vk
krok modelu: úvaha a volání nástroje, nebo konečná odpověď (pak smyčka končí)
N(vk)
výsledek nástroje, který spočítá obslužný program; přidává do kontextu to, co model sám vědět nemůže (obsah souboru, výstup testů)
⊕ je připojení textu na konec. Tohle je zjednodušená formalizace pro tenhle díl, ne zápis z článku o ReAct.
kontext = [systémový prompt, popis nástrojů, úkol]
pro k = 1 … K_max:                       # rozpočet kroků
    krok = model(kontext)                # čte CELÝ kontext
    kontext += krok
    když krok je konečná odpověď: vrať ji
    když nástroj potřebuje souhlas a člověk ho nedal:
        kontext += "zamítnuto"; pokračuj
    výsledek = proveď(krok.nástroj, krok.parametry)   # obslužný program
    kontext += výsledek
vrať "došel rozpočet kroků"

2. Nástroje

Definice — volání nástrojů (tool use, function calling)

Nechť agent má m ≥ 1 nástrojů. Nástroj i ∈ {1, …, m} je dán

  1. jménem ji (jména různých nástrojů jsou různá),
  2. slovním popisem, k čemu slouží,
  3. schématem parametrů Si — popisem, jaké parametry a jakých typů nástroj přijímá (typicky jako schéma JSON),
  4. procedurou, kterou obslužný program pro platné parametry spustí a která vrátí výsledek jako text.

Jméno, popis a schéma všech nástrojů se vloží do promptu. Volání nástroje je strukturovaný výstup modelu tvaru (j, x) — jméno a parametry, třeba {"nastroj": "hledej", "text": "KL divergence"}. Model je doladěný tak, aby takový výstup místo běžného textu uměl napsat. Obslužný program volání (j, x) zpracuje takto:

  1. existuje-li i s j = ji a parametry x odpovídají schématu Si, spustí proceduru nástroje i s parametry x a její výsledek připojí do kontextu jako další zprávu;
  2. jinak do kontextu připojí chybovou zprávu a nástroj nespustí.

Model sám tedy nic nespouští — jen píše, co se má spustit; spouští (nebo odmítne spustit) obslužný program.

Laicky řečeno

Jídelní lístek a objednávka. Model dostane lístek („tyhle nástroje máš a takhle se objednávají“) a napíše objednávku přesně ve tvaru, kterému kuchyně rozumí. Vaří kuchyně, ne host. Proto jde kuchyni přikázat, že některá jídla bez souhlasu nevydá.

Náš agent pracuje nad texty 21 starších článků tohoto webu (stejnými jako v dílech o tokenizaci a RAG) a má tři nástroje. Celý jeho systémový prompt má 157 tokenů:

Jsi agent, který odpovídá na otázky podle článků webu. Máš nástroje:
- seznam(): Vypíše články a jejich délku ve znacích.
- hledej(text, max): Najde výskyty textu ve všech článcích; vrátí článek, pozici a okolí.
- cti(clanek, od, do): Vrátí úsek článku od pozice do pozice (znaky).
V každém kroku napiš krátkou úvahu a zavolej jeden nástroj, nebo napiš konečnou odpověď s odkazem na článek. Když něco nenajdeš, zkus jiný dotaz.

Skutečné nástroje programovacích agentů jsou podobné: hledat v souborech, přečíst úsek souboru, upravit ho, spustit příkaz v terminálu. Od roku 2024 se nástroje dají připojovat i přes společný protokol MCP (Model Context Protocol), takže stejný nástroj — databázi, kalendář, prohlížeč — může používat kterýkoli agent.

3. Jedna otázka, tři postupy

Otázka: „Proč KL divergence není vzdálenost? Uveď příklad z článků.“ Odpověď je v článku o teorii informace: KL divergence není symetrická, DKL(0,7 ‖ 0,5) = 0,119, ale DKL(0,5 ‖ 0,7) = 0,126. Kroky agenta jsme sepsali ručně — za model jsme napsali úvahy a volání. Nástroje, jejich výsledky i tokeny jsou ale skutečné.

Příklad — proč DKL(0,7 ‖ 0,5) ≠ DKL(0,5 ‖ 0,7)

Pro dvě rozdělení ano/ne (déšť s pravděpodobností p, model říká q; p, q ∈ (0, 1)) je DKL(p ‖ q) = p log2 p/q + (1 − p) log2 1 − p/1 − q bitů (teorie informace).

DKL(0,7 ‖ 0,5) = 0,7 · log2 0,7/0,5 + 0,3 · log2 0,3/0,5 = 0,7 · log2 1,4 + 0,3 · log2 0,6 = 0,340 − 0,221 = 0,119.

DKL(0,5 ‖ 0,7) = 0,5 · log2 5/7 + 0,5 · log2 5/3 = −0,243 + 0,368 = 0,126.

Průměruje se pokaždé podle jiného rozdělení (podle toho, co je skutečnost), proto prohození argumentů dá jiné číslo — a vzdálenost (metrika) musí být symetrická. Tohle je odpověď, kterou agent hledá.

Postup 1: hledej a čti výřez
  1. Hledám přesně slova z otázky.

    hledej(text: "KL divergence není metrika")
    nic nenalezeno
    +34 tokenů, kontext 209
  2. Nic. Zkusím jen název pojmu.

    hledej(text: "KL divergence")
    5 výskytů:
    informace:3258: … minimum je tam, kde model říká pravdu. KL divergence Definice — Kullbackova–Leiblerova diver…
    informace:3656: …,222 bitu. Podle Gibbsovy nerovnosti je KL divergence vždy nezáporná a nulová jen pro q = p .…
    informace:3717: …záporná  … (dalších 310 znaků)
    +205 tokenů, kontext 414
  3. Je to v článku informace. Přečtu okolí.

    cti(clanek: "informace", od: 3660, do: 3960)
    ivergence vždy nezáporná a nulová jen pro q = p . Pozor, KL divergence není vzdálenost: není symetrická. D KL (0,7 ‖ 0,5) = 0,119, ale D KL (0,5 ‖ 0,7) = 0,126. Záleží na tom, co je skutečnost a co model. Informační zisk Definice — podmíněná entropie H ( Y | X … (dalších 40 znaků)
    +146 tokenů, kontext 560

Tři volání nástrojů a čtvrté volání modelu napíše odpověď. První hledání nic nenajde — slova z otázky v textu nejsou. Agent to vidí a zkusí obecnější dotaz; to je výhoda smyčky proti jednorázovému vyhledání. Kontext na konci má 560 tokenů.

Postup 2: čti články jeden po druhém
  1. Nevím, kde to je. Projdu články jeden po druhém.

    cti(clanek: "co-je-pravdepodobnost")
    Jazykový model nevybírá další slovo, ale pravděpodobnosti všech slov. Klasifikátor neříká „je to kočka“, ale „s pravděpodobností 0,93 je to kočka“. Celé strojov … (dalších 7 175 znaků)
    +1 933 tokenů, kontext 2 108
  2. Tady to není, další článek.

    cti(clanek: "csp")
    Rozvrh hodin, ve kterém žádný učitel neučí dvě třídy naráz. Sudoku. Rozmístění součástek na desce, směny v nemocnici, přidělení letadel k branám. Všechny tyhle  … (dalších 11 914 znaků)
    +3 148 tokenů, kontext 5 256
  3. … dalších 8 kroků stejně (kontext na konci 24 927 tokenů)

Agent bez hledání prochází články v abecedním pořadí. Na odpověď narazí až v 10. článku a kontext mezitím naroste na 24 927 tokenů.

A třetí postup, jednorázový RAG z minulého dílu: vyhledat tři nejpodobnější úseky a vložit je do promptu. Všechny tři úseky pocházejí ze správného článku (informace, informace, informace), ale ani jeden neobsahuje příklad s čísly 0,119 a 0,126 — odpověď by byla bez příkladu. Agent ve smyčce si může říct „tohle nestačí, čtu dál“. Jednorázové vyhledání ne.

4. Kontext je drahý

Definice — cena smyčky

Model nemá paměť mezi voláními; při každém volání znovu čte celý kontext — systémový prompt, úkol a všechny dosavadní kroky a výsledky nástrojů. Nechť běh agenta (definice výše) skončil po K ≥ 1 voláních modelu a pro k = 1, …, K je ck ∈ ℕ délka kontextu (počet tokenů) před k-tým voláním. Cena smyčky je počet tokenů, které model během běhu zpracuje na vstupu:

Z = ∑k=1K ck.

Protože kontext s každým krokem roste, roste Z zhruba s druhou mocninou počtu kroků (věta níže).

Laicky řečeno

Jako byste před každou větou dopisu museli celý dopis přečíst znovu od začátku. Krátký dopis nevadí. Dlouhý dopis, do kterého jste navíc vlepili deset přečtených knih, je drahý — a ve všech těch stránkách se snadno ztratí to podstatné.

102103104105106 čti všechno 141 820 hledej a čti výřez 1 358 jednorázový RAG 647 zpracované tokeny (počet, log. měřítko) postup (varianta)
Kolik tokenů model zpracuje celkem (logaritmicky)

Postup „čti všechno“ stojí 141 820 zpracovaných tokenů, „hledej a čti výřez“ jen 1 358 — 104krát méně, a na stejnou odpověď. Proto dobří programovací agenti nejdřív hledají (grep) a čtou jen kousky souborů. A proto se dlouhé sezení čas od času zhušťuje: starší část konverzace se nahradí shrnutím, aby se kontext vešel a model se v něm neztrácel. Pomáhá i ukládání začátku promptu do mezipaměti (prompt caching), díky kterému se opakované čtení stejného začátku platí levněji.

Z = ∑k=1K ck,   ck = c1 + ∑j<k (vj + oj)

Z
celkem zpracované tokeny — to, co se platí a na co se čeká
K
počet volání modelu (kroky s nástrojem + konečná odpověď); každé volání čte kontext znovu od začátku
c1
systémový prompt a úkol; jsou v kontextu od prvního volání, takže se zaplatí K-krát — proto se vyplatí je mít krátké a ukládat do mezipaměti
vj + oj
tokeny, které přidal krok j: volání a výsledek nástroje. Krok j se čte ve všech pozdějších voláních, proto se dlouhý výsledek nástroje platí mnohokrát
Cena jednoho kroku nezávisí jen na tom, co krok vrátí, ale i na tom, kolik kroků po něm ještě přijde.
Věta — cena roste s druhou mocninou počtu kroků

Nechť K ∈ ℕ, K ≥ 1, je počet volání modelu, c1 ≥ 0 délka počátečního kontextu a d ≥ 0 počet tokenů, který přidá každý krok (volání i výsledek nástroje dohromady), takže ck = c1 + (k − 1) d pro k = 1, …, K. Pak

Z = K c1 + d · K(K − 1)/2.

Důkaz: Z = ∑k=1K (c1 + (k − 1) d) = K c1 + d ∑k=1K (k − 1) a ∑k=1K (k − 1) = 0 + 1 + … + (K − 1) = K(K − 1)/2. ∎ Pro velké K převáží druhý člen ≈ d K²/2: dvakrát delší sezení stojí zhruba čtyřikrát víc. (Barvy odpovídají členům rozboru výše: d je stálá hodnota vj + oj.)

Příklad — přepočet obou postupů

Hledej a čti výřez. Systémový prompt má 157 tokenů, otázka 18, tedy c1 = 175. Po třech krocích má kontext 209, 414, 560 tokenů. Čtyři volání modelu čtou Z = 175 + 209 + 414 + 560 = 1 358 tokenů (barvy podle vzorce výše).

Čti všechno. K = 11 volání, kontext naroste z 175 na 24 927 tokenů, průměrně o d = 24 927 − 175/10 ≈ 2 475 za krok. Podle věty Z ≈ 11 · 175 + 2 475 · 11 · 10/2 = 138 050; skutečnost je 141 820 (články mají různou délku, takže kroky nepřidávají přesně stejně). Systémový prompt s otázkou je z toho jen 1 925 tokenů — skoro všechno je opakované čtení článků.

5. Plán a paměť

Definice — plánování a paměť agenta

Tyto pojmy nejsou matematické; jsou to role částí běhu agenta (definice AI agenta výše, kontexty c1, c2, …, nástroje N). Jedno sezení je jeden běh agenta od c1 po zastavení.

  1. Plán je text v kontextu — číslovaný seznam kroků, který agent napíše jako jeden ze svých kroků vk na začátku sezení a v dalších krocích opakovaně přepisuje (odškrtává hotové, mění zbylé). Model ho čte jako každou jinou část kontextu; nic ho nevynucuje.
  2. Pracovní paměť je kontext ck jednoho sezení. Zaniká se sezením a je omezená délkou kontextu, kterou model zvládne.
  3. Dlouhodobá paměť jsou data uložená mimo model i mimo kontext (soubory, databáze), která přetrvají konec sezení. Agent do nich zapisuje a čte z nich jen voláním nástrojů; v dalším sezení se dostanou do kontextu, jen pokud je agent přečte nebo je obslužný program vloží do c1.
  4. Dílčí agent je jiný běh agenta, který hlavní agent spustí jako nástroj: dílčí agent začne s vlastním počátečním kontextem (jen popis dílčího úkolu), pracuje ve vlastní smyčce a do kontextu hlavního agenta se jako výsledek nástroje N(vk) vrátí jen jeho konečná odpověď. Podrobnosti jeho práce tak hlavní kontext nezaplní.
Laicky řečeno

Řemeslník na delší zakázce si píše seznam na papír a večer si do sešitu poznamená, co zjistil — ráno si nemusí všechno pamatovat, stačí otevřít sešit. Na pomocné práce pošle učně a od něj chce jen „hotovo, bylo to tady“.

U programovacích agentů je dlouhodobou pamětí obvykle obyčejný textový soubor v projektu (pravidla, příkazy, na co si dát pozor), který agent čte na začátku každého sezení. Je to nejjednodušší a nejprůhlednější paměť: člověk ji může přečíst i opravit.

6. Dlouhé úlohy a kontrola

Agent, který udělá správný krok v 90 % případů, vypadá spolehlivě. Jenže úloha se skládá z mnoha kroků a chyba v kterémkoli z nich ji pokazí. Když se krok povede s pravděpodobností p, povede se celá úloha z n kroků s pravděpodobností pn — pokud agent chyby nepoznává.

Definice — uzavřená smyčka se zpětnou vazbou

Nechť p ∈ [0, 1], d ∈ [0, 1], r ∈ ℕ ∪ {0} a n ∈ ℕ, n ≥ 1. Krok s kontrolou (uzavřená smyčka) probíhá takto:

  1. agent krok provede; pokus se povede s pravděpodobností p;
  2. agent výsledek ověří (spustí testy, přečte výstup příkazu, porovná s očekáváním); povedený pokus kontrola vždy přijme, nepovedený pozná jako chybný s pravděpodobností d;
  3. pokus se povedl ⇒ krok skončí úspěchem;
  4. pokus se nepovedl, kontrola to poznala a agent zatím opakoval méně než r-krát ⇒ agent krok opakuje od bodu 1;
  5. jinak (chyba prošla kontrolou, nebo došla opakování) krok skončí neúspěchem.

Výsledky jednotlivých pokusů a kontrol jsou navzájem nezávislé. Úspěšnost kroku q je pravděpodobnost, že krok skončí úspěchem; úloha je n takových kroků za sebou, nezávislých, a povede se, právě když se povedou všechny. Pak

q = p ∑k=0r ((1 − p) d)k,   P(úloha se povede) = qn.

Sčítanec k je pravděpodobnost, že prvních k pokusů selže a selhání se pozná (každý s pravděpodobností (1 − p) d) a pokus k + 1 se povede; tyto možnosti se navzájem vylučují, proto se sčítají. Bez kontroly (d = 0 nebo r = 0) je q = p.

Laicky řečeno

Kdo píše dlouhý program bez spouštění, skoro jistě v něm má chybu. Kdo po každé změně pustí testy, chybu najde hned, když je ještě malá a ví se, kde je. Agenti na tom nejsou jinak.

q = p ∑k=0r ((1 − p) d)k = p + p (1 − p) d + p ((1 − p) d)² + …

p
pokus se povede; každý sčítanec končí právě jedním povedeným pokusem
1 − p
pokus selže; každé selhání před úspěchem stojí jeden takový činitel
d
kontrola selhání pozná; jen tehdy agent krok zopakuje — nepoznaná chyba projde dál a pokazí úlohu
∑k=0r, k
k = kolik pokusů selhalo, než jeden vyšel; nejvýš r opakování, aby agent nezkoušel donekonečna
Úspěšnost kroku s kontrolou; celá úloha z n nezávislých kroků se povede s pravděpodobností qn. Bez kontroly je d = 0 a zbude q = p.
0 %25 %50 %75 %100 % 020406080100 délka úlohy n (počet kroků) úspěšnost úlohy (%)
Úspěšnost úlohy podle počtu kroků (kontrola pozná 90 % chyb, nejvýš dva opakované pokusy) krok se povede v 90 % krok se povede v 99 % plně s kontrolou, čárkovaně bez

S p = 0,9 a dvaceti kroky se bez kontroly povede jen 12 % úloh, s kontrolou 79 %. Simulace 20 000 úloh dává 12 % a 79 %, vzorec sedí. I velmi dobrý krok (p = 0,99) při stovce kroků bez kontroly selže častěji, než uspěje (37 %); s kontrolou uspěje v 90 %. Tohle je hlavní důvod, proč programovací agenti fungují tak dobře: kód se dá spustit a otestovat, takže skoro každý krok má zpětnou vazbu. Organizace METR (2025) měří, že délka úloh, které agenti zvládnou v polovině případů, se zhruba každých sedm měsíců zdvojnásobuje.

Příklad — p = 0,9, d = 0,9, r = 2, dvacet kroků

Úspěšnost kroku (barvy podle vzorce výše): q = 0,9 + 0,9 · 0,1 · 0,9 + 0,9 · (0,1 · 0,9)² = 0,9 + 0,081 + 0,00729 = 0,98829.

Celá úloha: bez kontroly 0,920 = 0,122, s kontrolou 0,9882920 = 0,790. Krok se zlepšil jen z 90 % na 98,8 %, ale úloha z 12 % na 79 % — mocnina n malé rozdíly v kroku nafukuje.

Definice — délka úlohy, kterou agent zvládne v polovině případů

Nechť q ∈ (0, 1) je úspěšnost kroku a úloha z n nezávislých kroků se povede s pravděpodobností qn (definice výše). Délka úlohy zvládnutelné v polovině případů je reálné číslo n50 % > 0, pro které qn50 % = 1/2, tedy

n50 % = ln 0,5/ln q = ln 2/−ln q ≈ 0,69/1 − q   pro q blízko 1

(přibližná rovnost plyne z −ln q ≈ 1 − q pro q → 1). Protože qn s rostoucím n klesá, platí qn ≥ 1/2, právě když n ≤ n50 %; největší celý počet kroků, který agent zvládne aspoň v polovině případů, je tedy ⌊n50 %⌋.

V našem modelu: p = 0,9 bez kontroly 6,6 kroku, s kontrolou 58,8; p = 0,99 bez kontroly 69,0, s kontrolou 686. Úloha, kterou agent zvládne napůl, se prodlouží zhruba úměrně tomu, kolikrát klesne chybovost kroku 1 − q.

Stejnou veličinu (dobu úlohy, kterou agent zvládne v 50 % případů) měří METR — jen ne v krocích, ale v čase, který by úloha zabrala člověku (Thomas Kwa a kol., Measuring AI Ability to Complete Long Tasks, 2025). Náš vzorec je zjednodušený model s nezávislými kroky, ne jejich metoda.

7. Oprávnění a dohled

Agent, který smí spouštět příkazy, smí i škodit — omylem (smaže špatnou složku) nebo na pokyn, který si přečetl v cizím textu (prompt injection). Obrana nestojí na modelu, ale na obslužném programu: nástroje s omezenými právy, běh v izolovaném prostředí, a hlavně schvalování — nebezpečné nebo nevratné kroky provede až po souhlasu člověka. Na tom stojí i coden: agent pracuje na vašem počítači a vy jeho kroky schvalujete z telefonu.

8. Shrnutí

  • Agent = jazykový model ve smyčce: úvaha, volání nástroje, výsledek do kontextu, znovu.
  • Model nástroje jen popisuje strukturovaným voláním; spouští je obslužný program, který může vynutit pravidla.
  • Smyčka umí opravit neúspěšné hledání — jednorázový RAG ne.
  • Každé volání čte celý kontext: „čti všechno“ stálo 141 820 tokenů, „hledej a čti výřez“ 1 358.
  • Plán, poznámky v souborech a dílčí agenti drží kontext malý a přehledný.
  • Bez kontroly klesá úspěšnost s délkou úlohy jako pn; testy a ověřování to mění (20 kroků při p = 0,9: 12 % → 79 %).

Chcete si to osahat? Požádejte AI agenta, ať vám popíše každé volání nástroje, které při úkolu udělá, a na konci ať odhadne, kolik tokenů ho úkol stál. Pak mu zadejte stejný úkol s pokynem „nejdřív hledej, čti jen výřezy“.

Máte na to jiný názor? Napište na support@coden-app.com.

Agent na vašem počítači, ovládaný z telefonu