Gespreksgeschiedenis
Een lang gesprek loopt tegen een harde grens aan: het contextvenster van het model. Alles op deze pagina bestaat vanwege die grens, en het interessante deel is wat er wordt weggegooid, wat er wordt bewaard en wat er kan worden teruggehaald.
Vier manieren om context terug te winnen
Sectie getiteld “Vier manieren om context terug te winnen”Het zijn niet zozeer alternatieven als wel een ladder, goedkoopste eerst.
| Mechanisme | Kosten | Bewaart | Verliest |
|---|---|---|---|
| Weglating | Niets | Elk woord van het verhaal | Rustige oudere toolresultaten |
| Afbeeldingen afstoten | Niets | De tekst eromheen | Oude schermafbeeldingen |
| Momentopnames | Niets | Elk woord, als pixels | Leesbaarheid voor een model zonder visie |
| Samenvatting | Eén modelaanroep | Een verhaal | De details die hij niet koos |
Weglating en afstoten draaien eerst omdat ze gratis zijn en verliesvrij op de manier die ertoe doet: ze gooien bulk weg die toch niemand opnieuw zou lezen.
Waarom samenvatten het laatste redmiddel is
Sectie getiteld “Waarom samenvatten het laatste redmiddel is”Een samenvatting is de enige van de vier die een modelaanroep kost en de enige die voor jou bepaalt wat belangrijk was. Beide zijn echte kosten. De aanroep is de interessantste, vanwege het moment waarop hij plaatsvindt.
Compressie draait meestal vóór de grens, op basis van een drempelwaarde. Maar het draait ook reactief, nadat de aanbieder zelf een verzoek als te groot afwijst — de heuristische schatting had minder geteld dan wat de aanbieder werkelijk had gemeten. In die situatie moet een compactor die samenvat een verzoek doen om de context te verkleinen, en het verzoek dat hij doet is juist het verzoek dat zojuist is overgelopen.
Momentopnames
Sectie getiteld “Momentopnames”Compressie met momentopnames rendert weggegooide geschiedenis op dichte pagina’s vol pixelglyphs en geeft ze terug als afbeeldingen.
Het uitgangspunt is een eigenaardigheid in de facturatie: een visiemodel rekent voor een afbeelding een vast tarief of een tarief evenredig met de oppervlakte, dat niets te maken heeft met het aantal tekens erin. Twaalfduizend tekens weggegooid gesprek kosten twaalfduizend tekens aan teksttokens. Dezelfde tekens op één pagina gerenderd kosten één afbeelding.
Wat het de moeite waard maakt in plaats van alleen maar slim, is dat het geen modelaanroep, geen sleutel en geen netwerk nodig heeft. Het is de enige strategie die altijd beschikbaar is tijdens het herstel van een overloop.
De vorm van de reconstructie is een letterlijke kop, een als afbeelding weergegeven midden en een letterlijke staart. De kop is de taak en de beperkingen waarnaar alles stroomafwaarts terugverwijst; de staart is waar het werk zich nu bevindt. Het midden wordt het minst herlezen en kost het meest.
Momentopnames worden bij elke doorgang opnieuw gerenderd uit bewaarde brontekst, nooit uit de pixels van de vorige doorgang. Het opnieuw afbeelden van een afbeelding tast de glyphs aan met één generatie per compressie, totdat niets ze nog kan lezen.
Waarvan een run werkelijk wordt hervat
Sectie getiteld “Waarvan een run werkelijk wordt hervat”Historisch begon elke harness-run met een lege geschiedenis en bouwde de continuïteit opnieuw op vanuit een <context>-blok in de prompt — een samenvatting van het gesprek in plaats van het gesprek zelf. Daaruit volgden drie dingen:
- Hervatten was opnieuw vertellen. Het model zag nooit zijn eigen eerdere redeneringen of de werkelijke bytes die zijn tools teruggaven, alleen een beschrijving ervan.
- Rewind stierf met het proces. Een
checkpointis een index in de live berichtenlijst, dus een herstart verloor elk label dat het model had gezet. - Opnieuw proberen kon “niets om opnieuw te proberen” niet onderscheiden van “niets geladen”. Na een herstart is de mislukte beurt hoe dan ook verdwenen uit de actieve toestand.
Alle drie worden opgelost door het transcript te bewaren. Het wordt bij elke beurtgrens opgeslagen en nooit midden in een beurt: een geschiedenis die tussen een toolaanroep en het resultaat wordt vastgelegd, is er een die geen enkele aanbieder accepteert, dus een crash op dat moment herstelt de beurt ervoor in plaats van een halve beurt die niet kan worden afgespeeld.
Een hervatte run wordt getrimd tot zijn nieuwste berichten, met de knip op een grens die geen verweesd toolresultaat is — een resultaat waarvan de aanroep is weggeknipt, is een verzoek dat aanbieders zonder meer afwijzen, en een transcript dat niet kan worden verzonden is erger dan een kort transcript.
De sessieboom
Sectie getiteld “De sessieboom”Elk bericht legt vast waarop het voortbouwt, en elk gesprek noemt zijn huidige takpunt. Die ene beslissing is de hele functie.
Vertakken schrijft niets. Het verplaatst de wijzer. Het pad dat je verliet staat er nog, dus terugschakelen is weer een verplaatsing van de wijzer in plaats van een herstel — en een prompt aanpassen om die opnieuw uit te voeren kost je niet langer het antwoord waarmee je vergeleek.
Zonder dat moet elke vorm van teruggaan berichten verbergen of verwijderen, en verbergen is een leugen waar de volgende lezer niet doorheen prikt.
Tak versus aftakking
Sectie getiteld “Tak versus aftakking”| Tak | Aftakking | |
|---|---|---|
| Wat er gebeurt | De wijzer verschuift | Het pad wordt gekopieerd |
| Waar het heen gaat | Hetzelfde gesprek | Een nieuw gesprek |
| Kosten | Niets | Eén kopie van de tak |
Een aftakking kopieert met nieuwe id’s in plaats van rijen te delen. Twee gesprekken die rijen delen, zouden elkaars latere berichten tonen, en dat is het enige dat een aftakking niet mag doen.
Rewind lift mee op dezelfde wijzer
Sectie getiteld “Rewind lift mee op dezelfde wijzer”Het paar checkpoint / rewind binnen een run markeert een schone beurtgrens en keert na een verkenning daarheen terug, met behoud van een digest. Omdat checkpoints samen met het transcript worden bewaard, komt een label dat het model vóór een herstart zette nog steeds terecht waar het was gezet. Een checkpoint waarvan het doel het trimmen niet heeft overleefd, wordt verwijderd, niet geklemd — terugspoelen “naar het label” en ergens anders uitkomen is precies de fout die een label moet voorkomen.
Gerelateerd
Sectie getiteld “Gerelateerd”- Een gesprek vertakken — de boomnavigator, aftakken en exporteren
- Toolcontext en promptcaching — de andere helft van wat een contextvenster vult
- Slash-commando’s —
/compact,/shake,/context,/tree