Водич и увид

Направите слој компатибилности АПИ-ја одговора у АИ АПИ мрежном пролазу

Мрежни пролаз АПИ-ја за одговоре није само прокси за завршавање ћаскања са новом рутом. Сачувајте ставке одговора, стање, позиве алата, токове, континуитет закључивања, приписивање коришћења и понашање на ниже нивое са првокласним слојем компатибилности.

<п>Не имплементирајте <цоде>/в1/респонсес тако што ћете сваки захтев превести у <цоде>/в1/цхат/цомплетионс и надајући се да је облик довољно близу. Тај адаптер може да врати текст, али може тихо да изгуби делове до којих је програмерима стало: ставке одговора, стање на страни сервера, позиве алата, континуитет резоновања, догађаје животног циклуса стрима, семантику отказивања и приписивање коришћења на нивоу ставке. <п>Практични циљ је слој компатибилности који третира Респонсес АПИ као богатији протокол. Задржите подршку за довршавање ћаскања за постојеће клијенте, али изградите одговоре као сопствену површину мрежног пролаза са сопственим моделом стања, нормализатором тока, књигом позива алата, матрицом могућности и резервним правилима. <х2>Шта је чињеница, шта је политика, а шта предвиђање? <п><стронг>Чињенице: ОпенАИ описује Респонсес АПИ као обједињујуће могућности које су раније биле подељене на довршавање ћаскања и помоћнике, укључујући подршку за алатке као што су веб претрага, претрага датотека и коришћење рачунара. АПИ излаже поља као што су <цоде>превиоус_респонсе_ид, стримовање, избор алата и уграђене алатке. Документација СДК-а показује да <цоде>превиоус_респонсе_ид може да обезбеди континуитет разговора, док се претходна упутства не преносе аутоматски унапред и морају се поново послати када би и даље требало да се примењују. ОпенАИ референца за стримовање укључује различите животне циклусе одговора и излазне догађаје, а не само делте токена. <п><стронг>Препоруке: Гејтвеј би требало да сачува ову семантику уместо да их подразумевано изравнава. Требало би да одбије или експлицитно поништи захтеве када циљни добављач не може да подржи захтевано понашање. <п><стронг>Предвиђање: Више оптерећења агента ће зависити од структуре ставке одговора, трагова извршавања алата и контекста резоновања са стањем. Мрежне пролазе који сада моделирају те концепте биће лакше проширити од мрежних пролаза који одговоре третирају као козметичку крајњу тачку. <х2>Дефинишите посебан уговор о компатибилности за одговоре <п>Прва грешка у примени је претпоставка да ОпенАИ компатибилан значи једну универзалну шему захтева и одговора. У пракси, <цоде>/в1/цхат/цомплетионс и <цоде>/в1/респонсес би требало да буду засебни уговори о компатибилности. <п>Задржите заједнички слој за потврду идентитета, обрачун, квоту и рутирање, али одвојите слој протокола: <ул> <ли><стронг>Површина завршетка ћаскања: поруке, избори, делте, позиви алатки у формату ћаскања, застарело понашање клијента. <ли><стронг>Површина одговора: ставке улаза, излазне ставке, ИД-ови одговора, претходне референце одговора, богатији догађаји алата, догађаји тока животног циклуса, поља у вези са образложењем и коначно стање одговора. <п>Ова подела је важна за тестове усаглашености. Адаптер добављача који прође тестове ћаскања и даље може да не успе у тестовима одговора јер не може да сачува <цоде>превиоус_респонсе_ид, редослед ставки, структуру одбијања, метаподатке хостоване алатке или имена догађаја стримовања. <п>Минимални уговор о компатибилности треба да одговори: <ул> <ли>Која поља захтева се прихватају, одбијају, трансформишу или игноришу? <ли>Који типови ставки одговора су сачувани? <ли>Које врсте алата су подржане по добављачу и моделу? <ли>Да ли провајдер може да одржава стање разговора или га гејтвеј мора да одржава? <ли>Шта се дешава када се захтева <цоде>сторе=фалсе? <ли>Који догађаји стрима су загарантовани? <ли>Како се евидентирају отказивање, временско ограничење и делимично коришћење? <п>Ако већ имате <а хреф="/ен/">АИ АПИ мрежни пролаз, третирајте подршку за одговоре као проширење протокола, а не као псеудоним руте. <х2>Користите канонски модел ставке одговора <п>АПИ за одговоре враћа више од једне поруке помоћника. Може представљати различите излазне ставке и догађаје. Вашем мрежном пролазу је потребан интерни канонски модел пре него што се повеже са било којим добављачем. <п>Практична интерна шема ставке може почети овако: <пре><цоде>{ "гатеваи_респонсе_ид": "гв_респ_...", "провидер_респонсе_ид": "одговор_...", "тенант_ид": "тен_123", "кеи_ид": "кеи_456", "модел_алиас": "агент-дефаулт", "провајдер": "опенај", "итемс": [ { "итем_ид": "итем_1", "тип": "текст", "улога": "помоћник", "цонтент": [{ "типе": "оутпут_тект", "тект": "..." }], "статус": "завршено" }, { "итем_ид": "итем_2", "типе": "фунцтион_цалл", "цалл_ид": "цалл_абц", "наме": "лоокуп_ордер", "аргументс_јсон": "{\"ордер_ид\":\"123\"}", "статус": "завршено" } ], "употреба": { "инпут_токенс": 0, "оутпут_токенс": 0, "реасонинг_токенс": нулл, "тоол_унитс": [] }, "статус": "завршено" } <п>Укључите типове ставки чак и пре него што сваки добављач може да их произведе. Корисне категорије укључују: <ул> <ли>Излаз текста <ли>Одбијања<ли>Позиви функција <ли>Излази функције које је доставила апликација <ли>Сажеци образложења или метаподаци у вези са образложењем где су доступни <ли>Референце датотека <ли>Претрага веба, претрага датотека, употреба рачунара или други догађаји хостованих алатки <ли>Метаподаци о коначном коришћењу и обрачуну <п>Поента није да се власничка шема изложи корисницима. Поента је у томе да мрежни пролаз не одбацује информације пре него што их може ревидирати, наплатити, стримовати, поново репродуковати или трансформисати. <х2>Направите државну књигу у власништву мрежног пролаза <п><цоде>превиоус_респонсе_ид је поље које највише открива разлику између проксија за ћаскање без статуса и компатибилности одговора. Ако клијент референцира претходни одговор, мрежни пролаз мора да зна шта тај ИД значи, да ли је закупцу дозвољено да га користи и да ли провајдер може да настави са њим. <п>Креирајте државну књигу са кључем закупца и ИД-ом одговора: <пре><цоде>{ "гатеваи_респонсе_ид": "гв_респ_789", "провидер_респонсе_ид": "респ_провидер_789", "превиоус_гатеваи_респонсе_ид": "гв_респ_456", "тенант_ид": "тен_123", "усер_ид": "усер_999", "кеи_ид": "кеи_456", "модел": "гпт-...", "провајдер": "опенај", "сторе_моде": "провајдер|гатеваи|нема", "ретентион_полици": "стандард|зеро_ретентион|цустом_30д", "инструцтионс_хасх": "сха256:...", "тоол_полици_ид": "тоолс_реадонли_в3", "цреатед_ат": "...", "екпирес_ат": "...", "делетед_ат": нулл } <п>Важно правило: немојте аутоматски емулирати <цоде>превиоус_респонсе_ид тако што ћете поново репродуковати целу историју ћаскања осим ако закупац није изричито дозволио такво понашање задржавања и трошкова. Поновна репродукција може повећати цену токена, променити положај приватности и променити понашање модела. Сигурније је вратити јасну грешку у могућности него тихо послати сачувани садржај конверзације за који апликација није очекивала да ћете га задржати или поново користити. <х3>Режими управљања стањем <ул> <ли><стронг>Стање добављача: Упстреам добављач складишти довољно контекста, а мрежни пролаз пресликава ИД-ове одговора мрежног пролаза у ИД-ове одговора добављача. <ли><стронг>Стање мрежног пролаза: Гејтвеј чува неопходне претходне ставке и реконструише контекст када је дозвољено. <ли><стронг>Без стања: Захтев користи <цоде>сторе=фалсе или смернице закупца забрањују задржавање. <цоде>превиоус_респонсе_ид треба одбити осим ако добављач не може да испуни захтев без задржавања мрежног пролаза и смернице то дозвољавају. <п>Такође имајте на уму да ће клијент можда морати поново да пошаље претходна упутства када би требало да наставе да се примењују. Гејтвеј не би требало да измишља скривена упутства за компензацију осим ако то понашање није део експлицитне политике закупца. <х2>Провери алате пре слања <п>Одговори чине коришћење алата централнијим. Слој компатибилности треба да обрађује две широке категорије: <ул> <ли><стронг>Апликациони алати: Дефиниције функција које обезбеђује клијент, извршавају се ван добављача модела, са излазним подацима који се враћају АПИ-ју. <ли><стронг>Алатке хостованог добављача: Веб претрага, претрага датотека, коришћење рачунара, извршавање кода, уземљење или сличне алатке које извршава провајдер или инфраструктура коју контролише мрежни пролаз. <п>На улазу, проверите шеме алата пре рутирања: <ул> <ли>Прерано одбијте неважећу ЈСОН шему. <ли>Примени максималну величину шеме и дубину угнежђења. <ли>Проверите називе алата за компатибилност добављача. <ли>Примените опсеге закупца, кључа, корисника и окружења. <ли>Захтевају капије за одобрење за алатке које пишу податке, троше новац, приступају осетљивим системима или позивају спољне конекторе. <п>За позивање функције апликације, захтевајте стабилан ИД позива. Модел емитује позив функције са <цоде>цалл_ид; апликација шаље излаз алата који упућује на тај ИД; гејтвеј оба бележи у истом трагу. Без тог кључа за придруживање, евиденције ревизије и поновни покушаји постају двосмислени. <п>За хостоване алате, резервишите буџет пре слања и поравнајте трошкове након тога. Хостовани алати могу да додају трошкове ван обичног обрачуна токена, па повежите књигу алата са <а хреф="/ен/топицс/унифиед-аи-апи-биллинг/">обједињеним АИ АПИ обрачуном уместо да сакривате те трошкове унутар генеричког укупног броја позива модела. <х2>Нормализујте стримовање као догађаје, а не токен текст <п>Прокси за ћаскање често може да се извуче са делтама токена за прослеђивање. Мрежни пролаз за одговоре не може. Стрим има значење животног циклуса: одговор може да почне, излазне ставке могу да почну и заврше, текст може да стигне у делтама, позиви алата могу да се састављају постепено, употреба може да стигне на крају или током стрима, а одговор може да не успе или да буде отказан. <п>Дефинишите шему догађаја мрежног пролаза, а затим мапирајте сваки ток добављача у њу: <пре><цоде>догађај: респонсе_стартед подаци: { "респонсе_ид": "гв_респ_123", "статус": "у_прогресс" } догађај: оутпут_итем_стартедподаци: { "итем_ид": "итем_1", "типе": "тект" } догађај: текст_делта подаци: { "итем_ид": "итем_1", "делта": "Здраво" } догађај: тоол_цалл_делта подаци: { "итем_ид": "итем_2", "цалл_ид": "цалл_абц", "аргументс_делта": "{\"ордер" } догађај: усаге_делта подаци: { "оутпут_токенс": 12 } догађај: завршен подаци: { "респонсе_ид": "гв_респ_123", "усаге": { ... } } <п>Препоручени нормализовани догађаји: <ул> <ли><цоде>респонсе_стартед <ли><цоде>оутпут_итем_стартед <ли><цоде>оутпут_итем_цомплетед <ли><цоде>текст_делта <ли><цоде>одбијање_делта <ли><цоде>тоол_цалл_делта <ли><цоде>тоол_ресулт_рецеивед <ли><цоде>усаге_делта <ли><цоде>завршено <ли><цоде>отказано <ли><цоде>неуспешно <п>Када клијент прекине везу, пропагирајте отказивање узводно ако га провајдер подржава. Забележите стање делимичног одговора на било који начин. Ако провајдер касније врати коначну употребу путем одложеног повратног позива или коначног дела, ускладите књигу. Компатибилност стриминга се односи на рачуноводство и животни циклус колико и на кашњење. <х2>Креирајте матрицу могућности добављача <п>Мулти-модел рутирање је корисно само када мрежни пролаз разуме шта може безбедно да се усмери. Додајте могућности специфичне за одговоре у свој каталог модела: <пре><цоде>{ "модел_алиас": "агент-дефаулт", "руте": [ { "провајдер": "опенај", "модел": "...", "суппортс_респонсес": тачно, "суппортс_превиоус_респонсе_ид": тачно, "суппортс_сторе_фалсе": тачно, "суппортс_буилтин_веб_сеарцх": истина, "суппортс_фунцтион_цаллинг": тачно, "суппортс_стреам_лифецицле_евентс": тачно, "суппортс_реасонинг_цонтект_цонтинуити": тачно, "мак_тоол_сцхема_битес": 65536 }, { "провидер": "провидер_б", "модел": "...", "суппортс_респонсес": нетачно, "цхат_адаптер_аваилабле": тачно, "лосс_профиле": ["но_превиоус_респонсе_ид", "но_хостед_тоолс", "флаттенед_стреам"] } ] } <п>Замена треба да буде свесна губитка. Ако захтев захтева уграђену веб претрагу и резервни провајдер не може да га изврши, не одговарајте тихо без претраге. Ако захтев зависи од очуваног контекста расуђивања и резервна рута не може да га сачува, вратите грешку могућности или одговор на нижи ниво који је клијент експлицитно изабрао. <п>Корисна опција захтева је: <пре><цоде>{ "модел": "агент-дефаулт", "улаз": "...", "фаллбацк_полици": { "аллов_лосси": нетачно, "алловед_лоссес": [] } } <п>За мање осетљиве случајеве коришћења, закупци могу да дозволе одређене снижавања са губицима: <пре><цоде>{ "фаллбацк_полици": { "аллов_лосси": истина, "алловед_лоссес": ["флаттенед_стреам", "но_реасонинг_суммари"] } } <п>Гатеваи би требало да евидентира резервну одлуку у сваком случају. То омогућава касније отклањање грешака када се агент понаша другачије након прекида рада провајдера или преусмеравања модела. <х2>Коришћење атрибута на нивоу одговора и ставке <п>Позиви одговора могу да коштају више од еквивалентних завршетака ћаскања јер могу да укључују извршавање алата, дужи контекст, токене за образложење, претрагу датотека, претрагу веба или поновљена упутства. Један збирни број токена није довољан за <а хреф="/ен/топицс/аи-апи-усаге-аналитицс-дасхбоард/">контролну таблу за анализу употребе АПИ-ја. <п>Снимање коришћења на два нивоа: <ул> <ли><стронг>Ниво одговора: закупац, кључ, корисник, модел, добављач, кашњење, коначни статус, улазни токени, излазни токени, токени образложења где су пријављени, укупни трошкови и резервни пут. <ли><стронг>Ниво ставке/алатке: назив алатке, ИД позива, хостоване јединице алата, ИД-ови датотека, број упита за претрагу ако је доступан, кашњење алата, цена алата и резултат смерница за одобрење. <п>Ово омогућава програмерима да одговоре на конкретна питања: <ул> <ли>Да ли су се трошкови повећали због дужег стања, напора у размишљању, позивања алатки или резервног? <ли>Који закупац или АПИ кључ генерише трошкове хостоване алатке? <ли>Који одговор није успео након позива алатке, али пре коначног текста? <ли>Који отказани стримови су још увек били коришћени узводно? <х2>Управљајте нултим задржавањем и брисањем као првокласним понашањем <п>Стање на страни сервера је корисно, али мења обавезе задржавања мрежног пролаза. Уградите политику у слој протокола уместо да је третирате као подешавање евиденције. <п>За сваки захтев за одговоре решите: <ул> <ли>Политика задржавања станара <ли>Подешавање <цоде>продавнице на нивоу захтева <ли>Компатибилност задржавања добављача <ли>Да ли је дозвољена поновна репродукција мрежног пролаза <ли>Да ли се улази и излази алата могу чувати <ли>Понашање истека и брисања за стање одговора <п>Ако је задржавање онемогућено, мрежни пролаз може и даље задржати минималне оперативне метаподатке: временске ознаке, ИД-ове, статус, број токена, трошкове и одлуке о смерницама. Избегавајте да чувате необрађене упите, комплетне излазне податке алата или реконструисану историју осим ако смернице то не дозвољавају. <х2>Додавање усклађености пре лансирања <п>Не ослањајте се на ручне тестове срећног пута. Додајте инструменте који верификују понашање протокола на директним ОпенАИ рутама, рутама прилагођеним провајдерима и резервним сценаријима. <х3>Минимални скуп тестова <ул> <ли><стронг>Основни одговор: текстуална ставка се враћа са стабилним ИД-ом одговора и употребом. <ли><стронг>Стање са више окрета: референце другог захтева <цоде>превиоус_респонсе_ид; гејтвеј потврђује власништво станара и режим стања. <ли><стронг>Поновљена упутства: проверите да мрежни пролаз не измишља изостављене инструкције. <ли><стронг>Функција повратног позива: модел емитује ИД позива; апликација подноси излаз; коначни одговор спаја оба записа. <ли><стронг>Смернице за хостоване алатке: неовлашћена уграђена алатка је блокирана пре слања. <ли><стронг>Редослед стримовања: почетак одговора, почетак ставке, делте, завршетак ставке, употреба и завршетак се емитују у важећем редоследу. <ли><стронг>Отказивање стрима: прекидање везе клијента покреће узводно отказивање где је подржано и бележи делимичну употребу. <ли><стронг>Резервно одбијање: добављач без потребне семантике одговора враћа грешку могућности. <ли><стронг>Омогућавање замене са губитком: захтев са дозвољеним губицима добија експлицитни маркер на ниже верзије. <ли><стронг>Режим нултог задржавања: понављање стања и задржавање упита на страни мрежног пролаза су блокирани. <х2>Препоручени редослед увођења <ол> <ли><стронг>Откријте бета руту. Додајте <цоде>/в1/респонсес без промене постојећег понашања ћаскања. <ли><стронг>Примените прво пролаз за добављаче са подршком за изворне одговоре. Сачувајте ИД-ове, ставке, стримове, употребу и грешке. <ли><стронг>Додајте државну књигу. Мапирајте ИД-ове пролаза са ИД-овима добављача и примените власништво станара. <ли><стронг>Додајте канонске ставке. Сачувајте метаподатке ставке потребне за ревизију, обрачун и реконструкцију стрима. <ли><стронг>Додајте управљање алаткама. Потврдите шеме, примените опсеге и забележите спајања позива на алатку. <ли><стронг>Додајте нормализацију стримовања. Конвертујте стримове специфичне за добављача у догађаје животног циклуса мрежног пролаза. <ли><стронг>Додајте рутирање засновано на могућностима. Подразумевано дозволи само безбедне резерве. <ли><стронг>Додајте аналитику и обрачун обрачуна. Засебно наведите токен, образложење и употребу алата. <ли><стронг>Објавите белешке о компатибилности. Реците програмерима која поља су изворна, емулирана, неподржана или са губицима. <х2>Закључак који се може спровести <п>Слој компатибилности АПИ-ја Респонсес треба да сачува значење протокола, а не само да враћа веродостојан текст. Направите га око пет трајних објеката: канонског модела ставке одговора, књиге стања разговора, књиге позива алата, нормализатора догађаја стримовања и матрице могућности добављача. <п>Најсигурнија подразумевана је строга компатибилност: ако рута не може да сачува тражено стање, алате, контекст размишљања, догађаје стрима или понашање задржавања, вратите јасну грешку могућности. Додајте резервни резервни део са губитком само када програмери схвате шта ће бити одбачено. Тај приступ се може чинити мање погодним од аутоматског изравнавања, али спречава најгори режим неуспеха: апликацију која изгледа компатибилна док тихо губи семантику због које је уопште користила Респонсес АПИ.<х2>Повезано читање<ул><ли><а хреф="/ен/блог/стреаминг-токен-аццоунтинг-аи-стреаминг-аццоунтинг-аи-стреаминг цанцеллатион-аццоунтинг-аи-апи-апи руковање
FAQ

