Kontekst oynasini boshqarish

Har bir AI-model cheklangan xotiraga ega — kontekst oynasi. Claude'da 200K token, GPT'da 128K–1M, Gemini'da 1M+. Eshitishga ko'p, lekin uzoq suhbat, katta kod-baza yoki ko'p hujjat bilan ishlaganda — bu chegara tez to'ladi. To'lganda nima bo'ladi? Model eski narsalarni "unutadi", javob sifati tushadi, xatolar paydo bo'ladi.
Bu qo'llanmada — kontekst oynasini oqilona boshqarish texnikalari.
Kontekst oynasi nima?
Kontekst oynasi — modelning bir so'rovda "ko'ra oladigan" maksimal token miqdori. Bunga kiradi:
- Tizim promti (system prompt)
- Suhbat tarixi (oldingi xabarlar)
- Qo'shilgan hujjatlar / kod
- Joriy savol
- Modelning javobi (output ham hisobga olinadi)
Oyna to'lganda — yangi token kiritish uchun eskisini chiqarish kerak. Bu yerda strategiya muhim.
"Lost in the middle" muammosi
Tadqiqotlar ko'rsatadi: modellar kontekstning boshi va oxirini yaxshi eslaydi, o'rtasini — yomon. 100K token o'rtasidagi muhim fakt — e'tibordan chetda qolishi mumkin.
Xulosa: muhim ma'lumotni boshiga yoki oxiriga qo'ying. O'rtaga — kamroq kritik narsalar.
Texnika 1: Sliding window (siljiydigan oyna)
Eng oddiy: faqat oxirgi N ta xabarni saqlash, eskisini tashlash.
MAX_MESSAGES = 20
def trim_history(messages):
# system prompt + oxirgi 20 xabar
system = messages[0]
recent = messages[-MAX_MESSAGES:]
return [system] + recent
Plus: oddiy, tez, arzon. Minus: eski muhim kontekst butunlay yo'qoladi. "Avval aytgan edingiz..." — model bilmaydi.
Qachon: qisqa muddatli suhbatlar, chatbotlar, kontekst tarixi muhim bo'lmaganda.
Texnika 2: Summarization (xulosalash)
Eski xabarlarni o'chirmaslik, balki siqib qo'yish. Eski yarmiga "qisqacha xulosa qil" promti bilan kichik LLM yuborib, natijani saqlash.
def compact_history(messages):
old = messages[1:len(messages)//2] # eski yarmi
recent = messages[len(messages)//2:] # yangi yarmi
summary = small_llm.summarize(
f"Quyidagi suhbatni 200 so'zda xulosa qil, "
f"muhim faktlar va qarorlarni saqla:\n{old}"
)
return [
messages[0], # system
{"role": "user", "content": f"[Oldingi suhbat xulosasi]: {summary}"},
*recent
]
Plus: muhim kontekst saqlanadi, token kamayadi. Minus: xulosa qo'shimcha LLM chaqiruvi (arzon — Haiku/Flash). Detallar yo'qolishi mumkin.
Bu — Claude Code va ko'p agentlar ishlatadigan "auto-compaction" mexanizmi.
Texnika 3: RAG — faqat kerakli parchani
Butun hujjatni kontekstga tiqish o'rniga — faqat savolga mos parchalarni. RAG (Retrieval Augmented Generation) yondashuvi.
50 sahifalik hujjat → faqat 3 ta eng mos paragraf kontekstga kiradi. 100K token o'rniga — 2K.
Texnika 4: Strukturalashgan kontekst
Kontekstni tartibsiz tiqish emas, balki tuzilgan holda:
[SYSTEM] Rollar va qoidalar
[CONTEXT] Faktlar, hozirgi holat (eng muhim — boshida)
[HISTORY] Suhbat xulosasi
[TASK] Joriy aniq vazifa (oxirida — model e'tibori shu yerda)
Model uchun bu — navigatsiya. Tartibsiz "devor" matndan ko'ra yaxshiroq parse qiladi.
Texnika 5: Kontekst budjetlash
Har bir qismga token limit belgilang:
| Qism | Budjet | Strategiya |
|---|---|---|
| System | 5K | Statik, keshlanadi |
| Faktlar/holat | 10K | Eng muhim, har doim |
| Suhbat tarixi | 30K | Sliding + summary |
| Hujjatlar | 50K | RAG, top-k |
| Javob | 8K | max_tokens |
Budjet oshsa — eng past prioritetli qismni siqing.
Auto-compaction qachon ishga tushadi?
Claude Code kabi agentlarda kontekst ~80% to'lganda avtomatik compaction boshlanadi: eski suhbat xulosalanadi, yangi oynaga ko'chiriladi. Foydalanuvchi buni sezmaydi — ish davom etadi.
Agar siz o'z agentingizni qursangiz — shu pattern'ni qo'llang:
def should_compact(messages, model_limit=200_000):
total = count_tokens(messages)
return total > model_limit * 0.8 # 80% chegara
Uzun kontekst vs RAG — qaysi qachon?
- Long Context: bitta katta hujjat, bir martalik tahlil. Oddiy, lekin qimmat har so'rovda.
- RAG: katta bilim bazasi, ko'p so'rov. Indekslash bir marta, keyin arzon.
- Hibrid: suhbatlar — yaqin tarix to'liq, uzoq tarix RAG orqali.
Anti-paternlar
- Hamma narsani kontekstga tiqish: "ko'proq kontekst = yaxshiroq" — noto'g'ri. Shovqin model e'tiborini susaytiradi (lost in the middle)
- Compaction'siz cheksiz suhbat: oyna to'ladi → model eski qoidalarni unutadi → xatolar
- Muhim faktni o'rtaga qo'yish: boshi/oxiri yaxshi eslanadi. Kritik narsa — chetga
- RAG'siz katta hujjat har so'rovda: 100K token har savolda — pul va tezlik yo'qotish
- Summary sifatini tekshirmaslik: yomon xulosa — yo'qolgan detal. Muhim faktlar saqlanganini nazorat qiling
Keyingi qadamlar
- Token va xarajatlarni kamaytirish — caching, routing, batch
- Agent xotirasi — RAG va xotira qatlamlari
- Javob tezligini oshirish — latency optimizatsiyasi