Ce costă de fapt jetoanele LLM și cum să plătiți pentru mai puține dintre ele
Fiecare factură API pentru un model de limbă este o factură pentru jetoane și aproape nimeni nu are o intuiție pentru câte jetoane este o anumită bucată de text. Rezultatul este aceeași surpriză de două ori pe lună: o caracteristică care s-a simțit ieftină la testare costă de patruzeci de ori mai mult în producție sau o fereastră de context care „ar trebui să se potrivească” respinge cererea. Ambele sunt probleme de aritmetică, iar aritmetica merită învățată o dată.
Un simbol nu este un cuvânt
Modelele nu citesc caractere sau cuvinte. Ei citesc jetoane - bucăți produse de un codificator de perechi de octeți care a învățat, în timpul antrenamentului, ce secvențe apar suficient de des pentru a merita propriul simbol. Cuvintele obișnuite în engleză sunt un simbol. Cele rare se despart. Aşa token este unul şi tokenization este trei, în timp ce un șir aleatoriu ca x7Qp2 poate costa cinci.
Regulile generale care merită respectate:
- proza engleza: aproximativ patru caractere pe token, sau aproximativ 0,75 jetoane pe cuvânt. Un articol de o mie de cuvinte înseamnă aproximativ 1.300 de jetoane.
- Cod: considerabil mai rău. Indentarea, punctuația și identificatorii camelCase fragmentează toate. Efectuați un buget mai aproape de trei caractere pe token și tratați codul minimizat ca pe propriul său dezastru - tokenizează prost tocmai pentru că este neobișnuit.
- Scripturi non-latine: much worse again. Chineză, japoneză și coreeană ajung în mod obișnuit aproape de un simbol pentru unul sau două caractere, așa că același conținut în japoneză poate costa de mai multe ori decât versiunea în engleză. Chirilic și grecesc stau între ele.
- JSON: semnele de punctuație sunt bani reali. Fiecare ghilimă, acoladă, două puncte și virgulă este cel puțin parte a unui simbol, iar structurile profund imbricate cu nume lungi de chei pot cheltui mai mult pe sintaxă decât pe valori.
Regulile generale sunt pentru estimare. Când contează, numără: the Calculator de costuri și simboluri LLM tokenizează ceea ce lipiți și tipărește contorizarea și poate afișa și textul cu limitele simbolului marcate, ceea ce este cel mai rapid mod de a înțelege de ce unul dintre solicitările dvs. este neașteptat de scump. Văzând propriile nume de identificare sfărâmate în patru bucăți fiecare explică multe.
Ieșirea costă de câteva ori mai mult decât intrarea
Detaliile privind prețurile pe care oamenii le scapă: furnizorii taxează separat pentru tokenurile pe care le trimiteți și pentru tokenurile pe care modelul le generează, iar producția este de obicei de patru până la opt ori mai mare decât rata de intrare. Un prompt cu 10.000 de jetoane de context și un răspuns de 200 de jetoane este dominat de intrare. Un prompt cu 500 de jetoane de instrucție care produce un eseu de 4.000 de jetoane este dominat – în mare măsură – de rezultat.
Acest lucru inversează o mulțime de instincte de optimizare. Reducerea unui prompt de sistem de la 900 la 600 de jetoane economisește foarte puțin dacă modelul scrie răspunsuri lungi la fiecare apel. A spune modelului să răspundă în trei propoziții în loc de trei paragrafe economisește foarte mult. Întrebați de ce parte a tranzacției se află de fapt volumul dvs. de muncă înainte de a o optimiza pe cea greșită.
Calculatorul prețuiește același text față de fiecare model din tabelul său atât la rate de intrare, cât și de ieșire, astfel încât să puteți compara un model ieftin care face întreaga treabă cu unul scump care face o parte din el. Prețurile de referință sunt stocate local și verificate periodic cu paginile furnizorului - tratați-le ca pe un ajutor de planificare și confirmați pe pagina de prețuri a furnizorului înainte de a vă angaja la un buget, deoarece tarifele se mută.
Chatul este pătratic și aici mor bugetele
Un apel API one-shot costă cât costă. O conversație retrimite întregul istoric la fiecare tură, așa că o conversație cu douăzeci de ture nu costă de douăzeci de ori o tură - costă aproximativ suma unei serii în creștere. Turnul douăzeci plătește din nou pentru rândurile unu până la nouăsprezece.
Două consecințe. În primul rând, buclele de agent de lungă durată sunt cea mai scumpă formă de utilizare a LLM și cea mai probabil să fie prototipată fără măsurare. În al doilea rând, memorarea promptă în cache contează mai mult decât orice modificare de formulare: furnizorii reduceri de jetoane care repetă un prefix pe care l-au văzut deja, ceea ce înseamnă să vă plasați conținutul stabil - promptul de sistem, schema, exemplele - chiar în față și partea variabilă la sfârșit. Reordonați același prompt, astfel încât o marca temporală de schimbare să fie în partea de sus și ați invalidat memoria cache la fiecare apel, fără a modifica nimic altceva.
Reducerea unui prompt înainte de a-l trimite
Cele mai multe solicitări supradimensionate sunt supradimensionate din motive plictisitoare: cineva a lipit un fișier întreg când trei funcții erau relevante, iar fișierul este pe jumătate comentarii și linii goale. The Compresor de context LLM țintește exact asta - elimină comentariile de cod, restrânge linii goale, dedentează și elimină cuvintele de completare din proză, apoi raportează câte jetoane a salvat trimul. Pe un fișier sursă real care rulează în mod obișnuit 20-40% fără a atinge nimic de care modelul are nevoie.
Tăierile manuale care merită făcute înainte de asta:
- Trimiteți fragmente, nu fișiere. Nici atenția modelului nu este gratuită; contextul irelevant degradează măsurabil răspunsurile și costă bani.
- Eliminați jurnalele în regiunea defectuoasă. Zece mii de linii de rezultate de pornire de succes nu contribuie cu nimic la un diagnostic.
- Aruncă boilerplate repetate. Antete de licență, importuri generate, aceeași declinare a răspunderii pentru fiecare înregistrare.
- Rezumați în loc să retrimiteți. Într-o conversație lungă, înlocuirea turelor unu până la cincisprezece cu un paragraf de stat este cea mai mare economisire disponibilă.
Când intrarea cu adevărat nu se potrivește
Ferestrele de context sunt mari acum, dar „mare” este încă finită, iar o carte, un an de jurnal sau o transcriere completă va depăși unul. Împărțirea este răspunsul standard, iar acolo unde împărțiți contează: tăierea la mijlocul propoziției sau la mijlocul funcției produce bucăți pe care modelul trebuie să ghicească. The divizor prompt împarte textul în bucăți la dimensiunea pe care o alegeți, respectând limitele și numerotează părțile, astfel încât să le puteți alimenta în succesiune, cu o instrucțiune consecventă atașată la fiecare.
O notă despre unități: jetoanele nu sunt octeți. The Contor UTF-8 octeți răspunde la o întrebare diferită — cât spațiu ocupă textul pe fir sau într-o coloană a bazei de date — și cele două numere diferă brusc pentru textul non-latin, unde octeții pe caracter cresc în același timp cu caracterele pe jeton scad. Utilizați octeți pentru limitele de stocare și jetoane pentru limitele modelului și nu înlocuiți niciodată unul cu celălalt.
Un exemplu lucrat
Să presupunem că răspunzi la douăzeci de întrebări față de un document de treizeci de pagini. Treizeci de pagini înseamnă aproximativ 15.000 de cuvinte, deci aproximativ 20.000 de jetoane. Naiv, trimiți documentul cu fiecare întrebare: 20 × 20.000 = 400.000 de jetoane de intrare, plus poate 20 × 300 de jetoane de ieșire.
Puneți documentul pe primul loc și păstrați-l identic în octeți între apeluri, iar majoritatea furnizorilor oferă prefixul repetat din cache la o fracțiune din rată. Tăiați mai întâi documentul de boilerplate și baza se micșorează și ea. Grupați cinci întrebări pe apel în loc de una și trimiteți documentul de patru ori în loc de douăzeci. Aceeași sarcină, același model și un ordin de mărime între versiunea neglijentă și cea atentă - care este scopul de a număra înainte de a trimite.
Atât contorul, cât și compresorul rulează în întregime în browserul dvs.: solicitarea pe care o stabiliți prețul nu este încărcată nicăieri pentru a fi măsurată.
Creatorul lui TextArray — creează instrumente gratuite, care au prioritate confidențialitatea, care rulează în întregime în browserul tău.