Czym są tokeny?
Tokeny to podstawowe elementy tekstu przetwarzane przez modele OpenAI. Mogą być tak krótkie jak pojedynczy znak albo tak długie jak całe słowo, w zależności od języka i kontekstu. Spacje, interpunkcja i części słów również wpływają na liczbę tokenów. W ten sposób API wewnętrznie dzieli tekst przed wygenerowaniem odpowiedzi.
Przydatne zasady orientacyjne dla języka angielskiego:
1 token ≈ 4 znaki
1 token ≈ ¾ słowa
100 tokenów ≈ 75 słów
1–2 zdania ≈ 30 tokenów
1 akapit ≈ 100 tokenów
~1500 słów ≈ 2048 tokenów
Tokenizacja różni się w zależności od modelu i kodowania. Użyj narzędzia Tokenizer lub tiktoken.encoding_for_model(model), aby uzyskać dokładną liczbę dla docelowego modelu.
Przykłady
Oto kilka rzeczywistych próbek tekstu wraz z ich przybliżoną liczbą tokenów:
Cytat Wayne’a Gretzky’ego „Nie trafiasz 100% strzałów, których nie oddajesz” = 11 tokenów
Karta OpenAI = 476 tokenów
Deklaracja niepodległości Stanów Zjednoczonych = 1695 tokenów
Jak oblicza się liczbę tokenów
Gdy wysyłasz tekst do API:
Tekst jest dzielony na tokeny.
Model przetwarza te tokeny.
Odpowiedź jest generowana jako sekwencja tokenów, a następnie konwertowana z powrotem na tekst.
Użycie tokenów jest śledzone w kilku kategoriach:
Tokeny wejściowe – tokeny w żądaniu.
Tokeny wyjściowe – tokeny wygenerowane w odpowiedzi.
Tokeny z pamięci podręcznej – ponownie użyte tokeny z historii rozmowy (często rozliczane według niższej stawki).
Tokeny rozumowania – w niektórych zaawansowanych modelach dodatkowe „kroki myślenia” są uwzględniane wewnętrznie przed wygenerowaniem finalnego wyniku.
Te liczby pojawiają się w metadanych odpowiedzi API i służą do rozliczeń oraz śledzenia użycia.
Aby dokładniej poznać tokenizację, możesz użyć naszego interaktywnego narzędzia Tokenizer, które pozwala obliczyć liczbę tokenów i zobaczyć, jak tekst jest dzielony na tokeny.
Alternatywnie, jeśli chcesz tokenizować tekst programowo, użyj Tiktoken — szybkiego tokenizera BPE stosowanego specjalnie w modelach OpenAI.
Limity tokenów
Każdy model ma maksymalny łączny limit tokenów (wejście + wyjście). Obecne modele o dużej pojemności obsługują w kontekście nawet setki tysięcy tokenów, choć praktyczne limity mogą się różnić w zależności od wersji modelu i Twojego poziomu użycia.
Jeśli przekroczysz limit, możesz:
Skrócić lub przeformułować polecenia.
Podzielić duży tekst na mniejsze fragmenty.
Podsumować lub wstępnie przetworzyć dane wejściowe przed ich wysłaniem.
Ceny tokenów
Użycie API jest wyceniane za token, a stawki zależą od modelu oraz od tego, czy tokeny są wejściowe, wyjściowe czy z pamięci podręcznej. Aktualne stawki znajdziesz na stronie z cennikiem OpenAI. Niektóre modele rozumujące mogą używać wewnętrznie większej liczby tokenów, ale mają na celu poprawę efektywności przez zmniejszenie liczby tokenów potrzebnych do ukończenia zadania.
Eksplorowanie tokenów
API traktuje słowa zgodnie z ich kontekstem w danych korpusu. Modele przyjmują polecenie, konwertują dane wejściowe na listę tokenów, przetwarzają polecenie i konwertują przewidywane tokeny z powrotem na słowa widoczne w odpowiedzi.
To, co dla nas może wyglądać jak dwa identyczne słowa, może zostać wygenerowane jako różne tokeny w zależności od struktury tych słów w tekście. Zobacz, jak API generuje wartości tokenów dla słowa „red” na podstawie jego kontekstu w tekście:
W pierwszym przykładzie powyżej token „2266” dla „ red” zawiera spację na końcu (uwaga: są to przykładowe identyfikatory tokenów do celów demonstracyjnych).
Token „2296” dla „ Red” (ze spacją na początku i wielką literą) różni się od tokenu „2266” dla „ red” pisanego małą literą.
Gdy „Red” jest użyte na początku zdania, wygenerowany token nie zawiera spacji na początku. Token „7738” różni się od dwóch poprzednich przykładów tego słowa.
Obserwacje:
Im bardziej prawdopodobny/częsty jest token, tym niższy numer tokenu jest mu przypisany:
Token wygenerowany dla kropki jest taki sam („13”) we wszystkich 3 zdaniach. Dzieje się tak, ponieważ kontekstowo kropka jest używana dość podobnie w całym korpusie danych.
Token wygenerowany dla „red” różni się w zależności od jego położenia w zdaniu:
Mała litera w środku zdania: „ red” — (token: „2266”)
Wielka litera w środku zdania: „ Red” — (token: „2297”)
Wielka litera na początku zdania: „Red” — (token: „7738”)
