AI Engineering Academy · Lekcja

Czym jest token?

Uczestnicy użyją biblioteki tiktoken do tokenizacji rzeczywistego tekstu i sprawdzą, jak słowa, znaki interpunkcyjne oraz białe znaki są mapowane na sekwencje tokenów w różnych modelach.

Lekcja 1 z 413 kroki

Czym jest token? to bezpłatna lekcja AI Engineering Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Engineering Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Engineering Academy zawiera 4 lekcji w sumie.

LLM przetwarzają tokeny, nie słowa

Gdy wysyłają Państwo tekst do LLM, model nie widzi znaków ani słów — widzi tokeny. Token to fragment tekstu, który słownik modelu mapuje na pojedynczy identyfikator liczbowy. Tokenami mogą być całe słowa, części słów, znaki interpunkcyjne lub białe znaki — zależnie od tokenizera.

Zrozumienie tokenów ma praktyczne znaczenie, ponieważ ceny OpenAI są naliczane za token, okno kontekstu jest mierzone w tokenach, a maksymalną długość odpowiedzi kontroluje max_tokens. Niespodziewane koszty i zachowanie modelu niemal zawsze wynikają z niezrozumienia sposobu tokenizacji tekstu.

Jak działa tokenizacja: BPE

Modele GPT używają tokenizacji Byte Pair Encoding (BPE). BPE zaczyna od słownika pojedynczych bajtów i iteracyjnie łączy najczęściej występujące sąsiadujące pary, aż do osiągnięcia żądanego rozmiaru słownika. Modele GPT firmy OpenAI używają słownika liczącego około 100 000 tokenów.

W rezultacie często występujące słowa stają się pojedynczymi tokenami (hello to jeden token), natomiast rzadkie lub zmyślone słowa są dzielone na wiele tokenów podsłownych (subaqueous może zostać podzielone na trzy tokeny: sub, aque, ous). Dzięki temu model może obsługiwać dowolny tekst, nawet słowa, których nigdy wcześniej nie widział, tworząc je z mniejszych, znanych fragmentów.

Zliczanie tokenów za pomocą tiktoken

OpenAI udostępnia bibliotekę tiktoken, która tokenizuje tekst lokalnie bez wykonywania wywołania API. Jest to niezbędne do zliczania tokenów przed wysłaniem żądania, szacowania kosztu i sprawdzania, czy mieścimy się w oknie kontekstu.

import tiktoken

# Get the encoding for a specific model
enc = tiktoken.encoding_for_model('gpt-4o')

text = 'Hello! How many tokens does this sentence use?'
tokens = enc.encode(text)

print(f'Text: {text}')
print(f'Token count: {len(tokens)}')
print(f'Token IDs: {tokens}')

# You can also decode tokens back to text
decoded = enc.decode(tokens)
print(f'Decoded: {decoded}')

# Inspect individual token strings
for token_id in tokens:
    token_str = enc.decode([token_id])
    print(f'  Token {token_id}: "{token_str}"')

Praktyczne liczby tokenów

Przydatna reguła orientacyjna: 1 token ≈ 4 znaki tekstu angielskiego, czyli około 0,75 słowa. Zatem 1000 tokenów to w przybliżeniu 750 słów lub 3–4 strony tekstu. Współczynnik ten różni się jednak znacząco:

  • Typowe angielskie słowa: około 1 token na słowo
  • Rzadkie terminy techniczne: 2–4 tokeny na termin
  • Liczby: często 1 cyfra na token (czyli „12345” to 5 tokenów)
  • Kod: różnie, ale Python jest zazwyczaj wydajny — około 1–2 tokenów na symbol
  • Pisma niełacińskie (chińskie, arabskie): często 1 token na znak, przez co są znacznie droższe w przeliczeniu na słowo niż język angielski

Tokenizacja różnych typów treści

Przyjrzyjmy się, jak bardzo liczba tokenów różni się między typami treści, korzystając z biblioteki tiktoken.

import tiktoken

enc = tiktoken.encoding_for_model('gpt-4o')

examples = {
    'English sentence': 'The quick brown fox jumps over the lazy dog.',
    'Number sequence': '1234567890',
    'Python code': 'def fibonacci(n):\n    if n <= 1:\n        return n\n    return fibonacci(n-1) + fibonacci(n-2)',
    'Technical jargon': 'autoregressive transformers tokenization subword BPE',
    'URL': 'https://api.openai.com/v1/chat/completions',
    'Chinese text': '大型语言模型使用令牌处理文本',
}

