Et kontekstvindu er mengden tekst en språkmodell kan ha foran seg samtidig. Alt innenfor kan den bruke. Alt utenfor finnes ikke for den.
Det føles som glemsel, men det er ikke minne som svikter. Modellen har ikke et minne å miste. Den har bare det som står i vinduet akkurat nå.
Hver gang du sender en melding, får modellen hele samtalen så langt lagt foran seg på nytt, sammen med dokumentene du har lagt ved. Den svarer ut fra det. Mellom to meldinger husker den ingenting selv. Alt den har å gå på om samtalen, er teksten som ligger på bordet.
Er bordet fullt, må noe av. Hvilket avgjør tjenesten du bruker. Ofte er det det eldste som går først, og noen tjenester lager et sammendrag av det som forsvinner. Noen har dessuten en egen minnefunksjon som legger notater inn i vinduet for deg. Da er det fortsatt vinduet som gjelder.
Tenk deg en kollega som bare kan lese det som ligger på bordet foran henne. Du kan legge mye på bordet, men ikke alt. Og det hun ikke ser, finnes ikke for henne.
Vinduet måles i tokens. Størrelsen varierer fra noen titusener til over en million, avhengig av modell og abonnement, og tallene vokser stadig. Sjekk dokumentasjonen til den du bruker.
Mer tekst koster mer, og tar lengre tid. I tillegg viser forskning at språkmodeller ofte bruker det som står først og sist i en lang tekst bedre enn det som står midt i. Nyere modeller er bedre på dette, men det er en grunn til ikke å fylle vinduet bare fordi det finnes plass.
Oppsummer alt vi har snakket om til nå i fem punkter. Ta med navn, tall, beslutninger og det vi fortsatt ikke har avklart. Skriv det slik at jeg kan lime det inn i en ny samtale og fortsette der vi slapp.
En funksjon som trimmer en samtale til en grense: de nyeste meldingene beholdes, de eldste faller ut, og det som falt ut, blir til ett sammendrag som du setter først. Tokens anslås med 3,2 tegn per token, som i verktøyet på token-siden. Sammendragsfunksjonen er en plassholder. I et ekte oppsett er den et kall til en modell, for eksempel med prompten over.
def anslag(tekst, tegn_per_token=3.2):
return round(len(tekst) / tegn_per_token)
def trim(samtale, grense, lag_sammendrag, plass_til_sammendrag=60):
"""Behold de nyeste meldingene som får plass. Resten blir til ett sammendrag."""
ledig = grense - plass_til_sammendrag
behold, brukt = [], 0
for melding in reversed(samtale): # fra nyeste og bakover
kost = anslag(melding["tekst"])
if brukt + kost > ledig:
break
behold.append(melding)
brukt += kost
behold.reverse()
while behold and behold[0]["rolle"] != "bruker": # samtalen skal ikke begynne midt i et svar
behold.pop(0)
falt_ut = samtale[: len(samtale) - len(behold)]
sammendrag = lag_sammendrag(falt_ut) if falt_ut else ""
return sammendrag, behold
def falsk_sammendrag(meldinger):
# Her ville du spurt en modell om et sammendrag. Dette er bare en plassholder.
return f"[Sammendrag av {len(meldinger)} eldre meldinger]"
samtale = [
{"rolle": "bruker", "tekst": "Hei, jeg heter Kari og planlegger en tur til Lofoten i juli."},
{"rolle": "ai", "tekst": "Hei Kari! Hvor mange dager har dere, og kjører dere bil?"},
{"rolle": "bruker", "tekst": "Seks dager, med bil, og vi er fire voksne. " * 3},
{"rolle": "ai", "tekst": "Da foreslår jeg to base-steder i stedet for å flytte hver dag. " * 3},
{"rolle": "bruker", "tekst": "Hva med regn? Hva bør vi ha med av klær og utstyr?"},
{"rolle": "ai", "tekst": "Regntøy og ullundertøy, selv i juli. " * 3},
{"rolle": "bruker", "tekst": "Hva het jeg igjen, og hvor skulle vi?"},
]
sammendrag, behold = trim(samtale, grense=150, lag_sammendrag=falsk_sammendrag)
print("Grense: 150 tokens. Hele samtalen:", sum(anslag(m["tekst"]) for m in samtale), "tokens.\n")
print("Sammendrag:", sammendrag or "(ingen)")
for m in behold:
print(f'{m["rolle"]:7} {anslag(m["tekst"]):3} tokens {m["tekst"][:50]}')Utskrift fra en kjøring:
Grense: 150 tokens. Hele samtalen: 199 tokens. Sammendrag: [Sammendrag av 4 eldre meldinger] bruker 16 tokens Hva med regn? Hva bør vi ha med av klær og utstyr? ai 35 tokens Regntøy og ullundertøy, selv i juli. Regntøy og ul bruker 12 tokens Hva het jeg igjen, og hvor skulle vi?
Utskriften viser feilen fra figuren: spørsmålet «Hva het jeg igjen» kommer etter at navnet falt ut. Plassholderen husker ikke navnet, så et ekte sammendrag må ta det med. Sammendraget tar selv plass, derfor reserverer trim plass til det. Anthropic har også en betafunksjon som gjør dette på serversiden, kalt compaction. Se dokumentasjonen.
Kjørt her med Python 3.13 og bare standardbiblioteket, 8. oktober 2026. Utskriften er limt inn slik den kom. Samtalen er konstruert, tokens er anslag og ikke telt av en tokenizer, og sammendraget er en plassholder. Ikke kjørt mot noe API.
Oppdatert oktober 2026. I figuren tar hver melding like stor plass. I virkeligheten teller tokens, så én lang melding kan skyve ut flere. Størrelsen på kontekstvinduer endres hver måned og varierer mellom modeller og abonnement, så sjekk leverandørens dokumentasjon. Forskningen om at informasjon midt i lange tekster brukes dårligere enn informasjon i starten og slutten: Liu m.fl., «Lost in the Middle: How Language Models Use Long Contexts» (2023). Nyere modeller er bedre på dette, men effekten er ikke borte.