Wklejasz sto stron dokumentacji do promptu i zadajesz proste pytanie. Odpowiedź jest błędna. Albo model ignoruje regułę formatowania, którą podałeś na początku. Dałeś mu wszystko. Powinno zadziałać. Ale nie zadziałało.

To pułapka kontekstu. Większość programistów zakłada, że dostarczenie sztucznej inteligencji większej ilości informacji automatycznie przynosi lepsze rezultaty. Często jest wręcz przeciwnie. Budowanie niezawodnych aplikacji AI wymaga zrozumienia trzech kluczowych mechanizmów: jak modele liczą tekst, ile mogą pomieścić naraz oraz co dzieje się z informacjami po zakończeniu konwersacji.

Tokeny: Prawdziwa waluta

Token to najmniejsza jednostka, którą przetwarza model językowy. Może to być pojedynczy znak, fragment słowa lub całe powszechne słowo. Słowo „purchase” często dzieli się na dwa tokeny, podczas gdy krótkie słowo, takie jak „cat”, pozostaje w całości. Interpunkcja i spacje również zużywają tokeny. Kod jest szczególnie „głodny”. Blok kodu Python z zagnieżdżonymi wcięciami i znakami specjalnymi może zwiększyć liczbę tokenów do trzech lub czterech razy więcej, niż można by przypuszczać na pierwszy rzut oka.

Dlaczego twórcy powinni o to dbać? Ceny API są naliczane za token. Tak samo jest w przypadku czasu przetwarzania. Prompt, który wygląda na dwie strony tekstu, może kosztować grosze lub dolary, w zależności od tego, co jest w środku. Co gorsza, tokeny sumują się po obu stronach wymiany. Płacisz za każdy token w swoim prompcie i za każdy token wygenerowany przez model. Niekontrolowany wzrost kontekstu po cichu obniża marże.

Okno kontekstowe to tablica

Okno kontekstowe wyznacza górną granicę tego, co model może zobaczyć za jednym razem. Wyobraź sobie tablicę wiszącą w małym pokoju. Możesz ją zapełnić instrukcjami systemowymi, pytaniami użytkownika, pobranymi dokumentami i wcześniejszą konwersacją. Ale tablica nigdy nie rośnie. Gdy pojawia się nowy tekst, stary tekst „spada” poza krawędź.

Ma to znaczenie, ponieważ modele nie ostrzegają, gdy zaczynają odrzucać treść. Jeśli Twoja instrukcja systemowa znajduje się na początku długiej konwersacji, a Ty stale dopisujesz kolejne wiadomości, instrukcja ta w końcu zostanie przesunięta poza pole widzenia. Model może wrócić do domyślnego zachowania, zignorować reguły formatowania lub zaprzeczyć wcześniejszym wytycznym. Różne modele oferują różne limity – niektóre obsługują kilka tysięcy tokenów, inne setki tysięcy – ale mechanika pozostaje identyczna. Wejście i wyjście dzielą ten sam budżet. Model, który generuje odpowiedź o długości dwóch tysięcy tokenów, ma o dwa tysiące tokenów mniej dostępnych na zapamiętanie tego, co mu powiedziałeś.

Pamięć to obejście, a nie funkcja

W wagach modelu podczas wnioskowania (inference) nie ma trwałej pamięci. Żadnej. Gdy zamkniesz kartę i wrócisz jutro, model Cię nie rozpozna. Każde wywołanie API to „zimny start”.

To, co sprawia wrażenie pamięci, to jedynie sprytna księgowość na warstwie aplikacji. Frontend przechowuje Twoje wiadomości w bazie danych. Gdy wysyłasz nowe zapytanie, oprogramowanie pobiera odpowiednią historię, łączy ją w nowy prompt i wysyła cały pakiet do modelu. Sam model pozostaje nieświadomy.

To rozróżnienie jest kluczowe dla zespołów produktowych. Jeśli polegasz na modelu w kwestii „pamiętania” preferencji użytkownika, budujesz na piasku. Musisz samodzielnie zbudować zarządzanie stanem. Zdecyduj, co cache'ować. Zdecyduj, jak to odświeżać. I pamiętaj, że każdy bajt historii, który wysyłasz ponownie, zużywa miejsce na Twojej tablicy.

Gdy kontekst staje się szumem

Zalewanie promptu przynosi przewidywalnie negatywne skutki.

Szum zabija sygnał. Jeśli wrzucisz cały kod źródłowy, aby zapytać o jeden błąd, model napotka problem „igły w stogu siana”. Może odnieść się do niewłaściwego pliku, zasugerować zmiany w martwym kodzie lub wygenerować ogólnikową odpowiedź, ponieważ nie może