Darbo užrašai

Agentiniai mokėjimai žmogaus nustatytomis taisyklėmis

Agentiniai mokėjimai — tai mokėjimai, kuriuos inicijuoja programinė įranga, o ne žmogus prie atsiskaitymo. DI agentas turi prieigos duomenis, nusprendžia, kad pirkimas turi įvykti, ir pats perveda pinigus — apmoka sąskaitą, atnaujina prenumeratą, užsako čarterį — be žmogaus paskutinio paspaudimo. Skiriamasis bruožas — iniciatorius. Žmogus, spaudžiantis „pirkti“, yra įprastas kortelės mokėjimas su pokalbių robotu priekyje; agentinis mokėjimas — kai sprendžia, patvirtina ir atsiskaito pati programinė įranga tuo metu, kai pinigai iš tikrųjų juda. Viskas, kas šioje kategorijoje sudėtinga, kyla iš šios vienos savybės: leidžia ne žmogus, ir jis nepavargsta, neįtaria ir nesijaudina taip, kaip žmogus prieš pervesdamas pinigus nepažįstamajam.

Todėl įdomus klausimas niekada nebuvo, ar agentai leis pinigus — jie jau gali. Klausimas, kas nustato taisykles, pagal kurias jie leidžia, ir ar tas taisykles užtikrina platforma, ar tik pažada pats agentas.

Klaidos scenarijus akivaizdus — ir tai esmė

Duokite agentui veikiantį mokėjimo raktą be viršutinės ribos — ir jūs sukūrėte dar neįvykusį sukčiavimo incidentą. Klaida nėra egzotiška. Tinklalapyje paslėpta prompt injection ataka liepia agentui sumokėti užpuolikui. Netaisyklingas įrankio aprašymas nukreipia teisėtą pirkimą ne tam gavėjui. Kartojimo ciklas tūkstantį kartų bando nuskaityti tą patį mokestį, nes sėkmės signalas negrįžo. Nė vienam iš jų nereikia gudraus priešininko — tai įprastos autonominės programinės įrangos klaidos, tik rezultatas — pinigai, išeinantys iš jūsų sąskaitos.

Viliojantis sprendimas — padaryti agentą atidesnį: geresnį sistemos promptą, griežtesnį nurodymą, modelį, kuris giliau svarsto apie išlaidas. Tai kontrolę deda į mažiausiai patikimą sistemos vietą — paties agento mąstymą, būtent tą, kurį galima įtikinti. Biudžetas, kurį agentas gali apeiti ginčydamasis, nėra biudžetas. Kontrolė turi būti ten, kur agentas jos nepasiekia, t. y. visiškai už agento ribų.

Politika yra produktas, o ne promptas

Apribojimo modelis — tai politika, kurią platforma vykdo prieš pinigams pajudant, o ne po to, kai agentas jau nusprendė. Kiekvienas agentas turi limitą vienam sandoriui ir dienos limitą — mūsų demonstracinėje politikoje 150,00 € už mokėjimą, 500,00 € per dieną — ir 6 000,00 € mėnesio lubas virš jų. Tai kietos sienos, kurias tikrina platforma, o ne agento duoti pažadai. Kai demonstracijos kelionių robotas bandė užsakyti čarterį už 640,00 €, mokėjimas buvo atmestas vietoje: viršytas limitas, dar nepajudėjus nė centui. Agentas, kasdien elgiantis nepriekaištingai, vis tiek negali nuklysti už to, ką leidžia mėnuo.

Biudžetas nusako, kiek; leidžiamųjų sąrašas — kam. Agentai moka tik jūsų iš anksto nurodytiems prekybininkams. Demonstracinis Ops Agent žino lygiai keturis, o 180,00 € bandymas sumokėti sąraše nesančiam tiekėjui buvo atmestas kaip nesantis sąraše. Kartu jie nubrėžia dėžę: tiek pinigų, tik šiems gavėjams. Dėžės viduje agentas veikia visu greičiu ir niekada neturi klausti; dėžė — tai, kas priklauso žmogui.

Klausimas niekada nėra, ar DI agentas leis pinigus. Klausimas — kas parašė taisykles, pagal kurias jis leidžia, — ir atsakymas visada turėtų būti: žmogus, iš anksto, raštu.
— Protocore · Agents inžinerija

Žmogus virš ribos

Kai kurie sprendimai per dideli dėžei. Todėl politikoje yra slenkstis: nurodyta suma, nuo kurios žmogus privalo patvirtinti prieš vykdant mokėjimą. Demonstracijoje riba yra 100,00 €. Kai Ops Agent pažymėjo Nord Logistics sąskaitą #088 — 120,00 €, kuri puikiai telpa į 500,00 € dienos biudžetą, bet viršija patvirtinimo ribą — jis nemokėjo. Jis sustojo, pateikė pasiūlymą žmogui ir laukė. Vienos eilutės atsakymas jį patvirtino; mokėjimas įvykdytas su nuoroda 9F21-0716 ir 09:41 pateko į audito žurnalą. Žemiau ribos agentas veikia pats; virš jos pirmas atsako žmogus.

Patvirtinimas nėra varnelė, kuri išgaruoja. Jis fiksuoja, kas patvirtino, kuriame įrenginyje, kada ir su kokiu parašu — patvirtinta programėlėje, telefono raktas, 09:41:12. Kai vėliau kas nors paklausia, kodėl mokėjimas įvyko, atsakymas yra konkretus asmuo ir laiko žyma, o ne gūžtelėjimas.

Avarinis jungiklis ir žurnalas, kurio negalima tyliai pakeisti

