Měřič útraty v bráně Claude apps účtoval hodinovou mezipaměť levnější sazbou
Claude Code 2.1.286 opravuje měřič, podle kterého brána Claude apps hlídá útratové limity vývojářů. Zápis do hodinové mezipaměti počítal sazbou pětiminutové, tedy o 37,5 % levněji, a u tahů s vyhledáváním bral vstupní tokeny jen z prvního volání modelu.
Anthropic vydal 30. září Claude Code 2.1.286. Mezi osmaosmdesáti body poznámek k vydání je jedna oprava, která se netýká jednotlivého vývojáře, ale správce firemní instalace. Měřič útraty v bráně Claude apps počítal zápis do hodinové mezipaměti levnější pětiminutovou sazbou. U streamovaných tahů, ve kterých běží serverový nástroj, jako je vyhledávání na webu, navíc započítal vstupní tokeny jen z prvního volání modelu.
Brána Claude apps je server, který si firma provozuje sama. Posílá přes něj požadavky z Claude Code a z aplikace Claude Desktop k Amazon Bedrock, Google Cloudu, Microsoft Foundry nebo přímo k Anthropicu, přihlašuje lidi přes firemní jednotné přihlášení a rozhoduje, kdo smí na který model. O tom, že k požadavkům umí připojit i filtr obsahu z Bedrocku, jsme psali minulý týden.
Na měřiči stojí limity jednotlivých vývojářů
Všechny požadavky jdou přes bránu pod jedním sdíleným přístupovým klíčem, takže účet od poskytovatele nerozliší, kdo kolik utratil. Proto má brána vlastní útratové limity: správce nastaví strop v dolarech na den, týden nebo měsíc pro celou organizaci, pro skupinu nebo pro jednoho člověka. Kdo ho přečerpá, dostane na další požadavek odpověď 429 s typem chyby billing_error a do konce období nepokračuje. Claude Code ho předtím varuje při 75 % a znovu při 95 %.
Z čeho se počítá, kolik člověk utratil, rozhoduje právě měřič. Po každé odpovědi přečte počty tokenů, přiřadí jim ceny z ceníku (nebo ze smluvních sazeb, které správce zadá) a přičte částku k denním, týdenním i měsíčním součtům. Dokumentace přitom sama upozorňuje, že jde o odhad v dolarech, „jistič, ne faktura“. Skutečná částka se vyrovnává podle vyúčtování poskytovatele.
O kolik se měřič pletl
Podle ceníku Claude API stojí zápis do pětiminutové mezipaměti 1,25násobek základní ceny vstupu a zápis do hodinové dvojnásobek. U Opusu 5.5 to je 5 dolarů proti 8 dolarům za milion tokenů, u Sonnetu 5.5 2,50 proti 4 dolarům. Měřič tak u hodinových zápisů viděl 62,5 % skutečné ceny.
Na příkladu: kontext o 200 000 tokenech zapsaný do hodinové mezipaměti Opusu 5.5 stojí 1,60 dolaru, měřič z něj napočítal 1,00. Ostatní položky, tedy běžný vstup, čtení z mezipaměti a výstup, se tou chybou nezměnily. O kolik víc než stanovený strop mohl vývojář utratit, proto záleží na tom, jaký podíl jeho útraty tvořily hodinové zápisy.
Druhá chyba se týká tahů se serverovým nástrojem. Při vyhledávání model během jediného tahu volá API opakovaně a výsledky hledání se v každém dalším kole počítají jako vstupní tokeny, jak uvádí týž ceník. Měřič bral vstup jen z prvního kola. Podle nás to byla ta menší část, protože pozdější kola nesou i nalezené stránky. Samotné vyhledávání účtuje měřič zvlášť, 0,01 dolaru za hledání, a na tom se nic neměnilo.
Kudy hodinová mezipaměť přes bránu vůbec chodí
Na opravě je jedna nesrovnalost. Tabulka dostupnosti v dokumentaci brány uvádí, že Claude Code v relacích přes bránu hodinovou mezipaměť nezapíná, protože ji nepodporuje každý poskytovatel, ke kterému brána může požadavek poslat. Vyhledávání na webu podle téže tabulky v relacích přes bránu vypíná úplně. Podle dokumentace tedy obě chyby běžný terminálový klient nevyvolá.
Přes bránu ale nechodí jen on. Claude Desktop jí posílá požadavky ze záložek Cowork a Code a po zapnutí i z Chatu. Od kterého klienta hodinové zápisy a tahy s vyhledáváním přicházely, poznámky k vydání nepíšou. Že přicházely, z opravy vyplývá.
Nejasné zůstává i to, jak s oběma sazbami zachází blok pricing, kde si firma nastaví smluvní ceny. Řádek pro jeden model má pevné čtyři sazby: vstup, výstup, čtení z mezipaměti a jediný cache_write. Sazbu zvlášť pro hodinový zápis v něm zadat nejde a dokumentace neříká, jestli ji měřič z toho jednoho čísla dopočítá.
Aktualizovat se musí server brány
Na npm se verze 2.1.286 objevila 30. září v 17.14 UTC. Měřič ale neběží u vývojáře, běží v bráně. Dokumentace u jejích funkcí uvádí verzi vždy „na serveru brány“, takže oprava se projeví až tam, kde si správce povýší bránu samotnou. Útrata zaznamenaná dřív se zpětně nepřepočítá. Kdo potřebuje přesné číslo za minulé měsíce, najde ho ve vyúčtování poskytovatele, ne v přehledu /effective, který z měřiče čte.
Podobnou chybu jsme v srpnu popsali u LiteLLM, který počítal úsporu z mezipaměti bez ceny jejího zápisu. Zápis do mezipaměti je položka, kterou měřidla nad cizím API opakovaně přehlížejí.