for label, text in examples.items():
    count = len(enc.encode(text))
    ratio = len(text) / count
    print(f'{label}: {count} tokens ({ratio:.1f} chars/token)')

Jak tokenizowane są wiadomości czatu

Łączna liczba tokenów w wywołaniu API czatu obejmuje nie tylko treść tekstową wiadomości, ale również narzut formatowania dodawany przez szablon czatu. Każda wiadomość zawiera kilka dodatkowych tokenów oznaczających rolę i separatory. Dokumentacja OpenAI określa następującą formułę:

  • Każda wiadomość dodaje około 4 tokenów narzutu formatowania
  • Każda odpowiedź zaczyna się od 3 dodatkowych tokenów inicjujących rolę asystenta

W przypadku krótkich rozmów ten narzut jest pomijalny, ale w systemach obsługujących długie rozmowy szybko się sumuje. Biblioteka tiktoken udostępnia funkcje pomocnicze umożliwiające poprawne zliczanie tokenów dla pełnej tablicy wiadomości.

import tiktoken

def count_messages_tokens(messages, model='gpt-4o'):
    enc = tiktoken.encoding_for_model(model)
    # 4 tokens per message (role + content structure), 3 for reply priming
    total = 3
    for msg in messages:
        total += 4
        for key, value in msg.items():
            total += len(enc.encode(str(value)))
    return total

messages = [
    {'role': 'system', 'content': 'You are a helpful assistant.'},
    {'role': 'user', 'content': 'What is the capital of France?'},
    {'role': 'assistant', 'content': 'The capital of France is Paris.'},
    {'role': 'user', 'content': 'And what is the population?'},
]

print(f'Total tokens: {count_messages_tokens(messages)}')

Limity tokenów według modelu

Każdy model ma maksymalne okno kontekstu mierzone w tokenach. Przykładowe limity na 2025 rok obejmują:

  • gpt-4o: kontekst o długości 128 000 tokenów, maksymalnie 16 384 tokeny wyjściowe
  • gpt-4o-mini: kontekst o długości 128 000 tokenów, maksymalnie 16 384 tokeny wyjściowe
  • Claude 3.5 Sonnet: kontekst o długości 200 000 tokenów
  • Gemini 1.5 Pro: kontekst o długości 1 000 000 tokenów

Suma tokenów wejściowych i wyjściowych nie może przekraczać rozmiaru okna kontekstu. Po jego przekroczeniu pojawi się błąd context_length_exceeded. Przed wysłaniem żądań dotyczących długich dokumentów należy zawsze sprawdzić liczbę tokenów.

Tokeny a ceny

OpenAI nalicza osobne opłaty za tokeny wejściowe (wysyłany prompt) i tokeny wyjściowe (otrzymywana odpowiedź). Tokeny wyjściowe są zazwyczaj 3–4 razy droższe od wejściowych, ponieważ wymagają sekwencyjnego generowania. Na początku 2025 roku przykładowe ceny dla gpt-4o-mini wynosiły około 0,15 USD za milion tokenów wejściowych i 0,60 USD za milion tokenów wyjściowych.

Oznacza to, że prompt zawierający 2000 tokenów i odpowiedź zawierająca 500 tokenów kosztują około ($0.15 × 2/1000 + $0.60 × 0.5/1000) = $0.00060 za żądanie. Przy 10 000 żądań dziennie daje to 6 USD dziennie — jest to wartość możliwa do opanowania, ale rośnie wraz z użyciem. Przy skali produkcyjnej coraz większe znaczenie zyskują buforowanie, wybór modeli i minimalizowanie liczby tokenów.

Zmniejszanie liczby tokenów bez utraty znaczenia

Krótsze prompty kosztują mniej i pozostawiają modelowi więcej miejsca na odpowiedź. Typowe techniki zmniejszania liczby tokenów obejmują:

  • Usuwanie zbędnych instrukcji: „Please be so kind as to...” → „Please...”
  • Skracanie przykładów: w każdym przykładzie few-shot należy używać minimalnej liczby słów
  • Skracanie nazw pól w ustrukturyzowanych promptach: należy używać „Q:” i „A:” zamiast „Question:” i „Answer:”
  • Używanie JSON zamiast prozy w przypadku ustrukturyzowanego kontekstu: JSON jest bardziej wydajny pod względem liczby tokenów niż opis tych samych danych w formie prozy

