Javob tezligini oshirish (latency)

Foydalanuvchi 10 soniya kutadi — chiqib ketadi. AI-ilovalarda tezlik sifat darajasida muhim. Model qanchalik aqlli bo'lmasin, agar javob sekin kelsa — tajriba buziladi. Bu qo'llanmada — AI javob tezligini (latency) oshirish texnikalari.
Latency nima va nimadan iborat?
Ikki asosiy ko'rsatkich:
- TTFT (Time To First Token) — birinchi token kelguncha vaqt. Foydalanuvchi "javob keldi" deb sezadi.
- TPS (Tokens Per Second) — generatsiya tezligi. Uzun javobda muhim.
Umumiy latency = TTFT + (tokenlar soni / TPS).
Texnika 1: Streaming
Eng muhim. Javob to'liq tayyor bo'lguncha kutmaslik — token-token ko'rsatish.
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=2000,
messages=[...]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True) # darhol ekranga
Foydalanuvchi 5 soniya bo'sh ekranga emas, balki darhol oqayotgan matnga qaraydi. TTFT ~0.5s — sezilgan tezlik 10x yaxshi, real vaqt o'zgarmasa ham.
Telegram botda: editMessageText bilan har 0.5–1s xabarni yangilab turish (rate limit'ga ehtiyot — 30 msg/s).
Texnika 2: Model tanlash tezlik uchun
Kichik modellar tezroq. Agar vazifa oddiy bo'lsa — Haiku/Flash TTFT va TPS bo'yicha 3–5x tez.
| Model | TTFT | TPS | Mos |
|---|---|---|---|
| Haiku 4.5 / Gemini Flash | ~0.3s | ~150 | Tez, oddiy vazifa |
| Sonnet 4.6 | ~0.6s | ~80 | Balans |
| Opus 4.7 / GPT-5 | ~1.2s | ~50 | Murakkab, tezlik 2-darajali |
Real-time chatbot → Haiku/Sonnet. Murakkab tahlil (fon rejimda) → Opus.
Texnika 3: Parallel chaqiruvlar
Ketma-ket emas, parallel. 3 ta mustaqil so'rov bo'lsa — birdaniga yuboring.
import asyncio
async def parallel_calls(queries):
tasks = [client.messages.create(...) for q in queries]
return await asyncio.gather(*tasks)
3 ta so'rov ketma-ket 6s, parallel — 2s. Lekin: rate limit (RPM/TPM) ga ehtiyot bo'ling.
Texnika 4: Prefetch va spekulyativ
Foydalanuvchi nima so'rashini taxmin qilib — oldindan boshlash.
- Prefetch: foydalanuvchi yozayotganda (typing) — ehtimoliy javobni tayyorlash
- Spekulyativ: keng tarqalgan savollar uchun — keshlangan javoblar
COMMON = {"narx": "...", "yetkazib berish": "..."}
def answer(q):
cached = semantic_match(q, COMMON) # embedding o'xshashlik
if cached and cached.score > 0.9:
return cached.answer # 0ms, LLM'siz
return llm.answer(q)
Texnika 5: Output qisqartirish
Kam token = tez javob. Modelga "qisqa javob ber" desangiz — TPS o'zgarmaydi, lekin jami vaqt kamayadi (kamroq token generatsiya).
max_tokensni realistik qo'ying (8000 emas, 500)- System promtda: "qisqa va aniq javob ber"
- Structured output — faqat kerakli maydonlar
Texnika 6: Kontekstni kamaytirish (TTFT uchun)
TTFT input hajmiga bog'liq — model avval butun kontekstni "o'qishi" kerak. 200K token input → TTFT sekin.
- Kontekst oynasini boshqarish — kam token = tez TTFT
- Prompt caching — keshlangan kontekst tezroq o'qiladi
Texnika 7: Edge va region
Server foydalanuvchiga yaqin bo'lsa — tarmoq latency kam.
- API region tanlash (mavjud bo'lsa)
- Telegram bot: webhook server yaqin regionda
- CDN statik kontent uchun
O'zbekistondan AQSh serveriga ping ~200ms. Yevropa ~80ms. Har so'rovda qo'shiladi.
O'lchash
Optimallashtirishdan oldin — o'lchang:
import time
t0 = time.time()
first_token = None
with client.messages.stream(...) as stream:
for text in stream.text_stream:
if first_token is None:
first_token = time.time() - t0 # TTFT
...
total = time.time() - t0
print(f"TTFT: {first_token:.2f}s, Total: {total:.2f}s")
LangSmith / Helicone — production'da p50/p95/p99 latency kuzatadi.
Real misol: 8s → 2s
Telegram AI bot, javob 8 soniya:
- Streaming qo'shildi: foydalanuvchi 0.6s da matnni ko'radi (sezilgan: 8s → 0.6s)
- Model: Opus → Sonnet oddiy savollar uchun (real: -2s)
- Kontekst: butun tarix → oxirgi 10 xabar + summary (TTFT: -1.5s)
- max_tokens: 4000 → 800 (jami: -2.5s)
Natija: real 8s → 2s, sezilgan — deyarli darhol.
Anti-paternlar
- Streaming'siz uzun javob: foydalanuvchi bo'sh ekranga 8s qaraydi → chiqib ketadi
- Hamma joyda eng katta model: Opus oddiy savol uchun — sekin va qimmat
- Ketma-ket mustaqil so'rovlar: parallel qilinishi mumkin bo'lganini ketma-ket yuborish
- max_tokens cheksiz: model kerak bo'lmasa ham uzun yozadi → sekin
- Latency o'lchamaslik: "sekin" — bu his. p95 raqam — bu fakt. Avval o'lchang
Keyingi qadamlar
- Kontekst oynasini boshqarish — TTFT uchun input kamaytirish
- Token va xarajatlarni kamaytirish — tezlik + narx balansi
- Claude Cowork — komandada AI — parallel agentlar