Jedna otázka, šest minut čtení
- Odpověď nástroje
- 33 984 tokenů
- Jen na přečtení
- 358 s
- Potřeba k odpovědi
- 5 %
- Pokusů, než to prošlo
- 6
Změřeno 3. 8. 2026 na vlastní účetní službě, kterou má asistent připojenou jako nástroj.
Teze: U lokálního modelu neplatíte za nástroj tím, že ho zavoláte, ale tím, že si musíte přečíst, co vrátil. A nástroje vracejí všechno.
Otázka a odpověď
Mám nějakou otevřenou pozici v hongkongském dolaru?
Správná odpověď je „ne". Dvě písmena.
Nástroj na to poslal 70 835 znaků, tedy 33 984 tokenů. Pro srovnání: celý systémový prompt agenta má 16 500 tokenů. Jedno volání nástroje stálo dvakrát víc kontextu než všechny instrukce, dokumenty a definice nástrojů dohromady.
Podle naměřené křivky to znamená 358 sekund jen na přečtení — skoro šest minut, než model napíše první znak odpovědi.
Z čeho se těch 34 tisíc tokenů skládá
Služba vrací seznam 103 pozic. Každá má 27 polí: nákupní cena, aktuální cena, stáří ceny, hodnota, nerealizovaný zisk v korunách i procentech, předchozí cena, denní změna, stav po daňovém testu, stav před ním, nejbližší dozrání, brokeři, počet lotů, první a poslední nákup.
Na položenou otázku jsou potřeba dvě — ticker a měna.
| znaků | |
|---|---|
| všech 103 pozic se všemi poli | 62 762 |
| jen ticker a měna | 3 161 |
| skutečná odpověď | 2 |
Devadesát pět procent té odpovědi bylo k otázce nepoužitelných.
Jak to dopadlo v provozu
Volání bez filtru se do kontextu nevešlo a odpověď se osekala uprostřed. Pak následovaly čtyři minuty a šest pokusů:
- zavolat nástroj znovu, tentokrát bez argumentů
- najít na disku odložený výstup a přečíst ho Pythonem
- totéž s absolutní cestou
- hledat, kam se ten výstup uložil — vrátilo nulu (proč)
- napsat vlastní skript, který ten soubor rozparsuje
- zavolat nástroj s parametrem
broker— a to prošlo
Ten šestý krok je pointa. Parametr existoval od začátku a zmenšil odpověď z 33 984 na 9 797 tokenů, tedy na necelou třetinu. Agent ho ale použil až poté, co jsem se sám doptal, jestli by pomohlo omezit to na jednoho brokera.
Nenapadlo ho zúžit dotaz. Napadlo ho obejít výsledek.
Co s tím jde dělat
Služba je moje, takže tohle není stížnost na cizí API. Napadly mě tři úrovně — a v pořadí, ve kterém jsem je sepsal, byly špatně.
Jako první jsem chtěl výběr polí: kdyby šlo požádat o ticker,mena, spadne
odpověď na tři tisíce znaků. Jenže vlastní nález tohohle článku říká, že model
si dotaz sám nezúžil — parametr broker existoval od začátku a použil ho až po
mém doptání. Cokoli, co čeká, až si model řekne, nevystřelí. Skončilo by to jako
broker: k dispozici a nepoužité.
Správné pořadí je obrácené:
Kompaktní tvar jako výchozí. Ne opt-in zúžení, ale opt-out rozšíření. Model
dostane deset polí, aniž by cokoli věděl; plnou sadu si vyžádá detail: true.
Strop s poctivou hláškou. Když se odpověď nevejde, musí to říct a poradit, čím ji zúžit — ne se useknout uprostřed JSONu a nechat model hádat, co se stalo.
Souhrn místo seznamu. Na otázku po měnách stačí pár set znaků; výpis řádků je na ni špatná odpověď bez ohledu na to, jak je úsporný.
Co se změnilo
Nasazeno 3. 8. 2026 večer, naměřeno na stejné otázce:
| znaků | tokenů | |
|---|---|---|
| původní odpověď | 62 762 | 30 174 |
| kompaktní výpis (nově výchozí) | 19 351 | 9 303 |
| souhrn portfolia | 1 234 | 593 |
Otázka po měně je dnes jedenapadesátkrát menší než tehdy. Šest minut prefillu se smrsklo pod deset sekund.
Strop jsem přitom hned napoprvé nastavil špatně — 30 000 znaků odřízlo i plný výpis, na kterém stojí noční hlídač portfolia, a rozbilo ho. Ukázalo se, že jsem stropu dal dva neslučitelné úkoly: vynucovat stručnost vůči modelu a chytat odpovědi nepoužitelné pro kohokoli. To první patří výchozímu tvaru. Strop je teď nad legitimním maximem (62 762) a pod uprchlíky — nefiltrované dividendy mají 492 856 znaků a jednotlivé nákupní loty 1 629 810, tedy zhruba 780 tisíc tokenů v jedné odpovědi.
Poznámka k publikaci
Konkrétní tickery a částky nejsou uvedené; počty polí, znaků, tokenů a časy jsou naměřené. Otázka na měnu je skutečná a padla v běžném provozu.
Oprava (3. 8. 2026 večer). První verze tvrdila „všech 29 pozic se všemi
poli, 19 639 znaků". Pozic je 103 — číslo 29 bylo ze stejného měření, ale
znamenalo počet různých názvů polí. Tabulka je přeměřená na nasazené službě.
Údaj „27 polí na pozici" platí (medián; maximum je 28, protože nazev
a delistedAt se uvádějí, jen když říkají něco navíc).
- MCPkompaktní tvar odpovědi jako výchozí, plná sada na `detail: true`
- MCPstrop odpovědi s hláškou, čím dotaz zúžit (místo useknutí uprostřed JSONu)
- MCPnový souhrn portfolia — otázka po měně je 51× menší
- MCP5. 8.: kompaktní odpovědi v TOON a dividendy bez filtru vrací součty — 939 znaků místo 492 856