Strona główna → Pomoc

context_length_exceeded – co naprawdę wlicza się do limitu

Wejście i żądane wyjście muszą razem zmieścić się w oknie. Cała historia wiadomości liczy się przy każdym wywołaniu, a max_tokens jest rezerwowane z góry – więc żądanie może paść na samej rezerwacji, nawet gdy sam prompt by się zmieścił.

Co widzisz

Dlaczego tak się dzieje

API czatu są bezstanowe. Każda tura wysyła całą historię od nowa, więc rozmowa trwająca godzinę nie wysyła jednej wiadomości, tylko wszystkie. Dlatego kod, który rano działał, po południu zaczyna padać, choć nic się nie zmieniło.

max_tokens to rezerwacja, a nie limit tego, co dostaniesz. Prośba o 8000 tokenów wyjścia zabiera 8000 z budżetu, zanim prompt zostanie w ogóle zmierzony.

Prompty systemowe, definicje narzędzi i przykłady few-shot zwykle nie rzucają się w oczy w diffie, ale jak najbardziej liczą się do sumy. Duży schemat narzędzi może zajmować tysiące tokenów w każdym wywołaniu.

Jak to naprawić

  1. Obniż max_tokens do tego, czego naprawdę potrzebujeszTo najszybsza naprawa i ta, którą ludzie pomijają. Jeśli odpowiedzi mają dwa akapity, rezerwacja 8000 tokenów nic nie daje, a zabiera miejsce.
  2. Przycinaj historię, nie bieżącą wiadomośćZostaw prompt systemowy, kilka ostatnich tur i krótkie podsumowanie wcześniejszych. Usunięcie najstarszych tur odzyskuje znacznie więcej niż skracanie tego, o co pytasz teraz.
  3. Policz definicje narzędziZserializuj schemat narzędzi i zmierz go. Usunięcie nieużywanych narzędzi często zwalnia więcej miejsca niż cokolwiek, co zrobisz z rozmową.
Okna kontekstu różnią się między modelami, a strona każdego modelu w APICLAN podaje okno obok ceny. Przycinanie historii od razu obniża też rachunek, bo tokeny wejściowe są naliczane w każdej turze.

Powiązane

Unexpected token '<' przy wywołaniu API zgodnego z OpenAI401 invalid API key – gdy klucz wygląda dobrze, a i tak nie działa

Ostatnio sprawdzono 2026-10-01. Napisane na podstawie problemów zdiagnozowanych na działającej bramce zgodnej z OpenAI, a nie zebrane z innych stron.