{"id":10285,"date":"2026-08-15T01:16:55","date_gmt":"2026-08-14T23:16:55","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/narzedzia\/llm-api-token-cost-calculator\/"},"modified":"2026-08-15T01:16:55","modified_gmt":"2026-08-14T23:16:55","slug":"llm-api-token-cost-calculator","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/llm-api-token-cost-calculator\/","title":{"rendered":"Kalkulator token\u00f3w i koszt\u00f3w interfejs\u00f3w LLM"},"content":{"rendered":"<div class=\"gtm-analyser-container\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 20px;\">Rachunki za modele j\u0119zykowe zaskakuj\u0105 tylko w jedn\u0105 stron\u0119. Ceny poni\u017cej wpisuje si\u0119 r\u0119cznie, aby wyliczenie by\u0142o poprawne r\u00f3wnie\u017c po ich zmianie &#8211; liczy si\u0119 podzia\u0142 mi\u0119dzy wej\u015bcie, wej\u015bcie z pami\u0119ci podr\u0119cznej i wyj\u015bcie.<\/p>\n<div style=\"display: flex; gap: 12px; flex-wrap: wrap;\">\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"lk-eingabe\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Tokeny wej\u015bciowe na zapytanie<\/label><br \/>\n            <input type=\"text\" id=\"lk-eingabe\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"12000\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"lk-ausgabe\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Tokeny wyj\u015bciowe na zapytanie<\/label><br \/>\n            <input type=\"text\" id=\"lk-ausgabe\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"800\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"lk-anfragen\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Zapytania miesi\u0119cznie<\/label><br \/>\n            <input type=\"text\" id=\"lk-anfragen\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"30000\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"lk-cache\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Udzia\u0142 wej\u015bcia z pami\u0119ci podr\u0119cznej (%)<\/label><br \/>\n            <input type=\"text\" id=\"lk-cache\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"0\">\n        <\/div>\n<\/p><\/div>\n<div style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.85rem; margin: 18px 0 8px;\">Ceny za milion token\u00f3w, w walucie rachunku<\/div>\n<div style=\"display: flex; gap: 12px; flex-wrap: wrap;\">\n<div style=\"flex: 1; min-width: 150px;\">\n            <label for=\"lk-preis-ein\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.8rem; margin-bottom: 4px;\">Wej\u015bcie<\/label><br \/>\n            <input type=\"text\" id=\"lk-preis-ein\" class=\"form-control\" style=\"width: 100%; padding: 9px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"3.00\">\n        <\/div>\n<div style=\"flex: 1; min-width: 150px;\">\n            <label for=\"lk-preis-aus\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.8rem; margin-bottom: 4px;\">Wyj\u015bcie<\/label><br \/>\n            <input type=\"text\" id=\"lk-preis-aus\" class=\"form-control\" style=\"width: 100%; padding: 9px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"15.00\">\n        <\/div>\n<div style=\"flex: 1; min-width: 150px;\">\n            <label for=\"lk-preis-cache\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.8rem; margin-bottom: 4px;\">Wej\u015bcie z pami\u0119ci podr\u0119cznej<\/label><br \/>\n            <input type=\"text\" id=\"lk-preis-cache\" class=\"form-control\" style=\"width: 100%; padding: 9px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"0.30\">\n        <\/div>\n<div style=\"flex: 1; min-width: 150px;\">\n            <label for=\"lk-rabatt\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.8rem; margin-bottom: 4px;\">Rabat<\/label><br \/>\n            <select id=\"lk-rabatt\" class=\"form-control\" style=\"width: 100%; padding: 9px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\"><option value=\"0\">brak<\/option><option value=\"50\">przetwarzanie wsadowe, 50 procent<\/option><\/select>\n        <\/div>\n<\/p><\/div>\n<p>    <label for=\"lk-text\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin: 15px 0 5px;\">Oszacuj tokeny z tekstu (opcjonalnie)<\/label><br \/>\n    <textarea id=\"lk-text\" class=\"form-control\" style=\"width: 100%; height: 70px; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; font-size: 0.82rem; box-sizing: border-box;\" placeholder=\"Wklej prompt, aby zobaczy\u0107, ile mniej wi\u0119cej niesie token\u00f3w\"><\/textarea><\/p>\n<div style=\"display: flex; gap: 10px; flex-wrap: wrap; margin: 18px 0 0;\">\n        <button id=\"lk-btn\" class=\"button\" style=\"background: var(--accent, #7ee787); color: #0b1114; border: none; padding: 12px 24px; border-radius: 6px; font-weight: 700; cursor: pointer;\">Przelicz<\/button>\n    <\/div>\n<div id=\"lk-ergebnis\" style=\"margin-top: 22px;\"><\/div>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"Rachunki za modele j\u0119zykowe zaskakuj\u0105 tylko w jedn\u0105 stron\u0119. Ceny poni\u017cej wpisuje si\u0119 r\u0119cznie, aby wyliczenie by\u0142o poprawne r\u00f3wnie\u017c po ich zmianie - liczy si\u0119 podzia\u0142 mi\u0119dzy wej\u015bcie, wej\u015bcie z pami\u0119ci podr\u0119cznej i wyj\u015bcie.\",\"label_eingabe\":\"Tokeny wej\u015bciowe na zapytanie\",\"label_ausgabe\":\"Tokeny wyj\u015bciowe na zapytanie\",\"label_anfragen\":\"Zapytania miesi\u0119cznie\",\"label_cache\":\"Udzia\u0142 wej\u015bcia z pami\u0119ci podr\u0119cznej (%)\",\"label_preise\":\"Ceny za milion token\u00f3w, w walucie rachunku\",\"preis_ein\":\"Wej\u015bcie\",\"preis_aus\":\"Wyj\u015bcie\",\"preis_cache\":\"Wej\u015bcie z pami\u0119ci podr\u0119cznej\",\"label_rabatt\":\"Rabat\",\"rabatt_keiner\":\"brak\",\"rabatt_stapel\":\"przetwarzanie wsadowe, 50 procent\",\"label_text\":\"Oszacuj tokeny z tekstu (opcjonalnie)\",\"ph_text\":\"Wklej prompt, aby zobaczy\u0107, ile mniej wi\u0119cej niesie token\u00f3w\",\"knopf\":\"Przelicz\",\"fehler_tokens\":\"Liczby token\u00f3w musz\u0105 by\u0107 liczbami.\",\"fehler_anfragen\":\"Liczba zapyta\u0144 musi by\u0107 wi\u0119ksza od zera.\",\"fehler_cache\":\"Udzia\u0142 z pami\u0119ci podr\u0119cznej musi mie\u015bci\u0107 si\u0119 mi\u0119dzy 0 a 100.\",\"fehler_preise\":\"Ceny musz\u0105 by\u0107 liczbami.\",\"h_kosten\":\"Koszt\",\"h_aufteilung\":\"Dok\u0105d to idzie\",\"h_schaetzung\":\"Tokeny w tym tek\u015bcie\",\"h_befunde\":\"Ustalenia\",\"z_pro_anfrage\":\"Na zapytanie\",\"z_monat\":\"Miesi\u0119cznie\",\"z_jahr\":\"Rocznie\",\"z_zehnfach\":\"Przy dziesi\u0119ciokrotnym wolumenie\",\"z_anteil_ein\":\"Wej\u015bcie\",\"z_anteil_cache\":\"Wej\u015bcie z pami\u0119ci podr\u0119cznej\",\"z_anteil_aus\":\"Wyj\u015bcie\",\"z_tokens_ein\":\"Tokeny wej\u015bciowe miesi\u0119cznie\",\"z_tokens_aus\":\"Tokeny wyj\u015bciowe miesi\u0119cznie\",\"z_zeichen\":\"Znaki\",\"z_woerter\":\"S\u0142owa\",\"z_tokens_en\":\"Tokeny, tekst angielski\",\"z_tokens_de\":\"Tokeny, tekst niemiecki albo polski\",\"schaetzung_erklaerung\":\"Zgrubne oszacowanie: w angielskim oko\u0142o czterech znak\u00f3w na token, w niemieckim i polskim raczej trzy, bo d\u0142ugie z\u0142o\u017cenia i znaki diakrytyczne rozpadaj\u0105 si\u0119 na wi\u0119cej cz\u0119\u015bci. Dok\u0142adn\u0105 liczb\u0119 poda wy\u0142\u0105cznie tokenizer modelu.\",\"b_ausgabe\":\"%s procent kosztu tkwi w wyj\u015bciu. Kr\u00f3tsze odpowiedzi oszcz\u0119dzaj\u0105 tu wi\u0119cej ni\u017c kr\u00f3tszy prompt.\",\"b_eingabe\":\"%s procent kosztu tkwi w wej\u015bciu. To ta cz\u0119\u015b\u0107, kt\u00f3r\u0105 obni\u017ca pami\u0119\u0107 podr\u0119czna albo kr\u00f3tszy kontekst.\",\"b_ohne_cache\":\"Prompt tej wielko\u015bci bez pami\u0119ci podr\u0119cznej p\u0142aci za ten sam prompt systemowy przy ka\u017cdym pojedynczym zapytaniu. Tam, gdzie pocz\u0105tek pozostaje ten sam, buforowanie jest najwi\u0119ksz\u0105 pojedyncz\u0105 oszcz\u0119dno\u015bci\u0105.\",\"b_mit_cache\":\"Pami\u0119\u0107 podr\u0119czna oszcz\u0119dza %s miesi\u0119cznie wobec tego samego wolumenu w pe\u0142nej cenie wej\u015bcia.\",\"b_stapel\":\"Rabat za przetwarzanie wsadowe przychodzi z op\u00f3\u017anieniem: to, co musi odpowiedzie\u0107 w obr\u0119bie zapytania, nie mo\u017ce z niego skorzysta\u0107.\",\"b_grosses_fenster\":\"Powy\u017cej stu tysi\u0119cy token\u00f3w wej\u015bciowych na zapytanie kontekst wykonuje prac\u0119 wyszukiwania. Zwykle taniej jest najpierw wyszuka\u0107 i przekaza\u0107 tylko to, co potrzebne.\",\"b_preise\":\"Liczone jest wed\u0142ug wpisanych tu cen. Zmieniaj\u0105 si\u0119 one, a wyliczenie jest aktualne tylko na tyle, na ile te cztery pola.\",\"b_wiederholung\":\"Nieudane zapytanie, kt\u00f3re jest ponawiane, liczy si\u0119 dwa razy. Przy procencie ponowie\u0144 to procent na rachunku.\"};<\/p>\n<p>    \/\/ --- reine Rechenlogik ---<\/p>\n<p>    function zahl(wert) {\n        const roh = String(wert === undefined || wert === null ? '' : wert).trim().replace(\/\\s\/g, '').replace(',', '.');\n        if (roh === '') { return NaN; }\n        if (!\/^[0-9]+(\\.[0-9]+)?$\/.test(roh)) { return NaN; }\n        return parseFloat(roh);\n    }<\/p>\n<p>    function runde(wert, stellen) {\n        const faktor = Math.pow(10, stellen === undefined ? 2 : stellen);\n        return Math.round(wert * faktor) \/ faktor;\n    }<\/p>\n<p>    \/**\n     * Grobe Schaetzung: im Englischen kommen rund vier Zeichen auf ein Token,\n     * im Deutschen und Polnischen wegen der langen Woerter und der\n     * Sonderzeichen eher drei.\n     *\/\n    function tokenSchaetzen(text) {\n        const roh = String(text === undefined || text === null ? '' : text);\n        const zeichen = roh.length;\n        if (zeichen === 0) { return { zeichen: 0, woerter: 0, englisch: 0, deutsch: 0 }; }\n        const woerter = roh.trim() === '' ? 0 : roh.trim().split(\/\\s+\/).length;\n        return {\n            zeichen: zeichen,\n            woerter: woerter,\n            englisch: Math.ceil(zeichen \/ 4),\n            deutsch: Math.ceil(zeichen \/ 3)\n        };\n    }<\/p>\n<p>    function rechnen(e) {\n        const ergebnis = { ok: false, fehler: '', befunde: [] };\n        const eingabe = e || {};<\/p>\n<p>        const ein = zahl(eingabe.eingabe);\n        const aus = zahl(eingabe.ausgabe);\n        const anfragen = zahl(eingabe.anfragen);\n        const cacheAnteil = zahl(eingabe.cache);\n        const preisEin = zahl(eingabe.preisEin);\n        const preisAus = zahl(eingabe.preisAus);\n        const preisCache = zahl(eingabe.preisCache);\n        const rabatt = zahl(eingabe.rabatt);<\/p>\n<p>        if (!isFinite(ein) || !isFinite(aus)) { ergebnis.fehler = T.fehler_tokens; return ergebnis; }\n        if (!isFinite(anfragen) || anfragen <= 0) { ergebnis.fehler = T.fehler_anfragen; return ergebnis; }\n        if (!isFinite(cacheAnteil) || cacheAnteil < 0 || cacheAnteil > 100) { ergebnis.fehler = T.fehler_cache; return ergebnis; }\n        if (!isFinite(preisEin) || !isFinite(preisAus) || !isFinite(preisCache)) { ergebnis.fehler = T.fehler_preise; return ergebnis; }<\/p>\n<p>        const faktor = 1 - (isFinite(rabatt) ? rabatt : 0) \/ 100;\n        const einCache = ein * (cacheAnteil \/ 100);\n        const einVoll = ein - einCache;<\/p>\n<p>        const proAnfrage = (einVoll \/ 1000000 * preisEin + einCache \/ 1000000 * preisCache + aus \/ 1000000 * preisAus) * faktor;\n        const monat = proAnfrage * anfragen;<\/p>\n<p>        ergebnis.ok = true;\n        ergebnis.tokensEin = ein * anfragen;\n        ergebnis.tokensAus = aus * anfragen;\n        ergebnis.proAnfrage = runde(proAnfrage, 6);\n        ergebnis.monat = runde(monat, 2);\n        ergebnis.jahr = runde(monat * 12, 2);\n        ergebnis.anteilEin = runde(einVoll \/ 1000000 * preisEin * faktor * anfragen, 2);\n        ergebnis.anteilCache = runde(einCache \/ 1000000 * preisCache * faktor * anfragen, 2);\n        ergebnis.anteilAus = runde(aus \/ 1000000 * preisAus * faktor * anfragen, 2);\n        ergebnis.ohneCache = runde((ein \/ 1000000 * preisEin + aus \/ 1000000 * preisAus) * faktor * anfragen, 2);\n        ergebnis.ersparnisCache = runde(ergebnis.ohneCache - ergebnis.monat, 2);\n        ergebnis.zehnfach = runde(monat * 10, 2);\n        ergebnis.text = tokenSchaetzen(eingabe.text);<\/p>\n<p>        \/\/ --- Befunde ---\n        const anteilAusgabe = ergebnis.monat > 0 ? ergebnis.anteilAus \/ ergebnis.monat * 100 : 0;\n        if (anteilAusgabe > 50) {\n            ergebnis.befunde.push({ schwer: false, text: T.b_ausgabe.replace('%s', String(runde(anteilAusgabe, 0))) });\n        } else if (ein > 0) {\n            ergebnis.befunde.push({ schwer: false, text: T.b_eingabe.replace('%s', String(runde(100 - anteilAusgabe, 0))) });\n        }\n        if (cacheAnteil === 0 && ein >= 2000) {\n            ergebnis.befunde.push({ schwer: true, text: T.b_ohne_cache });\n        }\n        if (cacheAnteil > 0) {\n            ergebnis.befunde.push({ schwer: false, text: T.b_mit_cache.replace('%s', String(ergebnis.ersparnisCache)) });\n        }\n        if (rabatt > 0) {\n            ergebnis.befunde.push({ schwer: false, text: T.b_stapel });\n        }\n        if (ein > 100000) {\n            ergebnis.befunde.push({ schwer: true, text: T.b_grosses_fenster });\n        }\n        ergebnis.befunde.push({ schwer: false, text: T.b_preise });\n        ergebnis.befunde.push({ schwer: false, text: T.b_wiederholung });<\/p>\n<p>        return ergebnis;\n    }<\/p>\n<p>    if (typeof window !== 'undefined') {\n        window.LW_TEST = window.LW_TEST || {};\n        window.LW_TEST.LK = { rechnen: rechnen, tokenSchaetzen: tokenSchaetzen, zahl: zahl };\n    }<\/p>\n<p>    \/\/ --- Anbindung an das Dokument ---<\/p>\n<p>    const btn = document.getElementById('lk-btn');\n    const out = document.getElementById('lk-ergebnis');\n    if (!btn || !out) { return; }<\/p>\n<p>    const KASTEN = 'background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-radius: 6px; padding: 14px; margin-bottom: 18px;';\n    const UEBERSCHRIFT = 'color: var(--text-primary, #e8e8ee); font-weight: 700; margin-bottom: 8px;';<\/p>\n<p>    function el(tag, css, inhalt) {\n        const knoten = document.createElement(tag);\n        if (css) { knoten.setAttribute('style', css); }\n        if (inhalt !== undefined && inhalt !== null) { knoten.textContent = inhalt; }\n        return knoten;\n    }<\/p>\n<p>    function wert(id) {\n        const knoten = document.getElementById(id);\n        return knoten ? knoten.value : '';\n    }<\/p>\n<p>    function zeile(kasten, name, inhalt, hervor) {\n        const z = el('div', 'display: flex; justify-content: space-between; gap: 14px; flex-wrap: wrap; padding: 5px 0;');\n        z.appendChild(el('span', 'color: var(--text-secondary, #a0a0b0);', name));\n        z.appendChild(el('span', 'color: ' + (hervor ? 'var(--accent, #7ee787)' : 'var(--text-primary, #e8e8ee)') + '; font-family: monospace;', inhalt));\n        kasten.appendChild(z);\n    }<\/p>\n<p>    btn.addEventListener('click', function () {\n        const erg = rechnen({\n            eingabe: wert('lk-eingabe'), ausgabe: wert('lk-ausgabe'), anfragen: wert('lk-anfragen'),\n            cache: wert('lk-cache'), preisEin: wert('lk-preis-ein'), preisAus: wert('lk-preis-aus'),\n            preisCache: wert('lk-preis-cache'), rabatt: wert('lk-rabatt'), text: wert('lk-text')\n        });<\/p>\n<p>        out.textContent = '';\n        if (!erg.ok) {\n            out.appendChild(el('div', 'background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-left: 3px solid #ffb86c; color: var(--text-secondary, #a0a0b0); padding: 14px; border-radius: 6px;', erg.fehler));\n            return;\n        }<\/p>\n<p>        out.appendChild(el('div', UEBERSCHRIFT, T.h_kosten));\n        const kasten = el('div', KASTEN);\n        zeile(kasten, T.z_pro_anfrage, erg.proAnfrage.toFixed(6));\n        zeile(kasten, T.z_monat, erg.monat.toFixed(2), true);\n        zeile(kasten, T.z_jahr, erg.jahr.toFixed(2));\n        zeile(kasten, T.z_zehnfach, erg.zehnfach.toFixed(2));\n        out.appendChild(kasten);<\/p>\n<p>        out.appendChild(el('div', UEBERSCHRIFT, T.h_aufteilung));\n        const teile = el('div', KASTEN);\n        zeile(teile, T.z_anteil_ein, erg.anteilEin.toFixed(2));\n        if (erg.anteilCache > 0) { zeile(teile, T.z_anteil_cache, erg.anteilCache.toFixed(2)); }\n        zeile(teile, T.z_anteil_aus, erg.anteilAus.toFixed(2));\n        zeile(teile, T.z_tokens_ein, String(erg.tokensEin));\n        zeile(teile, T.z_tokens_aus, String(erg.tokensAus));\n        out.appendChild(teile);<\/p>\n<p>        if (erg.text.zeichen > 0) {\n            out.appendChild(el('div', UEBERSCHRIFT, T.h_schaetzung));\n            const schaetzung = el('div', KASTEN);\n            zeile(schaetzung, T.z_zeichen, String(erg.text.zeichen));\n            zeile(schaetzung, T.z_woerter, String(erg.text.woerter));\n            zeile(schaetzung, T.z_tokens_en, String(erg.text.englisch));\n            zeile(schaetzung, T.z_tokens_de, String(erg.text.deutsch));\n            schaetzung.appendChild(el('div', 'color: var(--text-secondary, #a0a0b0); font-size: 0.85rem; padding-top: 8px;', T.schaetzung_erklaerung));\n            out.appendChild(schaetzung);\n        }<\/p>\n<p>        out.appendChild(el('div', UEBERSCHRIFT, T.h_befunde));\n        const befunde = el('div', KASTEN);\n        erg.befunde.forEach(function (b) {\n            const z = el('div', 'display: flex; gap: 10px; padding: 5px 0;');\n            z.appendChild(el('span', 'color: ' + (b.schwer ? '#ffb86c' : 'var(--text-secondary, #a0a0b0)') + '; font-family: monospace;', b.schwer ? '!' : '-'));\n            z.appendChild(el('span', 'color: var(--text-secondary, #a0a0b0); font-size: 0.9rem; line-height: 1.5;', b.text));\n            befunde.appendChild(z);\n        });\n        out.appendChild(befunde);\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wylicza, ile model j\u0119zykowy kosztuje na zapytanie, miesi\u0119cznie i przy dziesi\u0119ciokrotnym wolumenie, rozdziela wej\u015bcie, wej\u015bcie z pami\u0119ci podr\u0119cznej oraz wyj\u015bcie i szacuje tokeny z tekstu.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9284,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92061,92103,92346],"class_list":["post-10285","page","type-page","status-publish","hentry","tag-automation-pl","tag-google-cloud-pl","tag-llm-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kalkulator token\u00f3w i koszt\u00f3w interfejs\u00f3w LLM - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/llm-api-token-cost-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kalkulator token\u00f3w i koszt\u00f3w interfejs\u00f3w LLM - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Wylicza, ile model j\u0119zykowy kosztuje na zapytanie, miesi\u0119cznie i przy dziesi\u0119ciokrotnym wolumenie, rozdziela wej\u015bcie, wej\u015bcie z pami\u0119ci podr\u0119cznej oraz wyj\u015bcie i szacuje tokeny z tekstu.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/llm-api-token-cost-calculator\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/llm-api-token-cost-calculator\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/llm-api-token-cost-calculator\\\/\",\"name\":\"Kalkulator token\u00f3w i koszt\u00f3w interfejs\u00f3w LLM - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-08-14T23:16:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/llm-api-token-cost-calculator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/llm-api-token-cost-calculator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/llm-api-token-cost-calculator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/toolbox-3\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Kalkulator token\u00f3w i koszt\u00f3w interfejs\u00f3w LLM\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kalkulator token\u00f3w i koszt\u00f3w interfejs\u00f3w LLM - Lukas Wojcik - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/llm-api-token-cost-calculator\/","og_locale":"en_US","og_type":"article","og_title":"Kalkulator token\u00f3w i koszt\u00f3w interfejs\u00f3w LLM - Lukas Wojcik - Blog","og_description":"Wylicza, ile model j\u0119zykowy kosztuje na zapytanie, miesi\u0119cznie i przy dziesi\u0119ciokrotnym wolumenie, rozdziela wej\u015bcie, wej\u015bcie z pami\u0119ci podr\u0119cznej oraz wyj\u015bcie i szacuje tokeny z tekstu.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/llm-api-token-cost-calculator\/","og_site_name":"Lukas Wojcik - Blog","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/llm-api-token-cost-calculator\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/llm-api-token-cost-calculator\/","name":"Kalkulator token\u00f3w i koszt\u00f3w interfejs\u00f3w LLM - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-08-14T23:16:55+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/llm-api-token-cost-calculator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/llm-api-token-cost-calculator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/llm-api-token-cost-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/toolbox-3\/"},{"@type":"ListItem","position":3,"name":"Kalkulator token\u00f3w i koszt\u00f3w interfejs\u00f3w LLM"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10285"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10285\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9284"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10285"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}