Net už gerų sienų agentai klysta, o politikos pasirodo esančios neteisingos. Tai suvaldo dvi kontrolės. Pirma — avarinis jungiklis: vienu paspaudimu agentas sustabdomas ir iškart blokuojamas kiekvienas mokėjimas, kurį jis galėtų inicijuoti. Raktai lieka galioti, todėl niekas kitas nesugenda — agentas tiesiog negali leisti pinigų, kol žmogus jo vėl neįjungs, o laukiantys pasiūlymai sustoja vietoje, o ne dingsta. Demonstracijos parke kelionių robotas stovi sustabdytas, išleidęs 0,00 €, o jo eilė nepaliesta.

Antrasis – tik papildomas (append-only) audito žurnalas. Kiekvienas sprendimas įrašytas: ką agentas bandė daryti, kuri politikos patikra buvo sėkminga ar ne, kas ką patvirtino, net iki raktų rotacijų. Vienas įrašas atkuria visą mokėjimą – sprendimas DEC-4471 rodo užklausą, kiekvieną politikos patikrą su rezultatu (leidžiamųjų sąrašas – pass, limitas – pass, slenkstis – escalate), žmogaus parašą ir įvykdytą sumą su jos kanalu (rail) bei nuoroda. Kiekvienas įrašas turi savo maišą (hash), ankstesnio įrašo maišą ir vietą grandinėje – demonstracinėje versijoje #4,471 – todėl pakeitus bet kurį lauką sugenda visi vėlesni įrašai. Žurnalas eksportuojamas JSON formatu kartu su maišu: jį galite perduoti auditoriui patys, mums jo laikyti nereikia.

Atsiskaitymą palikite nuobodų, naujoves – autorizacijai

Kyla pagunda agentinius mokėjimus padaryti naujus iki pat pamatų – nauja mokėjimo trasa, naujas instrumentas, naujas pinigų judėjimo būdas. Atsispirkite. Tikrai nauja yra autorizacija: kaip agentas įrodo, kad turi teisę mokėti, pagal kieno politiką ir su kokiu patvirtinimu. Kai tik mokėjimas praeina šią kontrolę, jis turi būti įvykdytas trasomis, kurios jau daug metų yra nuobodžios. Demonstracinėje versijoje patvirtintas €120.00 pasiūlymas tampa įprastu SEPA kredito pervedimu – SEPA Instant įvykdo jį praėjus kelioms minutėms po patvirtinimo – ir tolesnėje grandinėje jo neįmanoma atskirti nuo žmogaus atlikto mokėjimo. Bankas nežino ir jam nerūpi, kad jį inicijavo agentas.

Šis skyrimas sąmoningas. Nuobodžios trasos yra nnuspėjamos, atšaukiamos ten, kur tai leidžia schema, ir suprantamos kiekvienam iždui bei auditoriui, su kuriais kada nors teks dirbti. Kai naujovės telpa politikoje, o mokėjimas keliauja jau išbandyta trasa, rizikinga ir greitai besikeičianti dalis yra ta, kurią visiškai valdote jūs, o dalis, liečianti kitų bankus, – ta, kurios niekam nereikia mokytis iš naujo. Agentai išleidžia pinigus iš to paties branduolio, kuriame veikia visa kita mokėjimų šeima – jis aprašytas /products/pay – o ne iš paralelinio pasaulio, sukurto robotams.

Protokolų kraštovaizdis dar nenusistovėjęs – kurkite tai numatydami

Kaip agentas turėtų pateikti savo tapatybę ir įgaliojimą pardavėjui, dar atviras klausimas. Keli pasiūlymai konkuruoja dėl to, kaip agentas įrodo, kas jis yra, ką jam leista pirkti ir kaip pardavėjas tai patikrina prieš priimdamas pinigus. Nė vienas dar nenugalėjo, o šiandien statyti viską ant vieno iš jų būtų per anksti. Saugiausia laikysena – autorizacijos protokolą laikyti keičiamu, o viską už jo išlaikyti stabilų: politikų variklis, audito modelis ir atsiskaitymo trasa nesikeičia, kai priekyje keičiasi duomenų formatas.

Praktiškai tai reiškia mažą, nuobodų integracijos paviršių. Agentai jungiasi per MCP adresu mcp.protocore.io/agents; piniginę gali turėti bet kuris karkasas, kalbantis šiuo protokolu. Sąsaja sąmoningai siaura – pasiūlyti mokėjimą, gauti sprendimą – nes įdomioji logika yra platformoje, o ne prompte. Kai pramonė susitars, kaip agentai įrodo save pardavėjams, pasikeis priekinė dalis, o už jos esančios sienos liks tose pačiose vietose.

Kur tai telpa

Agentiniai mokėjimai nėra lažinimasis, kad autonominė programinė įranga turėtų leisti pinigus be apribojimų. Tai visiška priešingybė: lažinimasis, kad programinė įranga pinigus leis, todėl apribojimai turi būti tikri, išoriniai ir aiškūs. Biudžetai ir leidžiamųjų sąrašai nubrėžia ribas, slenkstis dideles sumas nukreipia žmogui, avarinis jungiklis (kill-switch) sustabdo viską, o tik papildomas žurnalas leidžia vėliau atkurti kiekvieną mokėjimą. Produkto puslapyje /products/agents visas ciklas parodytas su čia naudojamais demonstraciniais duomenimis – sukuriate agentą, nustatote jo politiką, stebite, kaip mokėjimas eskaluojamas ir įvykdomas – o /products/pay yra branduolys, kuriame šie mokėjimai vyksta. Autonomija tikra; tikras ir pavadėlis, o jį laiko žmogus.

Turite sistemą, kurią reikia sukurti?

Papasakokite apie problemą. Grįšime su architektūra ir planu.