## Tokeny

*Jak model czyta i przewiduje*

*Ostatnia zmiana: 28 września 2026*

Model nie widzi liter ani słów, tylko ciąg liczb. Każda liczba to numer tokena, czyli kawałka tekstu ze stałego słownika. W tokenach liczy się cenę, limit kontekstu i prędkość, a sposób cięcia tłumaczy kilka typowych błędów modeli.

**Po ludzku:** Model czyta jak ktoś, kto zna sylaby i całe popularne słowa, ale nigdy nie widział pojedynczych liter. Znane słowa łyka w całości, rzadkie składa z kawałków.

*Interaktywny widżet na stronie: Wybierz tokenizer i przykład albo wpisz własny tekst. Zobacz, gdzie wypadają granice tokenów i ile znaków przypada na jeden token.*

### Jak powstaje słownik tokenów

- Słownik buduje algorytm BPE (byte-pair encoding). Startuje od 256 możliwych bajtów i na dużym korpusie w kółko scala najczęstszą sąsiednią parę w nowy token, aż dojdzie do zadanego rozmiaru. Częste słowa stają się jednym tokenem, rzadkie składają się z kawałków.
- Przed BPE wyrażenie regularne dzieli tekst na słowa, liczby i interpunkcję, więc scalanie nie przekracza tych granic. Spacja przykleja się do następnego słowa. W tokenizerze GPT-4o „strawberry” poprzedzone spacją to jeden token, a bez spacji, np. na początku tekstu, trzy: st|raw|berry (wpisz samo słowo w widżet).
- BPE działa na bajtach UTF-8, więc każdy tekst da się zakodować i nie ma tokena „nieznane słowo”. Rzadkie połączenia rozpadają się na bajty: w GPT-4o słowo „Źdźbło” ze spacją przed nim to sześć tokenów, a spacja z „Ź” dzieli się na dwa kawałki, z których żaden nie jest całym znakiem. Tokenizery oparte na SentencePiece osiągają to samo przez byte fallback.
- Rozmiar słownika to decyzja projektowa: GPT-4 ma ok. 100 tys. tokenów, GPT-4o ok. 200 tys., Llama 3 128 tys. (100 tys. z tokenizera OpenAI plus 28 tys. dla języków innych niż angielski), Gemma 3 262 tys. Większy słownik daje krótsze sekwencje, ale większą tabelę embeddingów i warstwę wyjściową.
- Słownik ma też tokeny specjalne: koniec tekstu, znaczniki ról, wywołanie narzędzia. To osobne numery, których w dobrze zbudowanym API nie da się wpisać zwykłym tekstem. Rozmowa to jeden ciąg tokenów z takimi znacznikami (zobacz „Jak model widzi czat”).

### Skutki widoczne w odpowiedziach

- Litery: w pytaniu „Ile r jest w strawberry?” model widzi słowo „strawberry” jako jeden numer zamiast dziesięciu liter, a pisownię musi pamiętać z treningu. Liczenie liter, rymy, odwracanie słów i anagramy są przez to zawodne. Modele rozumujące radzą sobie lepiej, bo najpierw wypisują słowo litera po literze i każda litera staje się osobnym tokenem.
- Liczby: GPT-4 i GPT-4o tną cyfry na grupy po trzy od lewej (1234567 to 123|456|7), Gemma 3 po jednej cyfrze. Przy grupach pozycje dziesiętne w dwóch liczbach się nie pokrywają, więc arytmetyka „w pamięci” jest zawodna. Do liczenia daje się narzędzie albo interpreter kodu.
- Prompt zakończony spacją psuje granicę tokena. W danych treningowych spacja prawie zawsze należy do następnego słowa, więc model dostaje rzadki układ i odpowiada gorzej. Nie kończ spacją promptu w trybie uzupełniania (completion) ani początku odpowiedzi podanego z góry (prefill). Dotyczy to głównie self-hostingu: w API czatu odpowiedź zaczyna się w nowej turze, a obecne modele Claude w ogóle odrzucają prefill (stan na wrzesień 2026).

### Koszt i limity

