Historia rozmów
Długa rozmowa rozbija się o twardą ścianę: okno kontekstu modelu. Wszystko na tej stronie istnieje z powodu tej ściany, a najciekawsze jest to, co się wyrzuca, co się zachowuje i co da się odzyskać.
Cztery sposoby na odzyskanie kontekstu
Dział zatytułowany „Cztery sposoby na odzyskanie kontekstu”To raczej drabina niż alternatywy — od najtańszego stopnia w górę.
| Mechanizm | Koszt | Zachowuje | Traci |
|---|---|---|---|
| Pomijanie | Nic | Każde słowo narracji | Niewyróżniające się starsze wyniki narzędzi |
| Odrzucanie obrazów | Nic | Otaczający je tekst | Stare zrzuty ekranu |
| Migawki | Nic | Każde słowo, jako piksele | Czytelność dla modelu bez obsługi obrazu |
| Podsumowanie | Jedno wywołanie modelu | Narrację | Szczegóły, których nie wybrało |
Pomijanie i odrzucanie obrazów działają jako pierwsze, bo są darmowe i bezstratne w tym sensie, który ma znaczenie: usuwają masę, której i tak nikt nie zamierzał czytać ponownie.
Dlaczego podsumowywanie jest ostatecznością
Dział zatytułowany „Dlaczego podsumowywanie jest ostatecznością”Podsumowanie jako jedyne z czterech zużywa wywołanie modelu i jako jedyne decyduje za Ciebie, co było ważne. Jedno i drugie to realny koszt. Ciekawsze jest to wywołanie — ze względu na moment, w którym następuje.
Kompresja zwykle działa przed ścianą, po przekroczeniu progu. Uruchamia się jednak także reaktywnie, gdy sam dostawca odrzuci żądanie jako zbyt duże — heurystyczne oszacowanie zaniżyło to, co dostawca faktycznie zmierzył. W takiej sytuacji mechanizm kompresji podsumowującej musi wysłać żądanie, żeby zmniejszyć kontekst, a wysyła dokładnie to, które właśnie się nie zmieściło.
Migawki
Dział zatytułowany „Migawki”Kompresja w migawki renderuje odrzuconą historię na gęstych stronach glifów pikselowych i oddaje je z powrotem jako obrazy.
U podstaw leży osobliwość rozliczeń: model obsługujący obrazy nalicza opłatę za obraz według stawki ryczałtowej albo proporcjonalnej do powierzchni, która nie ma nic wspólnego z liczbą znaków w tym obrazie. Dwanaście tysięcy znaków odrzuconej rozmowy kosztuje tyle tokenów tekstu, ile odpowiada dwunastu tysiącom znaków. Te same znaki wyrenderowane na jednej stronie kosztują jeden obraz.
To, co czyni migawki wartościowymi, a nie tylko sprytnymi, to fakt, że nie potrzebują żadnego wywołania modelu, żadnego klucza ani sieci. To jedyna strategia zawsze dostępna przy odzyskiwaniu po przepełnieniu.
Kształt rekonstrukcji to dosłowny początek, środek w postaci obrazu i dosłowny koniec. Początek to zadanie i ograniczenia, do których odwołuje się wszystko dalej; koniec to miejsce, w którym praca aktualnie się znajduje. Środek czyta się ponownie najrzadziej, a kosztuje najwięcej.
Migawki są renderowane od nowa z zachowanego tekstu źródłowego przy każdym przebiegu, nigdy z pikseli poprzedniego przebiegu. Obrazowanie obrazu degraduje glify o jedno pokolenie przy każdej kompresji, aż nie da się ich odczytać.
Od czego uruchomienie faktycznie wznawia
Dział zatytułowany „Od czego uruchomienie faktycznie wznawia”Kiedyś każde uruchomienie harnessa zaczynało od pustej historii i odtwarzało ciągłość z bloku <context> w prompcie — podsumowania rozmowy, a nie samej rozmowy. Wynikały z tego trzy rzeczy:
- Wznowienie było opowiedzeniem od nowa. Model nigdy nie widział własnego wcześniejszego rozumowania ani rzeczywistych bajtów zwróconych przez narzędzia, tylko ich opis.
- Cofanie ginęło razem z procesem.
checkpointto indeks w bieżącej liście wiadomości, więc restart gubił każdą etykietę ustawioną przez model. - Ponowienie nie odróżniało „nie ma czego ponawiać” od „nic się nie wczytało”. Po restarcie nieudana tura i tak znika ze stanu bieżącego.
Wszystkie trzy problemy rozwiązuje utrwalanie transkryptu. Zapisuje się go przy każdej granicy tury, nigdy w połowie tury: historia uchwycona między wywołaniem narzędzia a jego wynikiem to historia, której żaden dostawca nie przyjmie, więc awaria w tym momencie przywraca turę sprzed, a nie połowę tury, której nie da się odtworzyć.
Wznawiane uruchomienie jest przycinane do najnowszych wiadomości, z cięciem na granicy, która nie jest osieroconym wynikiem narzędzia — wynik, którego wywołanie zostało odcięte, to żądanie, które dostawcy odrzucają od razu, a transkrypt, którego nie da się wysłać, jest gorszy niż krótki.
Drzewo sesji
Dział zatytułowany „Drzewo sesji”Każda wiadomość zapisuje, po której się kontynuuje, a każda rozmowa wskazuje swój bieżący wierzchołek gałęzi. Ta jedna decyzja to cała funkcja.
Rozgałęzianie nic nie zapisuje. Przesuwa tylko wskaźnik. Ścieżka, którą opuściłeś, wciąż tam jest, więc powrót to kolejne przesunięcie wskaźnika, a nie przywracanie — a edycja promptu i ponowne jego uruchomienie przestaje kosztować Cię odpowiedź, którą porównywałeś.
Bez tego każda forma cofania się musi ukrywać albo usuwać wiadomości, a ukrywanie to kłamstwo, którego następny czytelnik nie zdoła przejrzeć.
Gałąź a rozwidlenie
Dział zatytułowany „Gałąź a rozwidlenie”| Gałąź | Rozwidlenie | |
|---|---|---|
| Co się dzieje | Wskaźnik się przesuwa | Ścieżka zostaje skopiowana |
| Dokąd trafia | Ta sama rozmowa | Nowa rozmowa |
| Koszt | Nic | Jedna kopia gałęzi |
Rozwidlenie kopiuje z nowymi identyfikatorami, a nie współdzieli wierszy. Dwie rozmowy współdzielące wiersze pokazywałyby sobie nawzajem późniejsze wiadomości, a tego rozwidlenie nie może robić.
Cofanie korzysta z tego samego wskaźnika
Dział zatytułowany „Cofanie korzysta z tego samego wskaźnika”Para checkpoint / rewind w trakcie uruchomienia oznacza czystą granicę tury i wraca do niej po eksploracji, zachowując skrót. Ponieważ punkty kontrolne są utrwalane razem z transkryptem, etykieta ustawiona przez model przed restartem wciąż trafia tam, gdzie została ustawiona. Punkt kontrolny, którego cel nie przetrwał przycinania, zostaje odrzucony, a nie dociągnięty do najbliższej granicy — cofnięcie „do etykiety” i wylądowanie gdzie indziej to dokładnie ta awaria, której etykieta ma zapobiegać.
Powiązane
Dział zatytułowany „Powiązane”- Rozgałęź rozmowę — nawigator drzewa, rozwidlanie i eksport
- Kontekst narzędzi i cache promptów — druga połowa tego, co zapełnia okno kontekstu
- Polecenia slash —
/compact,/shake,/context,/tree