Често постављана питања

Може ли мрежни пролаз да имплементира АПИ за одговоре тако што ће све превести у Довршетак ћаскања?
Само за уски подскуп са губицима. Основно генерисање текста може да функционише, али стање, ставке одговора, хостовани алати, контекст у вези са образложењем, структура одбијања, догађаји животног циклуса тока и употреба на нивоу ставке могу бити изгубљени. Производни мрежни пролаз треба да изложи одговоре као засебну површину за компатибилност.
Да ли би мрежни пролаз требало да поново репродукује сачувану историју ћаскања да би емулирао претходни_респонсе_ид?
Не подразумевано. Репродукција мења понашање задржавања, цену, а понекад и понашање модела. Закупац треба изричито да дозволи задржавање стања на страни мрежног пролаза и поновну репродукцију пре него што мрежни пролаз користи ту стратегију.
Шта би требало да се деси када резервни добављачи не могу да подрже семантику одговора?
Најсигурније подразумевано је грешка у могућностима. Ако се закупац одлучи за резервни повратак са губитком, мрежни пролаз треба да врати експлицитни маркер на ниже нивое и запише која семантика је избачена.
Зашто бележити употребу на нивоу ставке одговора?
Позиви одговора могу укључивати позиве алата, хостоване трошкове алата, токене за образложење, делимичне токове и резервно понашање. Коришћење на нивоу ставке чини наплату, отклањање грешака и анализу закупаца објашњивим.