Przed i po każdej kompresji należy uruchomić tiktoken, aby sprawdzić, czy rzeczywiście udało się zaoszczędzić tokeny — niektóre „kompresje” wbrew intuicji zwiększają ich liczbę.

Tokeny specjalne i sterujące

Oprócz tokenów tekstowych słownik modelu obejmuje tokeny specjalne używane do strukturyzowania danych wejściowych. Typowe przykłady to <|endoftext|> (oznacza koniec dokumentu), <|im_start|> i <|im_end|> (separatory wiadomości czatu w formacie ChatML używanym wewnętrznie).

Podczas korzystania z API OpenAI nie trzeba zarządzać nimi bezpośrednio — zajmuje się nimi SDK. Świadomość ich istnienia wyjaśnia jednak, dlaczego żądanie z „pustymi” wiadomościami czasami nadal zużywa kilka tokenów. Tokeny specjalne są również powodem, dla którego nie należy nigdy konstruować surowych ciągów znaków ze wzorcami <|...|> w danych wejściowych użytkownika bez ich oczyszczenia, ponieważ mogłyby zakłócić formatowanie danych wejściowych modelu.

Zawsze zliczaj przed wysłaniem

Najważniejszy praktyczny wniosek z tej lekcji: przed wysłaniem każdego żądania obejmującego dynamicznie składane prompty należy zawsze zliczyć tokeny. Należy napisać niewielką funkcję pomocniczą opakowującą tiktoken i wywoływać ją w miejscu, w którym składana jest tablica wiadomości. Liczbę tokenów należy rejestrować, aby móc monitorować ją w czasie.

W systemach RAG jest to szczególnie ważne: pobrane fragmenty wstrzykiwane do promptu mogą znacznie różnić się rozmiarem, dlatego należy upewnić się, że ich łączna długość pozostaje w oknie kontekstu modelu. W lekcjach poświęconych potokom RAG zbudujemy dokładnie taki sposób składania kontekstu, który uwzględnia liczbę tokenów.

import tiktoken

def token_count(text, model='gpt-4o'):
    enc = tiktoken.encoding_for_model(model)
    return len(enc.encode(text))

def safe_assemble_prompt(system, user_content, max_tokens=120000):
    combined = system + user_content
    count = token_count(combined)
    if count > max_tokens:
        raise ValueError(
            f'Prompt too long: {count} tokens (limit {max_tokens})'
        )
    return [{'role': 'system', 'content': system},
            {'role': 'user', 'content': user_content}]

Szybki sprawdzian

Sprawdź swoją wiedzę na temat koncepcji inżynierii AI z tej lekcji.

Podsumowanie lekcji

W tej lekcji nauczyli się Państwo, że: LLM przetwarzają tekst jako tokeny, a nie słowa, korzystając z tokenizacji BPE i słownika zawierającego około 100 000 wpisów, biblioteka tiktoken pozwala lokalnie zliczać tokeny przed wywołaniami API w celu oszacowania kosztu i sprawdzenia limitów kontekstu, a także że ceny są naliczane za token, przy czym tokeny wyjściowe kosztują znacznie więcej niż tokeny wejściowe. Następnie omówimy okna kontekstu: czym są, jak ograniczają aplikację oraz jak wypadają pod tym względem różne modele.

Bezpłatny start

Ucz się Python dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Czym jest token?” jest bezpłatna?

Tak — pełny tekst „Czym jest token?” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Engineering Academy, przejdź na CoddyKit PRO. Kurs AI Engineering Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Czym jest token?”?

Uczestnicy użyją biblioteki tiktoken do tokenizacji rzeczywistego tekstu i sprawdzą, jak słowa, znaki interpunkcyjne oraz białe znaki są mapowane na sekwencje tokenów w różnych modelach. Ćwiczysz AI Engineering Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Engineering Academy?

Nie wymagamy żadnego doświadczenia. AI Engineering Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Czym jest token?”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Engineering Academy?

Tak. Każda lekcja AI Engineering Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Czym jest token?
  2. Okna kontekstu: rozmiar i znaczenie
  3. Obliczanie i prognozowanie kosztów API
  4. Strategie mieszczące się w oknie kontekstu
← Powrót do AI Engineering Academy