LLM үшін кешігу бюджеті: сұрауда уақыт қайда кетеді
LLM үшін кешігу бюджетін қалай есептеу керегін қарастырамыз: желі, маршрутизация, модель және post-processing, осылайша тар жерлерді сезіммен емес, дерекпен таба аласыз.

Жалпы жауап уақыты неліктен аз нәрсе түсіндіреді
Жалпы жауап уақыты тек бір нәрсені ғана айтады: пайдаланушы ұзақ күтті ме, әлде жауапты тез алды ма. Себебін табу үшін бұл аздық етеді. Бір ғана сан желіні, маршрутизацияны, модельдің жұмысын және мәтін жасалғаннан кейінгі барлық қадамды араластырып жібереді.
Сондықтан p95 бірдей болған екі жүйе мүлде бөлек жерде әлсіз болуы мүмкін. Бір жағдайда желі әр шақыруда жүздеген миллисекунд жоғалтады, шлюз провайдерді таңдауға уақыт жұмсайды, ал модель қалыпты жауап береді. Екінші жағдайда желі таза, маршрутизация дерлік лезде, бірақ модель сұрауды ұзақ өңдейді немесе тым көп токен шығарады. Графикте бұл бірдей p95. Команда үшін бұл екі бөлек міндет.
Мәселе қымбатқа түседі, егер команда дұрыс емес кезеңді жөндесе. Әзірлеушілер промптты қысқартып, post-processing-ті қайта жазуы мүмкін, ал шын кешігу сыртқы провайдерге жасалған қайталама сұрауларда жасырынып тұр. Немесе керісінше: бәрі желіге қарап тұрады, ал секундтар модельдің ұзақ шығаруына кетеді. Талдауға кеткен уақыт өседі, бірақ пайдаланушы айырмашылықты сезбейді.
Пайдаланушы сіздің ішкі кезеңдеріңізді мүлде көрмейді. Ол кідірісті тұтастай сезеді. Егер чат-ассистент 7 секунд үнсіз қалса, адамға сұрау қай жерде тұрып қалғаны маңызды емес. Команда үшін бұл маңызды, өйткені әр учаске бөлек және әртүрлі бағамен жөнделеді.
Жалпы метрика көбіне төрт жағдайда шатастырады:
- орташа уақыт қалыпты көрінеді, бірақ ұзын құйрық диалогты бұзады;
- p95 өсті, бірақ мәселе тек кейбір модельдерде пайда болды;
- бір провайдер баяулап тұр, ал жалпы дашборд оны жалпы көлемнің ішінде жасырып қояды;
- post-processing бір секунд жұтып қояды, ал бәрі LLM API-ды кінәлайды.
Сондықтан кешігу бюджетін жалпы саннан емес, кезеңдер картасынан бастаған дұрыс. Әуелі сұрауды бөліктерге бөледі, содан кейін қай бөлік басқаларға қарағанда көбірек құбылатынын қарайды. Бұл әсіресе сұраулар бір OpenAI-совместимый шлюз арқылы өтсе пайдалы: кешігу модельге дейін де, одан кейін де пайда болуы мүмкін.
Егер уақытты қадамдарға бөлмесеңіз, p95 әдемі, бірақ іс жүзінде пайдасы аз сан болып қалады. Ол симптомды көрсетеді, бірақ ақау орнын емес.
Сұрау неден тұрады
LLM-ге бір сұрау жасау көп жағдайда бір ғана әрекет емес. Батырманы басқаннан дайын жауап шыққанға дейін бірнеше кезең өтеді, ал әрқайсысы өз үлесін алады. Тек жалпы санға қарасаңыз, кешігу туралы әңгіме тез арада жорамалға айналады.
Әдетте уақыт төрт бөлікке бөлінеді: желі, маршрутизация, модель және post-processing.
Желі — сұраудың клиенттен API-ға дейінгі және жауаптың кері қайтатын жолы. Оны жиі елемейді. Егер streaming қосулы болса, желі жауаптың басталуына ғана емес, токендердің қаншалықты бірқалыпты келуіне де әсер етеді. Үлкен промпт, баяу мобильді байланыс, артық TLS-handshake немесе алыс регион бірнеше жүз миллисекундты оңай қосады.
Маршрутизация — бұл тек модельді аты бойынша таңдау емес. Осы кезеңде жүйе ережелерді тексеруі, лимиттер қолдануы, провайдер таңдауі, сұрауды дұрыс маршрутпен жіберуі, кезекті күтуі немесе қате болғаннан кейін ретрай жасауы мүмкін. Кейде бұл бөлік ондаған миллисекунд алады. Кейде — егер тізбек тым күрделі болса, бір секундқа созылады.
Модель екі түрлі кешігу қосады. Біріншісі — бірінші токенге дейінгі уақыт, яғни TTFT. Екіншісі — генерацияның өзі. Пайдаланушы үшін бұл екі бөлек сезім. Жылдам басталып, бірақ ұзақ созылған құйрық алғашқы сөзге дейінгі ұзақ үнсіздіктей ауыр сезілмейді.
Post-processing — модель жауабынан кейінгі барлық нәрсе: парсинг, фильтрлер, JSON валидациясы, лог жазу, маскалау, форматтау және нәтижені клиентке жіберу. Бұл бөлікті жиі ұсақ нәрсе деп есептейді, сосын артық бір секунд қайдан пайда болды деп таң қалады.
Кешігу бюджетін қадамдап қалай жинау керек
Тек толық жауап уақытына қарасаңыз, санды көресіз, бірақ себебін емес. Бөлшектеу тек әр кезең бөлек өлшенгенде ғана пайдалы.
Барлық сұрауға бірдей жерде таймстемп қоюдан бастаңыз. Әдетте төрт белгі жеткілікті:
- сұрау backend-ке кірді;
- код тексерулерді, PII маскировкасын аяқтап, шақыруды шлюзге немесе провайдерге жіберді;
- модельден бірінші токен келді;
- соңғы токен келіп, код post-processing-ті аяқтады.
Осы нүктелерден интервалдарды оңай жинауға болады. Біріншісі модельге дейін қанша уақыт кететінін көрсетеді. Екіншісі TTFT береді. Үшіншісі генерацияның өзін көрсетеді. Соңғысы post-processing, форматтау, тексеру және жауапты клиентке жіберуге қатысты.
Орташа мән көбіне артық жұбатады. Әр кезең үшін p50, p95 және p99 өлшеңіз. p50 кәдімгі күнді көрсетеді, p95 пайдаланушы сезетін нәрсеге жақынырақ, ал p99 сирек, бірақ ауыр секірістерді тез ашады.
TTFT мен толық жауап уақытын бөлек есептеңіз. Чат үшін бұл екі бөлек метрика. Егер бірінші токен 700 мс-та келсе, толық жауап 6 секунд жиналса да, пайдаланушы жылдам басталғанын көреді. Егер TTFT кенет 800 мс-тан 3 секундқа өссе, ұзындықты емес, кезекті, желіні немесе маршрутизацияны іздеңіз.
Салыстыру өтірік шықпау үшін шарттарды бірдей ұстаңыз. Бірдей промпттар жиынын қолданыңыз, шығыс токендерінің лимитін бекітіңіз, модельді, температураны және tool calling-ті сериялар арасында өзгертпеңіз. Cold request-терді де әдеттегі сұраулардан бөлек есептеген дұрыс.
Егер чат-ассистент баяу жауап берсе, бірден модельді кінәламаңыз. Кейде желі 200 мс жейді, маршрутизация тағы 150 мс алады, ал жауаптан кейінгі екі қосымша тексеріс бүтін бір секунд қосады. Мұндай бөлініс не нәрсені бірінші жөндеу керегін бірден көрсетеді.
Егер команда AI Router қолданса, белгілерді әрі қосымшада, әрі api.airouter.kz шақыру шекарасында қою ыңғайлы. Сонда өз кодыңыздағы кешігу мен провайдерге дейінгі жолдағы және модель жағындағы кешігуді ажырату оңай болады.
Желі жағынан нені есептеу керек
Желіні бірінші болып кінәлайды, бірақ ол сирек толық кінәлі болады. Егер бірінші токенге дейін 3 секунд көрсеңіз, бұл аз. Клиенттен шлюзге дейін қанша уақыт кеткенін, ал шлюзден модель провайдеріне дейін қанша кеткенін бөлу керек.
LLM-фича үшін бұл екі бөлек жол. Біріншісі сіздің қосымшаға, мобильді желіге, офис интернетіне, DNS пен TLS-ке тәуелді. Екіншісі шлюздің қай жерде тұрғанына, провайдердің қай регионда жауап беретініне және сыртқы API-дың дәл сол сәттегі жұмысына тәуелді.
Егер команда бір шлюз арқылы жұмыс істесе, бұл кезеңдерді бір санға қоспаңыз. Әйтпесе апталап провайдерді "емдеп" жүріп, шын мәнінде клиент каналы немесе әр шақырудағы қайталанатын DNS сұрауы баяулатып тұрған болуы мүмкін.
Логқа қандай метрикаларды жазу керек
Әр сұрауды кейін бөліктерге ажыратуға болатындай етіп сақтаңыз. Әдетте бес өріс жеткілікті:
- клиенттен шлюздің алғашқы байт жауабына дейінгі уақыт;
- шлюзден провайдерге барып-қайту уақыты;
- жаңа TCP/TLS-коннект болды ма, әлде қосылым қайта қолданылды ма;
- кіріс сұрау денесінің өлшемі және жауаптың шамамен өлшемі;
- ретрай саны, таймаут себебі және шақыру регионы.
Осының өзі-ақ ауытқуларды көруге жетеді. Мысалы, клиенттен шлюзге дейін 80 мс кетіп, ал шлюзден провайдерге дейінгі уақыт 300 мс-тан 1,8 секундқа секірсе, мәселені фронтендтен іздеудің қажеті жоқ.
Cold және warm connection-дарды бөлек салыстырыңыз. Жаңа коннект әрдайым баяуырақ: DNS, TCP, TLS, кейде жолдағы proxy да бар. Бір сериядағы сұрауларда айырмашылық айқын болуы мүмкін. Егер warm сұрау 200 мс болса, ал cold 700 мс болса, сіз "баяу модельді" емес, keep-alive жоқтығының құнын таптыңыз.
Таймауттар мен ретрайлар да картинаны бұрмалайды. Бір автоматты ретрай артық бір секунд қоса алады, ал жалпы жауап уақытында бұл провайдер жай ғана "ойланып қалғандай" көрінеді. Қайсысы қайта шақырып жатқанын тексеріңіз: клиенттік кітапхана ма, backend пе, әлде шлюз бе.
Және сұрау денесінің өлшемін ұмытпаңыз. Үлкен system prompt, жүздеген килобайт диалог тарихы және тіркемелер инференске дейін-ақ жіберуді баяулатады.
Өлшемдерді региондар мен тәулік уақыты бойынша бөлу пайдалы. Бір маршрут таңертең тыныш болып, кешке едәуір нашарлауы мүмкін. Қазақстан мен Орталық Азия командалары үшін бұл әсіресе маңызды: сыртқы провайдерге баратын жол орташа күндік саннан көрінгеннен әлдеқайда қатты өзгеруі мүмкін.
Егер осындай талдаудан кейін желі 150-250 мс берсе, одан бір секунд сығып алуға тырыспаңыз. Әрі қарай маршрутизация мен модельді қараңыз.
Модель секундтарды қайда жейді
Модельде баяу жауаптың бір ғана себебі сирек болады. Әдетте уақыт төрт жерге кетеді: ұзын кіріс, тым жомарт шығыс лимиті, провайдердегі кезек күту және токендерді баяу генерациялау.
Ұзын system prompt зиянсыз сияқты көрінеді, өйткені оны бір-ақ рет жазады. Бірақ модель оны әр сұрауда оқиды. Егер system бөлігінде 2-3 бет ереже, мысал және тыйым болса, алғашқы токенге дейін-ақ жүздеген миллисекунд қосып аласыз. Кейде одан да көп, егер модель үлкен болып, сұраулар көп болса.
Бұл қарапайым мысалда жақсы көрінеді. Қолдау чат-ассистентіне 2500 токендік system prompt берілді: сөйлесу мәнері, қайтару саясаты, жауап үлгілері, эскалациялар, заңдық ескертпелер. Кейін команда оны 900 токенге дейін қысқартып, сирек керек ережелерді бөлек тармаққа шығарып, сапаны жоғалтпай айқын жылдамырақ жауап алды.
Сондықтан кіріс пен шығыс токендерін бөлек санаған дұрыс. Бұл екі сан көбіне абстрактылы "модель баяу" дегеннен әлдеқайда көп нәрсе түсіндіреді.
Үлкен max_tokens те картинаны бұзады. Пайдаланушыға көбіне 120 токен жеткілікті болса да, 2000 лимит жауаптың ұзын құйрығын рұқсат етілген сценарийге айналдырады. Кейбір модельдер бұған байланысты сұрауды аяқтауды ұзағырақ созады, ал команда кейін тек орташа уақытты қарап, неге құйрық сонша ауыр екенін түсінбей қалады.
Streaming жылдамдық сезімін өзгертеді, бірақ толық жауап уақытын әрдайым емдей бермейді. Пайдаланушы бірінші токенді ертерек көреді де, бәрі тез болды деп ойлайды. Іс жүзінде модель құйрықты сол баяу қарқынмен жаза беруі мүмкін. Чат үшін бұл жиі қалыпты ымыра. Толық JSON керек backend міндеттерінде пайдасы аз.
TTFT, толық жауап уақыты, кіріс және шығыс токендер саны, сондай-ақ провайдердегі кезек күту уақытын бөлек қараған пайдалы. Кезек әсіресе пік сағаттарда картинаны бұзады. Модельдің өзі жылдам болуы мүмкін, бірақ сұрау генерация басталғанға дейін 700-900 мс тұрып қалады. Rate limits те ұқсас әсер береді: сұраулардың бір бөлігі баяулайды, бір бөлігі қайталама әрекетке кетеді, ал графикте бұл "болжап болмайтын модель" сияқты көрінеді.
Егер сіз шлюз арқылы провайдер мен модельді кодты қайта жазбай ауыстыра алсаңыз, айырмашылықты бірдей промптпен және бірдей max_tokens арқылы көру оңайырақ. Мұндай салыстыруда орташа мәннен гөрі TTFT, генерация жылдамдығы және кезек бойынша бөлініс маңызды. Сонда бір секундтың қайда жоғалып жатқаны көрінеді.
Ең жиі қателік қарапайым: команда желі мен post-processing-ті қысқартады, ал мәселе 1500 артық system токенінде немесе әлдеқашан қайта қаралмаған шығыс лимитінде жасырынып тұрады.
Чат-ассистентпен қарапайым сценарий
Банк мобильді қосымшадағы клиенттерге арналған чат-ассистент іске қосты. Команда жауапты шамамен 2 секундта күтті, бірақ логтарда орташа уақыт 4,2 секундқа өсті. Пайдаланушы тек кідірісті көреді, сондықтан әзірлеушілер алдымен бәрін кезекпен қысқарта бастады.
Сұрауды кезеңдерге бөлгенде, сурет қарапайым болды. Желі шамамен 250 мс алды, маршрутизация 120 мс, модельдің өзі 3,4 с, ал post-processing тағы 430 мс шамасында кетті. Бұл енді сезім туралы дау емес, қадамдар бойынша түсінікті бюджет.
Алдымен әзірлеушілер post-processing-ті қолға алды. Бұл жиі болатын қате: өз кодыңа тиісу промптқа, диалог тарихына немесе модель таңдауға қарағанда оңайырақ. Олар жауап парсингін жеңілдетіп, екі тексерісті қысқартып, артық форматтауды алып тастады. Ұтыс дерлік байқалмады, өйткені олар ең ауыр бөлікті емес, жеңіл бөлікті қысқартып жатқан еді.
Бөлініс былай көрінді:
- желі: 250 мс;
- маршрутизация: 120 мс;
- модель: 3,4 с;
- post-processing: 430 мс.
Негізгі жоғалту модельдің өзінде еді. Ассистент әр жолы ұзын system prompt, толық диалог тарихын жіберіп, тым егжей-тегжейлі жауап сұрайтын. Карта лимиті туралы қарапайым сұраққа модельге шын мәнінде керек мәтіннен әлдеқайда көп контекст берілді, содан кейін 4-5 қысқа сөйлем жететін жерде ұзақ жауап жасалды.
Осыдан кейін команда желі мен жауаптан кейінгі кодты дерлік қозғамады. Ол system prompt-ты қысқартты, қайталанатын нұсқауларды алып тастады, толық тарихтың орнына тек керек репликаларды жіберетін болды және шығыс ұзындығын шектеді. Модель уақыты күткеннен әлдеқайда қатты төмендеді: ұқсас сұрауларда 3,4 секундтан 1,9-2,1 секундқа дейін.
Мұндай түзетуден кейін жалпы жауап уақыты әлдеқайда қалыпты көрінді. Мінсіз емес, бірақ тірі диалог үшін едәуір жақсы. Егер команда әрі қарай да тек post-processing-ті қысқарта берсе, онда ол ондаған миллисекунд үнемдеп, бір аптаны жоғалтатын еді. Кешігу кезең-кезеңімен жиналғанда, бірінші кезекте қай жерге соғу керегі бірден көрінеді.
Кешігу талдауындағы жиі қателер
Қателер графиктерден емес, әртүрлі нәрселерді бірдей сұрау сияқты салыстырудан басталады. Егер сіз кешігуді өлшесеңіз, шарттарды бірдей ұстаңыз. Әйтпесе сандар сенімді көрінеді, бірақ ештеңе түсіндірмейді.
Ең жиі тұзақ қарапайым: командалар модельдерді әртүрлі промпттарда, басқа температурамен және token лимитімен салыстырады. Сосын бір модельді "баяу" деп қорытындылайды, ал шын мәнінде оның контексті ұзындау және жауабы егжей-тегжейлі болған. Егер сіз үйлесімді шлюз арқылы тест жасап, бір API арқылы провайдер немесе модельді тез ауыстыра алсаңыз, бұл ыңғайлы. Бірақ бір уақытта тек бір параметрді ғана өзгерту керек.
Cold start та жиі шатастырады. Ұзақ үзілістен кейінгі бірінші сұрау әдетте қалыптыдан баяуырақ болады. Мұндай шақыруларды әдеттегі трафикпен бір графикке қоссаңыз, орташа сан жоғарылайды да, себеп көрінбей қалады. Cold start-тарды бөлек, жұмыс істеудің арнайы режимі ретінде санаған дұрыс.
Тағы бір қате — тек орташа жауап уақытына қарау. Орташа мән пайдаланушы тәжірибесіне қарағанда әрдайым тынышырақ көрінеді. Егер сұраулардың 80%-ы 2 секундқа сыйып, ал 20%-ы 9 секундқа созылса, орташа мән ұзын құйрықтың қаншалықты жағымсыз екенін көрсетпейді. Кемінде p95 және p99 қараңыз. Көбіне мәселе дәл сонда жасырынады.
Ескі әдет — бәріне желіні кінәлау. Ол шынымен жүздеген миллисекунд қоса алады, бірақ секундтарды көбіне модель жейді, әсіресе жауап ұзағырақ болғанда. Команда сұрау екі есе баяулады деп көріп, бірден канал, DNS немесе proxy-ді тексереді. Ал кейін модель 200 токеннің орнына 1200 токен бере бастағаны анықталады.
Тез тексеруге тұрарлық төрт нәрсе бар:
- салыстырып отырғаныңыз бірдей промпт па;
- cold start сұраулары жалпы таңдамаға кіріп кетпеді ме;
- тек орташа мәнді емес, p95 пен p99-ды да көріп тұрсыз ба;
- кешігумен бірге жауап ұзындығы да өспеді ме.
Осы сұрақтарға шын жауап берсеңіз, "желілік" проблемалардың жартысы инфрақұрылымды дебагқа кіріспей тұрып-ақ жоғалады.
Қорытынды шығар алдында жылдам тексеріс
Кешігуді жөндемес бұрын өлшемдерден шуды алып тастаңыз. Әйтпесе модельді кінәлап, ал уақыт ретрайға, кезекке немесе жауаптағы артық токендерге кеткен болуы мүмкін. Жақсы диагностика графиктен емес, бірдей сұрауларды таза салыстырудан басталады.
Алдымен тест шарттарын бекітіңіз. Бірдей промпт, бірдей max_tokens, сол температура және бірдей жауап форматы. Егер бір өлшемде модель 80 токен шығаруы керек болса, ал екіншісінде 800 токен болса, салыстыру бірден бұзылады.
Содан кейін жиі араласып кететін екі метриканы бөліңіз. Біріншісі — TTFT, яғни бірінші токенге дейінгі уақыт. Екіншісі — толық жауап уақыты. Егер TTFT қалыпты, ал толық жауап ұзақ болса, мәселе көбіне генерация ұзындығында, токен шығару жылдамдығында немесе post-processing-те. Егер TTFT жоғары болса, желіні, маршрутизацияны және модельге дейінгі кезекті қараңыз.
Қорытынды алдында қысқа тізімнен өту пайдалы:
- тек бірдей
max_tokensбар бірдей сұрауларды салыстырыңыз; - TTFT мен толық жауап уақытын бөлек өлшеңіз;
- өлшемдерді провайдер, регион және сұрау түрі бойынша бөліңіз;
- ретрайларды, кезектерді, rate limits пен ішкі лимиттерді тексеріңіз;
- әр өзгерістен кейін жаңа прогон жасаңыз, бәрін бірден өзгертпеңіз.
Сегменттер бойынша бөліну тез сергітеді. Бірдей сұрау әр провайдер арқылы әртүрлі жүруі мүмкін. Қазақстан мен Орталық Азия командалары үшін бұл әсіресе байқалады, егер трафиктің бір бөлігі сыртқы регионға кетіп, ал бір бөлігі пайдаланушыға жақынырақ қалса. OpenAI-совместимый API болса да, кешігу модельден емес, маршруттан айырмашылық көрсетуі мүмкін.
Тағы бір жиі қателік — орташа мәнге қарап, тынышталу. Орташа мән секірістерді жасырады. Кемінде p50, p95 және баяу сұраулардың бірнеше сырық трассировкасын алыңыз.
Егер промптты, провайдерді немесе лимиттерді өзгерткеннен кейін жауап уақыты жақсарса, сол бірдей таңдамада қайта тексеріңіз. Бір сәтті прогон ештеңені дәлелдемейді. 20-30 бірдей сұраудан тұратын сериямен ғана жұмыс істеуге болатын сурет шығады.
Әрі қарай не істеу керек
Өлшемдерден кейін тағы бір график емес, жұмыс істейтін уақыт шегін қою керек. Әр кезең үшін бөлек бюджет белгілеңіз: желі, маршрутизация, модель жауабы және post-processing. Командада тек бүкіл сұрауға арналған бір ғана сан болса, дау әдетте соқыр күйде жүреді.
Жақсы ереже қарапайым: алдымен кәдімгі сценарий үшін мақсатты жауап уақытын бекітіңіз, сосын оны қадамдарға бөліңіз. Мысалы, егер чат-ассистент 2,5 секундта жауап беруі керек болса, желіге 150 мс-қа дейін, маршрутизацияға 100 мс-қа дейін, модельге 1,8 секундқа дейін, ал post-processing-ке 450 мс-қа дейін бөлуге болады. Бұл әмбебап шындық емес, бірақ мұндай шеңбер жүйенің қай жерде шектен шыққанын тез көрсетеді.
Содан кейін ең байқалатын бөлікті емес, ең қымбатын қысқартыңыз. Командалар жиі талқылауға оңай нәрседен бастайды: логтау, жауап форматы, промпттың ұсақ түзетулері. Бірақ егер модель тұрақты түрде уақыттың 70%-ын алса, ал желі 5% ғана болса, желіні оңтайландыру көп нәрсе бермейді. Әр қадам бойынша медиана мен 95-процентильге қараңыз. Нақты жоғалтулар сол жерде жасырынады.
Күнделікті жұмыс үшін бірнеше қарапайым ереже жеткілікті:
- бір эталон сценарийді қалдырып, оны күн сайын өлшеу;
- бірінші токен мен толық жауап уақытын салыстыру;
- модель немесе провайдер ауысқаннан кейін кешігу өсіп кетпегенін тексеру;
- бизнес-логика уақытын LLM API-дың өз уақытынан бөлек қарау;
- барлық сұраулар үшін метрикаларды бір форматта жазу.
Егер сіз OpenAI-совместимый провайдерлерді ауыстырсаңыз, SDK мен клиенттік кодты бірден қайта жазу міндет емес. Бірдей сұрауларды бір совместимый endpoint арқылы өткізіп, тек base_url-ды өзгерту ыңғайлырақ. Сонда кешігуді әділ салыстыру оңай болады, өйткені интеграцияның қалған бөлігі өзгеріссіз қалады. Бұл сценарийде AI Router бір шлюз ретінде пайдалы: api.airouter.kz арқылы әртүрлі провайдерлерге маршрутты ауыстырып, уақыттың шын мәнінде қайда жоғалатынын көре аласыз.
Қазақстандағы командалар үшін тағы бір практикалық қадам бар. Егер data residency мен болжамды кешігу маңызды болса, сыртқы модельдерді AI Router өз GPU-инфрақұрылымында ел ішінде хост ететін open-weight модельдерімен бөлек салыстырған дұрыс. Кейбір міндеттерде бұл артық желі жолын алып тастап, жауап уақытын бірқалыпты етеді.
Және ең соңғысы: бәрін бірден жөндеуге тырыспаңыз. Ең көп уақыт жейтін бір бөлікті табыңыз, соны түзетіңіз де, өлшемдерді қайтадан қадамдап алыңыз. Осындай бір циклден кейін сурет әдетте әлдеқайда шынайы болады.
Жиі қойылатын сұрақтар
Неге жалпы жауап уақыты диагностика үшін жеткіліксіз?
Өйткені бір сан бәрін араластырып жібереді: желі, маршрут таңдау, провайдердегі кезек, модельдің жұмысы және жауаптан кейінгі өз кодыңыз. Сіз симптомды көресіз, бірақ қай бөлікті бірінші жөндеу керегін түсінбейсіз.
LLM сұрауында қандай кезеңдерді өлшеу керек?
Әдетте төрт белгі жеткілікті: сұрау backend-ке кірді, код шақыруды шлюзге немесе провайдерге жіберді, бірінші токен келді, соңғы токен келіп, post-processing аяқталды. Осыдан сіз модельге дейінгі кешігуді, TTFT, генерация уақытын және модель жауабынан кейінгі уақытты бірден шығарасыз.
Чат үшін TTFT маңыздырақ па, әлде толық жауап уақыты ма?
Чат үшін алдымен TTFT-ны қараңыз. Егер бірінші токен тез келсе, жауаптың соңғы бөлігі ұзақ болса да, пайдаланушы жүйенің тірі екенін сезеді.
Желінің дәл қай жері баяулататынын қалай түсінуге болады?
Желіні бөліп тексереді, бір ғана жалпы санға қарамайды. Алдымен клиенттен шлюзге дейінгі жолды, содан кейін шлюзден провайдерге дейінгі жолды ажыратыңыз, әрі cold connection, DNS, TLS, таймауттар мен ретрайларды бөлек қараңыз.
Промпт кешігуге қалай әсер етеді?
Ұзын system prompt пен артық диалог тарихы модельді бірінші токенге дейін-ақ баяулатады. Модель бұл мәтінді әр шақырылымда оқиды, сондықтан канал жақсы болса да, сіз тым көп контекст жіберсеңіз, ол көмектеспейді.
Неге `max_tokens` шектеу керек?
Егер max_tokens тым үлкен болса, қажет емес жерде де ұзақ жауапқа рұқсат бересіз. Тәжірибеде сценарийге сай нақты шек қойған дұрыс және шығарылым ұзындығы сапаға пайдасыз өсіп кетпегенін тексерген жөн.
Streaming жауапты тезірек қыла ма?
Стриминг жылдамдық сезімін жақсартады, өйткені пайдаланушы бірінші токенді ертерек көреді. Бірақ ол толық жауап уақытын әрдайым қысқартпайды: модель мәтінді соңына дейін сол баяу жылдамдықпен жаза беруі мүмкін.
Неге орташа уақыт жиі жаңылыстырады?
Орташа мән көбіне жағымсыз ұзын құйрықты жасырып қояды. Егер сұраулардың бір бөлігі қалыпты, ал бір бөлігі бірнеше секунд ілініп тұрса, мәселені p95 және p99 көрсетеді, ал орташа мән бәрі жақсы сияқты әсер қалдырады.
Модельдер мен провайдерлерді кешігу бойынша қалай әділ салыстыруға болады?
Бірдей промпттар жиынын алыңыз, температураны, жауап форматын және max_tokens мәнін өзгертпеңіз, ал cold request-терді бөлек есептеңіз. Егер бірнеше шартты қатар өзгертсеңіз, модельдер мен провайдерлерді әділ салыстырып тұрған жоқсыз.
AI Router уақыттың қайда кететінін табуға қалай көмектеседі?
AI Router арқылы бір OpenAI-совместимый эндпоинттен бірдей сұраныстарды өткізуге және SDK, код пен промпттарды өзгертпеуге ыңғайлы. Қосымшаңызда және api.airouter.kz шақыру шекарасында таймстемп қойсаңыз, өз кодыңыздағы кешігуді маршрут пен модель жағындағы кешігуден тез ажыратасыз.