Водич и увид
Поуздано усмеравање ЛЛМ АПИ-ја: временска ограничења, поновни покушаји и замена модела без семантичких регресија
Практична архитектура за класификацију грешака ЛЛМ АПИ-ја, спровођење једног буџета за кашњење, одабир компатибилних резервних модела, заштиту нежељених ефеката и валидацију сваког прихваћеног одговора.
<п>Резервни захтев није успешан само зато што је други модел вратио ХТТП 200. Замена може премашити првобитни буџет кашњења, изоставити потребна ЈСОН поља, позвати другу алатку или произвести одговор са материјално различитом семантиком. Поуздано ЛЛМ АПИ рутирање стога захтева више од уређене листе модела: захтева уговор, класификатор неуспеха, политику ограниченог покушаја и валидацију пре прихватања.п>
<п>Главно правило је једноставно: покушајте поново само када је грешка вероватно привремена, и вратите се назад само када следећа рута и даље може да задовољи првобитни уговор о захтеву.п>
<х2>Дефинишите уговор о рутирању пре него што изаберете моделех2>
<п>Почните тако што ћете описати шта успешан одговор мора да пружи. Овај уговор о рутирању треба да буде машински читљив и приложен сваком радном оптерећењу или класи захтева.п>
<пре><цоде>{
"ворклоад": "инвоице_ектрацтион",
"модалитети": ["текст", "слика"],
"мак_инпут_токенс": 50000,
"рекуирес_тоолс": нетачно,
"струцтуред_оутпут": {
"обавезно": истина,
"сцхема_ид": "инвоице-в3",
"строго": истина
},
"алловед_модел_цлассес": ["извлачење документа"],
"мак_цост_усд": 0,08,
"деадлине_мс": 8000
}цоде>пре>
<п>Уговор треба да покрије потребне модалитете, капацитет контекста, подршку алата, понашање структурираног излаза, прихватљиве класе модела, максималну цену и крајњи рок. Додајте ограничења специфична за апликацију где је потребно, као што су дозвољени региони, минимална излазна дужина или захтевани разлог завршетка.п>
<п><стронг>Препорука:стронг> одржавајте одвојене, тестиране групе рута за обичан текст, излазне податке ограничене шемом, употребу алата, визију и захтеве дугог контекста. Модел који је прихватљива замена текста није аутоматски прихватљива резервна опција за позивање алата или унос слике.п>
<х2>Класификујте грешку пре него што предузмете акцијух2>
<п>Грешке при аутентификацији, погрешно обликовани захтеви, ограничења брзине и грешке сервера захтевају различите одговоре. Третирање сваког неуспешног одговора као поновног покушаја губи капацитет и може сакрити недостатке.п>
<табле>
<тхеад><тр><тх>Класа неуспехатх><тх>Примеритх><тх>Подразумевана радњатх>тр>тхеад>
<тбоди>
<тр><тд>Трајни неуспех захтеватд><тд>Неважећи акредитиви, погрешно обликовани параметри, неподржана функцијатд><тд>Зауставите и вратите јасну грешкутд>тр>
<тр><тд>Некомпатибилност рутетд><тд>Контекст је превелик, унос слике није подржан, недоступан режим шеметд><тд>Пробајте само компатибилну рутутд>тр>
<тр><тд>Привремени неуспех транспортатд><тд>Ресетовање везе, ДНС грешка, изабрано временско ограничењетд><тд>Покушајте поново у оквиру преосталог буџетатд>тр>
<тр><тд>Неисправан капацитет или брзинатд><тд>ХТТП 429, преоптерећена услуга, изабрани 5кк одговоритд><тд>Поштујте савете за поновни покушај или користите здраву резервну верзијутд>тр>
<тр><тд>Неважећи успешан одговортд><тд>Неисправан ЈСОН, непозната алатка, недостаје обавезно пољетд><тд>Одбијте, па покушајте поново или вратите се ако смернице дозвољавајутд>тр>
<тр><тд>Двосмислено извршењетд><тд>Веза је изгубљена након што је провајдер можда прихватио захтевтд><тд>Уклони дупликат пре поновног пуштањатд>тр>
тбоди>
табле>
<п><стронг>Чињеница:стронг> неуспешни захтеви са ограниченом стопом и даље могу да се рачунају у ограничења добављача. Агресивни тренутни поновни покушаји стога могу продубити пригушивање уместо да га решавају. Поновни покушаји такође троше додатни капацитет током прекида рада, а смернице за поновни покушај на неколико слојева апликације могу да умноже резултујуће оптерећење.п>
<п><стронг>Препорука:стронг> дозволите једном слоју да поново покуша да генерише модел. У типичној архитектури, АИ АПИ капија је прави власник јер види здравље руте, историју покушаја, кашњење и цену. Онемогућите аутоматске поновне покушаје у клијентима нижег нивоа где је то могуће или их експлицитно урачунајте у исти буџет за покушај.п>
<х2>Потрошите један буџет за кашњење од краја до крајах2>
<п>Тајмаути по покушају су недовољни. Три покушаја са временским ограничењем од пет секунди могу да претворе намеравану операцију од пет секунди у одговор од петнаест секунди, пре него што се укључи повлачење и валидација.п>
<п>Забележите апсолутни рок када захтев уђе у гатеваи. Пре сваког покушаја израчунајте преостало време:п>
<пре><цоде>преостало = рок - тренутно_време
потребно = повезивање_дозвоља + генерисање_дозвоља + одобрење_валидације
ако је преостало < потребно:
стоп_витхоут_лаунцхинг_анотхер_аттемптцоде>пре>
<п>За рок од осам секунди, разумна почетна алокација може да резервише 300 мс за рад мрежног пролаза и коначну валидацију, до 4,5 секунди за примарну руту и задржи приближно 3,2 секунде за једну резервну. Ове вредности су пример, а не мерило. Оне морају бити изведене из измерених дистрибуција кашњења за стварне добављаче, моделе, регионе и излазне величине.п>
<п>Користите ограничено експоненцијално повлачење са подрхтавањем за пролазне поновне покушаје:п><пре><цоде>деи = рандом(0, мин(цап, басе * 2^ретри_индек))цоде>пре>
<п>Наговештаји за поновни покушај добављача, као што је вредност за поновни покушај, треба да имају предност када се уклапају у преостали рок. Зауставите се након малог броја покушаја. Уобичајена смерница је један примарни покушај плус један резервни покушај, са опционим поновним покушајем исте руте само за рану неуспешну везу која није могла да генерише наплативи излаз.п>
<п><стронг>Компром:стронг> секвенцијални резервни корак побољшава доступност, али повећава кашњење репа. Паралелни или заштићени захтеви могу смањити кашњење током успоравања, али троше више капацитета и могу изазвати трошкове за више успешних генерација. Заштита би требало да буде ограничена на радна оптерећења која су критична за кашњење, без нежељених ефеката, са отказивањем и контролом трошкова.п>
<х2>Изаберите резервне по могућностима, а не по рангух2>
<п>Резервна табела треба да кодира компатибилност, а не глобални редослед преференција. Филтрирајте руте кандидата према уговору пре него што узмете у обзир здравље, кашњење или цену.п>
<пре><цоде>кандидати = руте
.филтер(суппортс_рекуиред_модалитиес)
.филтер(цонтект_лимит >= процењена_инпут_сизе)
.филтер(суппортс_рекуиред_тоолс)
.филтер(суппортс_рекуестед_сцхема_моде)
.филтер(модел_цласс у дозвољеним_модел_цлассес)
.филтер(естиматед_цост <= рестиматед_цост_будгет)
.филтер(нот_темпорарили_суппрессед)
изабрано = ранг (кандидати, здравље, кашњење, цена)цоде>пре>
<п>Подршка за структурирани излаз заслужује експлицитно тестирање. Чак и када две руте оглашавају генерисање ограничено шемом, оне могу подржавати различите подскупове ЈСОН шеме или различито тумачити рубне случајеве. Модели са могућностима алата могу се такође разликовати по избору алата, конструкцији аргумената и понашању паралелног позива.п>
<п><стронг>Чињеница:стронг> замена фамилија модела може да сачува доступност транспорта уз промену стила, квалитета закључивања, безбедносног понашања, токенизације и избора алата. ХТТП успех није доказ семантичке еквиваленције.п>
<п><стронг>Предвиђање:стронг> како се каталози модела буду ширили, смернице за усмеравање производње ће све више користити верзионисане профиле способности и тестове прихватања специфичне за радно оптерећење уместо статичких листа модела. Третирајте ово као смер дизајна, а не као гаранцију понашања добављача.п>
<х2>Потврдите одговор пре него што га прихватитех2>
<п>Покрените сваки одговор, укључујући примарни одговор, кроз исти цевовод прихватања. Валидација треба да се деси пре него што се резултат кешује, интерно наплати као успешан или прослеђен извршиоцу алата.п>
<ол>
<ли>Потврдите да је транспорт завршен и коверта одговора може да се рашчлани.ли>
<ли>Проверите разлог завршетка и одбијте скраћивање када је потребан комплетан излаз.ли>
<ли>Потврдите структурирани излаз у односу на оригиналну шему.ли>
<ли>Провери обавезна поља, вредности енума и инваријанте апликације.ли>
<ли>Дозволите само регистрована имена алата и потврдите аргументе против сваке шеме алата.ли>
<ли>Примените семантичке провере специфичне за радно оптерећење где би лажно прихватање било скупо.ли>
ол>
<п>За издвајање фактуре, семантичке провере могу захтевати ненегативан збир, подржану шифру валуте и укупне вредности ставки у оквиру експлицитно дефинисане толеранције. За класификацију, захтевајте ознаку из дозвољеног скупа. За генерисање кода, рашчлањивање или компилација може бити прикладно. Ове провере не доказују квалитет, али онемогућавају да се предвидива кршења уговора третирају као успех.п>
<п>Немојте тихо поправљати сваки деформисани одговор. Детерминистичка нормализација, као што је уклањање безопасног околног размака, може бити прихватљива. Погађање недостајућих финансијских поља или преписивање аргумената алата мења значење модела и требало би да изазове одбијање или људски преглед.п>
<х2>Одвојите поновне генерисање од нежељених ефекатах2>
<п>ЛЛМ захтеви обично користе ХТТП ПОСТ, што није инхерентно идемпотентно. Што је још важније, одговор модела може покренути екстерну акцију као што је наплата начина плаћања, слање поруке, креирање тикета или модификација инфраструктуре. Поновни покушај генерисања и понављање те радње су засебне одлуке.п>
<п>Доделите ИД операције на граници апликације и ИД покушаја сваком позиву модела. Задржите стање извршења алата према детерминистичком кључу, као што је:п>
<пре><цоде>екецутион_кеи = оператион_ид + тоол_наме + цаноницал_аргументс_хасхцоде>пре>
<п>Пре него што покренете алатку, проверите да ли је тај кључ на чекању, завршен или није успео. Вратите сачувани резултат за завршено извршење уместо да га поново покрећете. За операције чији се аргументи могу легитимно променити, захтевајте одобрење на нивоу апликације или нови ИД операције.п><п>Двосмислено временско ограничење захтева посебно руковање. Ако веза не успе након што је захтев пренет, мрежни пролаз можда неће знати да ли је дошло до генерисања. Кључ идемпотенције који подржава провајдер може помоћи када је доступан. У супротном, евидентирајте резултат као непознат и примените смернице за понављање специфичне за радно оптерећење уместо да претпостављате да се ништа није догодило.п>
<х2>Сузмите нездраве руте и разоткријте сваки покушајх2>
<п>Прекидач или привремено искључење здравља спречава сваки нови захтев да поново открије исту неуспешну руту. Отворите коло након дефинисане стопе грешке или прага узастопних кварова, а затим допустите ограничене сонде у полуотвореном стању. Подесите прагове према рути и класи грешке тако да неисправан захтев клијента не може да учини да здрав модел изгледа недоступан.п>
<п>Снимите један догађај на нивоу захтева и један догађај по покушају. Корисна поља укључују ИД операције, ИД покушаја, изабрани провајдер и модел, класу грешке, статусни код, кашњење, број токена, процењени трошак, резервни разлог, резултат валидације, стање кола и коначни исход. Редигујте или хеширајте упите, излазе и аргументе алата према њиховој осетљивости и захтевима за задржавање.п>
<п>Корисни оперативни показатељи обухватају резервну стопу, покушаје по завршеном захтеву, стопу исцрпљености рока, стопу одбијања валидације, двосмислене резултате, цену по прихваћеном одговору и кашњење према коначној рути. Растућа стопа успеха ХТТП заједно са растућом стопом одбијања валидације је упозорење да доступност транспорта маскира неуспехе уговора.п>
<х2>Контролна листа за увођење производњех2>
<ул>
<ли>Дефинишите верзионисани уговор о рутирању за сваку класу радног оптерећења.ли>
<ли>Мапирајте грешке добављача у трајне, пролазне, некомпатибилне категорије са неважећим одговорима и двосмислене категорије.ли>
<ли>Изаберите једног власника поновног покушаја и ограничите укупан број покушаја.ли>
<ли>Проширите апсолутни рок преко мрежног пролаза, клијента добављача, провере ваљаности и извршавања алата.ли>
<ли>Изградите резервне групе тестиране способности уместо једног глобалног ланца модела.ли>
<ли>Потврдите шеме, позиве алата, разлоге завршетка и инваријанте домена.ли>
<ли>Уклоните дупликате нежељених ефеката помоћу тастера за рад и извршавање.ли>
<ли>Додајте потискивање руте са ограниченим полуотвореним сондама.ли>
<ли>Евидентирање кашњења на нивоу покушаја, токена, трошкова, грешака и резултата прихватања.ли>
<ли>Убаците временско ограничење, 429с, изабране грешке 5кк, неисправан ЈСОН, преливање контекста и спори успеси у постављању.ли>
ул>
<п>Почните са примарном рутом и једним компатибилним резервним путем за једно радно оптерећење ниског ризика. Упоредите квалитет прихваћеног одговора, кашњење и цену пре него што проширите смернице. Циљ није највећа могућа резервна стопа. То је ограничени систем који или враћа одговор који задовољава оригинални уговор или очигледно не успева пре него што проузрокује дуплирање посла или семантичку штету.п><х2>Повезано читањех2><ул><ли><а хреф="хттпс://модел-гате.цом/ен/блог/артицле-2-2/">ранија белешка о тестирању АПИ-јаа>лиа>ли> хреф="хттпс://модел-гате.цом/ен/блог/артицле-1-1/">претходни чланак на енглеском језикуа>ли>ул>
FAQ
Често постављана питања
Које грешке ЛЛМ АПИ-ја треба да изазову поновни покушај?
Поново покушајте само са грешкама које су класификоване као пролазне, као што су одабрани неуспеси везе, временска ограничења, ограничења брзине и грешке сервера добављача. Немојте аутоматски поново покушавати са неважећим акредитивима, погрешно обликованим захтевима, неподржаним функцијама или грешкама у ограничењу контекста. Грешка у ограничењу контекста може оправдати компатибилни резервни дуг са дугим контекстом, али понављање истог захтева на истој рути то неће поправити.
Колико покушаја замене модела би требало да дозволи мрежни пролаз?
Не постоји универзални број, али граница треба да буде мала и да се регулише једним роком од краја до краја. Практична полазна тачка је један примарни покушај и једна компатибилна резерва. Додајте још један покушај само када измерени добици у поузданости оправдају додатно кашњење, капацитет и цену.
Да ли су захтеви за позивање алата безбедни за поновни покушај?
Генерисање модела се може поново покушати под ограниченом политиком, али извршење екстерног алата мора бити одвојено дедуплицирано. Користите ИД операције и детерминистички кључ за извршавање, сачувајте резултат алата и избегавајте понављање плаћања, порука или других нуспојава само зато што се генерисање поновило.
Може ли се јефтинији модел користити као аутоматски резервни модел?
Само када задовољи исти уговор о рутирању и прође тестове прихватања специфичне за радно оптерећење. Сама цена не утврђује компатибилност. Проверите модалитет, контекст, структурирани излаз, алат, кашњење и захтеве квалитета пре него што ставите било који модел у резервну групу.