LiteLLM počítal úsporu z mezipaměti bez ceny jejího zápisu
LiteLLM až do verze 1.98.0 přičítal úsporu za tokeny načtené z mezipaměti, ale neodečetl příplatek za její vytvoření. U zápisu 20 000 tokenů pro Claude Sonnet 4.5 tak mohl přehled ukazovat zisk tam, kde první požadavek ve skutečnosti prodělal 0,015 dolaru. Nová verze počítá obě strany, starší denní souhrny však zpětně nepřepočítá.

LiteLLM stojí mezi aplikací a rozhraními poskytovatelů modelů. Překládá požadavky, směruje je mezi nasazenými modely a vede záznamy o nákladech. Jeho přehled optimalizace proto neukazuje jen zaplacenou částku, ale také odhad, kolik ušetřila mezipaměť pokynů. Právě tenhle údaj byl do verze 1.98.0 neúplný.
Starý výpočet ocenil tokeny přečtené z mezipaměti rozdílem mezi běžnou vstupní cenou a cenou čtení. Nezahrnul ale druhou stranu účtu: vytvoření záznamu může být dražší než obyčejný vstup. Oprava číslo 36452 ukazuje případ, ve kterém starý přehled hlásil kladnou úsporu 0,0027 dolaru, ačkoli skutečný rozdíl proti požadavku bez mezipaměti byl záporných 0,0123 dolaru.
Nový vzorec odečte jen příplatek
Nová podoba vychází z toho, kolik by stejné tokeny stály bez mezipaměti. Sleva za čtení se sníží o příplatek za zápis:
úspora = čtení × (běžná cena − cena čtení)
− zápis × (cena zápisu − běžná cena)
Od ceny zápisu se odečítá běžná vstupní cena, ne celý zápis. Tyto tokeny by se platily i bez mezipaměti; jejím nákladem je pouze rozdíl navíc. Kód zároveň příplatek neomezuje nulou. Několik položek v cenové mapě LiteLLM má zápis levnější než běžný vstup, a záporný příplatek je u nich další úsporou.
Pokud poskytovatel samostatnou cenu zápisu vůbec neuvádí, dosadí LiteLLM běžnou vstupní cenu. Rozdíl je pak nula. Podle popisu opravy se změna projeví hlavně u Anthropic a Amazon Bedrock; u poskytovatelů s automatickou mezipamětí a bez zvláštní ceny zápisu se výsledek nemění.
Dvacet tisíc tokenů nejdřív prodělá 1,5 centu
Ceník mezipaměti Anthropic uvádí u Claude Sonnet 4.5 tři vstupní sazby za milion tokenů: 3 dolary za běžný vstup, 3,75 dolaru za zápis s pětiminutovou životností a 0,30 dolaru za čtení. Jde tedy o násobky 1,25 a 0,1 běžné ceny.
Na statickém začátku pokynu o 20 000 tokenech vychází první požadavek bez mezipaměti na 0,06 dolaru. Zápis téhož obsahu stojí 0,075 dolaru. Rozdíl 0,075 − 0,06 je záporná úspora 0,015 dolaru, kterou starý přehled vůbec neviděl. Výstupní tokeny se do porovnání nepočítají, protože v obou variantách stojí stejně.
První opakování během pěti minut už stejný začátek přečte za 0,006 dolaru místo 0,06. Ušetří 0,054 dolaru. Oba požadavky dohromady stojí s mezipamětí 0,081 dolaru, bez ní 0,12 dolaru. Čistá úspora je tedy 0,039 dolaru, neboli 32,5 % ze vstupní ceny obou požadavků. Všechny čtyři částky jsou vlastní výpočet z veřejných sazeb a 20 000 tokenů.
Hodinový zápis potřebuje dvě čtení
Hodinová mezipaměť má podle téhož ceníku dvojnásobnou cenu běžného vstupu. Jeden zápis a jedno čtení proto stojí v poměru 2 + 0,1 = 2,1, zatímco dva běžné vstupy mají poměr 2. Dvojice požadavků je s hodinovou mezipamětí o 5 % dražší. Teprve druhé čtení změní poměr na 2,2 proti třem běžným vstupům, tedy na úsporu 26,7 %.
Oprava v LiteLLM má u hodinové varianty známou mez. Autor změny výslovně uvádí, že sazbu cache_creation_input_token_cost_above_1hr zatím výpočet úspor nepoužije a hodinový zápis ocení základní sazbou pro zápis. U provozu s hodinovou životností tak může nový přehled příplatek stále podhodnotit. Změna řeší znaménko a základní sazbu, ne všechny cenové vrstvy.
Nová čísla se se starými v souhrnu smíchají
Oprava byla do vývojové větve sloučena 11. srpna. Vydání LiteLLM 1.98.0, které ji obsahuje, zveřejnil GitHub 23. srpna v 00:28 UTC. Osm instalačních souborů verze 1.98.0 na PyPI bylo nahráno už 22. srpna mezi 22:19:03 a 22:19:21 UTC.
Nový kód dovolí, aby údaj o úspoře vyšel záporně, a denní souhrn takové požadavky odečte od kladných. Historické řádky ale nepřepočítá. Správce, který v přehledu vybere období přes den nasazení nové verze, proto uvidí směs starého hrubého odhadu a nové čisté úspory. Změna názvu a nápovědy v rozhraní to připomíná, samotná data od sebe neoddělí.
Praktický závěr není, že se mezipaměť nevyplatí. U pětiminutové varianty stačí v uvedeném příkladu jediné další použití, aby se příplatek zaplatil. Přehled nákladů však musí vědět, zda obsah opravdu někdo znovu četl. Samotný zápis není úspora a LiteLLM 1.98.0 ho tak konečně počítá.
Zdroje: poznámky k vydání LiteLLM 1.98.0, návrh opravy výpočtu, dokumentace a ceník mezipaměti Anthropic a záznam balíčku LiteLLM 1.98.0 na PyPI.