Skip to main content

Kontekst oynasini boshqarish

Kontekst oynasi

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:

QismBudjetStrategiya
System5KStatik, keshlanadi
Faktlar/holat10KEng muhim, har doim
Suhbat tarixi30KSliding + summary
Hujjatlar50KRAG, top-k
Javob8Kmax_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