- W tokenach liczy się cenę, context window, `max_tokens`, limity zapytań na minutę i prędkość generowania. Polski tekst zużywa ich więcej: na całym tekście tego przewodnika polska wersja ma ok. 1,4 raza więcej tokenów niż angielska w tokenizerze GPT-4o (3,2 wobec 4,5 znaku na token) i ok. 1,6 raza więcej w Llama 3 (liczby pokazuje widżet). Ta sama treść jest więc droższa, szybciej zapełnia okno i dłużej się generuje.
- Tokenizer należy do modelu. Ten sam tekst to inna liczba tokenów u różnych dostawców, a czasem między wersjami jednego modelu: według Anthropic nowy tokenizer Claude Opus 4.7 (kwiecień 2026) zamienia ten sam tekst nawet na ok. 35% więcej tokenów niż Opus 4.6, przy tej samej cenie za token. Cen za milion tokenów nie porównuj wprost. Policz tokeny na własnych danych tokenizerem modelu albo endpointem dostawcy, np. `count_tokens` w API Claude.

### Sprawdź się

**Pytanie:** Jak działa tokenizacja BPE i jak wpływa na koszt i zachowanie modelu?

**Krótka odpowiedź:** Tokenizer tnie tekst na kawałki ze stałego słownika i zamienia je na liczby. BPE buduje słownik od 256 bajtów, scalając najczęstsze sąsiednie pary, aż dojdzie do zadanego rozmiaru, zwykle 100–260 tys. Dzięki bajtom każdy tekst da się zakodować. Częste słowa są jednym tokenem, rzadkie i nieangielskie rozpadają się na kawałki, więc polski tekst zajmuje ok. 1,3–1,6 raza więcej tokenów niż angielski, zależnie od tokenizera. Model zwykle nie widzi pojedynczych liter, a w wielu tokenizerach także cyfr, stąd błędy przy liczeniu liter i arytmetyce. Większy słownik skraca sekwencje, ale powiększa tabelę embeddingów i warstwę wyjściową.

### Pytania pogłębiające

- **Czemu nie tokenizować po znakach albo po całych słowach?** Znaki dają kilka razy dłuższe sekwencje, a koszt attention i KV cache’u rośnie z długością. Słowa dają gigantyczny słownik, a literówka, nowe słowo czy nazwa własna nie mają numeru. BPE na bajtach łączy krótkie sekwencje z pełnym pokryciem.
- **Co zmienia większy słownik?** Krótsze sekwencje, więc tańszy kontekst i szybsze generowanie, zwłaszcza w językach innych niż angielski. Kosztem jest większa tabela embeddingów i warstwa wyjściowa (w Llama 3 70B po ok. 1 mld parametrów) oraz rzadkie tokeny, dla których w treningu było mało przykładów.
- **Czy da się podmienić tokenizer w gotowym modelu?** Praktycznie nie. Tabela embeddingów i warstwa wyjściowa są przypisane do konkretnych numerów, więc nowy słownik wymaga co najmniej dotrenowania tych warstw, a zwykle dalszego pretrainingu. Dodanie kilku tokenów specjalnych przy fine-tuningu jest możliwe, ale ich embeddingi trzeba wytrenować (zobacz „Fine-tuning i LoRA”).
- **Jak oszacujesz koszt nowej funkcji przed wdrożeniem?** Na próbce prawdziwych danych: wejście i definicje narzędzi tokenizerem danego modelu albo endpointem dostawcy do liczenia tokenów, a wyjście z pola usage kilku prawdziwych wywołań. Modele rozumujące liczą tokeny myślenia jako wyjście, nawet gdy ich nie widać, a żaden tokenizer nie policzy ich z góry (zobacz „Modele rozumujące”). Powtarzany prefiks licz po cenie cache’u (zobacz „Prompt caching”), całość razy liczba wywołań. Cen za milion tokenów u różnych dostawców nie porównuje się wprost, bo ten sam tekst to u nich różna liczba tokenów.

### Źródła

- [Sennrich i in.: Neural Machine Translation of Rare Words with Subword Units (BPE, ACL 2016)](https://arxiv.org/abs/1508.07909)
- [Anthropic: Introducing Claude Opus 4.7 (nowy tokenizer, kwiecień 2026)](https://www.anthropic.com/news/claude-opus-4-7)
- [Andrej Karpathy: Let’s build the GPT Tokenizer](https://www.youtube.com/watch?v=zduSFxRajkE)
- [Tiktokenizer: prawdziwe tokenizery w przeglądarce](https://tiktokenizer.vercel.app/)

Strona interaktywna: https://howaiworks.dev/pl/tokeny/
