Token va xarajatlarni kamaytirish

AI-agentlar bilan ishlashda eng kutilmagan summa — kontekst tokenlari. Bitta savol yuborganda model 200K tokenni o'qisa — har so'rovga 0.5–1 USD yondi. 100 ta avtomatik so'rov — 50–100 USD kuniga. Yiliga — minglab. Lekin bir nechta texnikalar bilan bu summa 5–10 baravar tushadi, sifatni yo'qotmasdan.
Ushbu qo'llanmada amaliy optimallashtirish usullari.
Tokenlar qaerga ketadi?
Tipik xarajat strukturasi:
- Kontekst (60–80%): tizim promti, suhbat tarixi, qo'shilgan hujjatlar. Eng katta qism.
- Chiqish (10–20%): modelning javobi. Bu narx 3–5 baravar yuqori, ammo hajmi kichik.
- Takror so'rovlar (5–15%): bir xil savol bir nechta marta yuborilganda.
Optimallashtirish — bu uch qatlamga ta'sir qilish.
Texnika 1: Prompt caching
Eng kuchli usul. Anthropic va OpenAI ikkalasida ham mavjud, ammo turlicha ishlaydi.
Anthropic Claude
Statik kontekstni keshlash — yoziladi bir marta, o'qiladi keyingi 5 daqiqada (yoki 1 soatda — cache_control parametriga qarab).
from anthropic import Anthropic
client = Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6-20251022",
max_tokens=1024,
system=[
{
"type": "text",
"text": LONG_SYSTEM_PROMPT, # 10K+ tokens
"cache_control": {"type": "ephemeral"}
}
],
messages=[{"role": "user", "content": user_query}],
)
- Cache hit narxi: 10% (90% chegirma)
- Cache write narxi: 125% (birinchi marta yozish biroz qimmatroq)
- TTL: 5 daqiqa standart, yoki 1 soat (boshqa narxda)
Qachon ishlatish: stabil kontekst (qoidalar, hujjatlar, kod fayllari). Bir suhbatda 5–50 so'rov bo'lsa — keshning foydasi yorqin.
OpenAI
OpenAI keshini avtomatik qiladi (1024+ token bo'lsa). Foydalanuvchining hech narsa qilishi shart emas, ammo nazorat ham yo'q.
Cache hit qanday ko'paytiriladi?
- Stabil qism boshida: tizim promti, qo'llanma, kontekst — birinchi. O'zgaruvchan qism (joriy savol) — oxirda.
- Strukturani saqlang: agar har so'rovda kontekst tartibini o'zgartirsangiz — kesh tushadi.
- Cache TTL ni eslab tutmaslik: 5 daqiqada-bir cache wash bo'ladi. Bot batch bilan ishlasa — ketma-ket so'rovlar bitta keshga tushadi.
Texnika 2: Kontekstni qisqartirish
Har bir tokendan foyda chiqarish:
- Faqat zarur narsani: 50 sahifalik PDF emas, faqat 2–3 mos parchasini. RAG yordamida.
- Eski xabarlarni qisqartirish: suhbat 20+ xabardan o'tsa — eski yarmiga "qisqacha xulosa" promt-i bilan kichik LLM (Haiku, Gemini Flash) orqali siqib qo'ying.
- Filler so'zlarni olib tashlash: "iltimos", "rahmat", "agar mumkin bo'lsa" — modellarga nima farq qiladi? Ishonchli kompaniyada — 10% tejash.
- Kontekstdan keraksiz hujjatlarni o'chirish: agent har sessiyada
package.jsonni o'qish shart emas, agar topshiriq frontend bilan bog'liq bo'lmasa.
Texnika 3: Model tanlovi (model routing)
Hamma vazifa Opus / GPT-5 ga arziydi. Ko'pi Haiku / Gemini Flash bilan hal bo'ladi.
| Vazifa | Mos model | Narx (1M token) |
|---|---|---|
| Kreativ yozish, arxitektura | Opus 4.7 / GPT-5 | $15+ in / $75+ out |
| Asosiy kod yozish, mulohaza | Sonnet 4.6 | $3 / $15 |
| Klassifikatsiya, parsing | Haiku 4.5 / Gemini Flash | $0.50 / $2.50 |
| Embedding | text-embedding-3-small | $0.02 |
| OCR, oddiy ekstratsiya | gpt-4o-mini | $0.15 / $0.60 |
Router pattern: birinchi qadam — kichik model "savol qaysi kategoriya?" deb tasniflaydi. Kategoriya bo'yicha — to'g'ri model chaqiriladi.
Router'ning o'zi 0.001 USD bo'ladi, ammo 70% so'rovlar arzon Haiku ga ketadi — umumiy narx 3–5 baravar tushadi.
Texnika 4: Batch API
Anthropic va OpenAI Batch API taklif qiladi: nodir vaqt javob (12–24 soat) — narx 50% past.
Qachon foydali:
- Tunda 10000 sahifani tahlil qilish
- Vaqt sezgir bo'lmagan kontent generatsiyasi
- Hisobot tayyorlash, har oygi ishlar
Qachon foydali emas:
- Foydalanuvchi javobni hozir kutadi
- Real-time chatbot
Texnika 5: Strukturalashgan chiqish (Structured Output)
JSON formatda javob talab qilish — model bir nechta gapni emas, faqat kerakli maydonlarni qaytaradi.
response = client.messages.create(
model="claude-haiku-4-5",
tools=[{
"name": "extract_info",
"description": "Hujjatdan kerakli ma'lumotni ajratib oling",
"input_schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"amount": {"type": "number"},
"category": {"type": "string", "enum": ["A", "B", "C"]}
}
}
}],
tool_choice={"type": "tool", "name": "extract_info"},
messages=[{"role": "user", "content": invoice_text}]
)
Output tokenlar — 5 baravar kam, parse qilish — kerak emas.
Texnika 6: Streaming va early-stop
Agar javob uzun bo'lsa va siz birinchi qatorlarda kerakli javobni topganingizda — stream ulanishni uzing. Faqat o'qilgan tokenlar uchun to'lash.
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=2000,
messages=[...]
) as stream:
for text in stream.text_stream:
if "FINAL_ANSWER" in text:
stream.close()
break
Texnika 7: Memo va keshlangan funksiya chaqiriqlari
Klassik Python functools.lru_cache ni LLM-chaqiriqlari uchun ham qo'llash mumkin:
from functools import lru_cache
import hashlib
@lru_cache(maxsize=1000)
def classify_intent(text: str) -> str:
# bir xil text-ga bir xil javob — ikkinchi marta API ga bormaymiz
return llm.classify(text)
Yoki Redis bilan — sessiyalar orasida ham saqlanadi.
Tahlil va kuzatuv
Optimallashtirishni ko'r-ko'rona qilish — kuchsiz. Avval o'lchang:
- OpenRouter / Helicone / LangSmith — har bir so'rov uchun token va USD ko'rsatkichlari.
- Anthropic Console — modellar bo'yicha kunlik sarflar.
- Top-5 eng qimmat so'rovlar — odatda shu yerdan optimallashtirishni boshlash kerak.
Misol: 80% tejash bir kunda
Real keys: 200 USD/kun Claude API sarfi.
- Prompt caching statik tizim promtga: -50% → 100 USD
- Router: 60% so'rovlar Sonnet o'rniga Haiku ga: -25% → 75 USD
- Kontekst qisqartirish: kichkina chunk-larga bo'lish: -10% → 67 USD
- Batch API uchun analitik joblar: -5% → 64 USD
- Memo eski intent-classifierlar: -2% → 62 USD
Natija: 200 → 62 USD, 70% tejash. Sifat — sezilarli pasaymaydi (yaxshi konfiguratsiyada).
Anti-paternlar
- Eng arzon model — har joyga: Haiku TPM tezroq, ammo murakkab mulohazada — yetishmaydi. Kontekst-sezgirligi past. Natijada — qayta urinish va davriy katta narxlar.
- Cache tashkil etmaslik: keshsiz har so'rov to'liq narxda. 5 daqiqali TTL'da hatto 2-soniyalik suhbatda foyda bor.
- Output tokenlarni qisqartirmaslik: javob 5000 tokenli markdown — ko'pincha 200 tokenli JSON bilan bir xil foyda beradi.
- Real-time o'rniga batch ishlatmaslik: tungi vazifani kunduzi haqiqiy vaqtda ishlatish — pul tushiradi.
Keyingi qadamlar
- Agent xotirasi — kontekstni qatlamlarga bo'lish
- MCP serverlarini tanlash — keraksiz vositalardan saqlanish