Umjetna inteligencija (UI)

AI Agents: Engineering Software That Actually Gets Things Done

AI agenti: razvoj softvera koji zaista obavlja zadatke

AI agente lako je zamijeniti za chatbotove s boljim brendiranjem. Ta pogreška dovodi do razočaravajućih implementacija: uglađenog sučelja koje može objasniti zadatak, ali ga ne može pouzdano dovršiti. Agent postaje koristan kada može pretvoriti cilj u kontrolirani slijed radnji — prikupljanje konteksta, donošenje ograničenih odluka, korištenje alata, provjeravanje ishoda i traženje pomoći kada je razina pouzdanosti niska.

Inženjerski izazov nije samo odabrati sposoban model. Riječ je o dizajniranju sustava koji može djelovati u stvarnom svijetu, a da pritom ne postane nepredvidiv, skup ili nesiguran. Najuspješniji agenti obično su manje magični nego što demonstracije sugeriraju. Usko su usmjereni ondje gdje to trebaju biti, izričiti u vezi sa svojim dopuštenjima i okruženi konvencionalnim softverom koji pruža memoriju, validaciju, vidljivost i zaštitne mehanizme.

Počnite od posla, a ne od osobnosti

Produktivan agent treba biti definiran konkretnom jedinicom rada. „Pomozite našem timu za podršku” preširoko je. „Sastavite odgovor na pitanje o naplati koristeći podatke o računu i trenutačnu politiku, a zatim ga proslijedite na odobrenje” problem je dizajna sustava koji se može procijeniti.

Dobri početni kandidati dijele nekoliko obilježja: zadatak se često ponavlja, ulazni podaci razumno su dostupni, čovjek već zna kako izgleda dobar ishod, a pogreške se mogu ograničiti. Primjeri uključuju razvrstavanje pristiglih problema, izdvajanje strukturiranih pojedinosti iz dokumenata, pripremu sažetaka incidenata, provjeru pull requestova prema timskom popisu za provjeru ili sastavljanje prve verzije ažuriranja za korisnika.

Takve primjene ne uklanjaju prosudbu. Premještaju rutinski pripremni rad u brži ciklus, ostavljajući ljudima rad s iznimkama, odobrenjima i odlukama sa značajnim posljedicama.

Razmišljajte u ciklusima: promatraj, odluči, djeluj, provjeri

Agenta je najbolje razumjeti kao ciklus, a ne kao jedan prompt. Promatra relevantno stanje, odlučuje što učiniti sljedeće, poziva alat ili stvara izlaz te provjerava je li radnja postigla namjeravani rezultat. Ako provjera ne uspije, trebao bi pokušati ponovno samo kada je to razumno, odabrati drugi put kada je moguće ili eskalirati.

Na primjer, agent kojem je zadano ažuriranje alata za praćenje projekta ne bi trebao samo pozvati alat za ažuriranje nakon čitanja poruke. Robusniji tijek je:

  1. Identificirati navedeni projekt i radnu stavku.
  2. Dohvatiti trenutačno stanje stavke i potvrditi da ispunjava uvjete za zatraženu promjenu.
  3. Izdvojiti predložena polja u strukturirani prikaz.
  4. Validirati obavezna polja, dopuštene vrijednosti i ovlasti korisnika koji podnosi zahtjev.
  5. Primijeniti ažuriranje s ključem idempotentnosti ili drugim mehanizmom za sprječavanje dupliciranja.
  6. Ponovno pročitati stavku i potvrditi da spremljeno stanje odgovara zahtjevu.
  7. Zabilježiti događaj revizije te izvijestiti o rezultatu ili razlogu eskalacije.

Većina tog tijeka poznata je iz inženjerstva aplikacija. Model je vrijedan u nejasnim dijelovima: tumačenju jezika, odabiru među dopuštenim radnjama i sažimanju neurednih informacija. Deterministički kod treba upravljati pravilima koja uvijek moraju vrijediti.

Dizajn alata određuje pouzdanost

Agenti ne postaju pouzdani samo zato što model može pozivati funkcije. Sami alati trebaju pažljivo definirane ugovore. Neodređen alat poput update_record(data) traži od modela da previše toga nagađa. Usmjeren alat poput set_ticket_priority(ticket_id, priority, reason) smanjuje nejasnoću i čini validaciju jednostavnom.

Alati trebaju biti mali, tipizirani i izričiti u vezi s nuspojavama. Opišite ulaze, ograničenja, očekivane izlaze i uvjete neuspjeha. Vraćajte korisne pogreške umjesto generičkih neuspjeha. „Ticket je već zatvoren” daje agentu priliku da odabere prikladan sljedeći korak; „zahtjev nije uspio” ne daje.

Odvojite čitanje od pisanja

Operacije čitanja obično je lakše široko izložiti. Operacije pisanja zaslužuju strože kontrole. Agentu može biti dopušteno pretraživati dokumentaciju i dohvaćati podatke o računu, dok slanje e-pošte, promjena pristupa, izdavanje povrata novca ili implementacija koda zahtijevaju potvrdu ili usko definiranu politiku.

Ovo razdvajanje također poboljšava otklanjanje pogrešaka. Kada agent iznese lošu preporuku, timovi mogu pregledati kontekst i put obrazloženja bez potrebe da poništavaju nepotrebnu vanjsku radnju.

Upotrebljavajte strukturirane izlaze na granicama sustava

Prirodni jezik izvrstan je za komunikaciju s ljudima, a loš kao nevalidirano sučelje između komponenti. Kad god agent predaje rad softveru, prednost dajte shemi. Model i dalje može objasniti svoju odluku prozom, ali sustav bi trebao koristiti validirana polja.

{
  "action": "escalate",
  "ticket_id": "T-1842",
  "reason": "The request changes billing ownership.",
  "requires_human_approval": true
}

Aplikacija bi trebala validirati da je action dopušten, da ticket postoji i da je predloženi prijelaz valjan prije nego što išta učini. Ako raščlanjivanje ili validacija ne uspije, vratite zadatak na ispravak uz konkretnu pogrešku ili ga proslijedite osobi. Nikada nemojte dobro oblikovan JSON tretirati kao dokaz da je zatražena radnja sigurna ili ispravna.

Neka neuspjeh bude ishod prve klase

Sustavi agenata ne uspijevaju na više načina nego obične integracije. Model može pogrešno razumjeti uputu, alatu može isteći vrijeme, dohvaćene informacije mogu biti nepotpune ili nizvodni sustav može prihvatiti zahtjev, ali ne uspjeti prije nego što odgovor stigne do agenta. Dizajniranje samo za idealan put stvara automatizaciju koja djeluje sposobno sve do prvog užurbanog poslijepodneva.

Definirajte što sustav treba učiniti kada ne može nastaviti. Korisni obrasci uključuju ograničene ponovne pokušaje za prolazne pogreške, rokove za dugotrajne tijekove rada, kontrolne točke prije nepovratnih radnji i jasne redove za eskalaciju. Ponovni pokušaji trebaju biti namjerni: ponovni pokušaj čitanja nakon privremenog isteka vremena može biti razuman; ponovni pokušaj plaćanja ili slanja poruke bez strategije idempotentnosti može stvoriti duplikate.

Predaja čovjeku trebala bi uključivati zadatak, relevantne dokaze, pokušane radnje, trenutačno stanje i točno pitanje za koje je potrebna odluka. „Molimo pregledajte” stvara više posla. „Korisnik je zatražio promjenu vlasništva, ali podnositelj zahtjeva nije naveden kao administrator; odobrite ili odbijte promjenu” stvara predaju spremnu za donošenje odluke.

Mjerite ishode, a ne dojmljive razgovore

Agenta treba procjenjivati prema radu koji treba unaprijediti. Pratite kvalitetu dovršavanja, stopu eskalacije, stopu ispravljanja, vrijeme do rješenja, neuspjehe alata i trošak dovršavanja uspješnog zadatka. Pregledavajte uzorke uspješnih i neuspješnih izvršavanja. Niska stopa eskalacije nije automatski dobra ako agent djeluje izvan svojih sposobnosti; odgovarajuća eskalacija može biti dokaz zdravih kontrola.

Izradite reprezentativan skup testova prije proširivanja pristupa. Uključite uobičajene slučajeve, dvosmislene zahtjeve, nedostajuće podatke, sukobljene upute, neispravne odgovore alata i zahtjeve koji se moraju odbiti. Pokrenite iste slučajeve nakon promjena prompta, modela, alata ili politike. Time se iteracija agenata pretvara u inženjersku disciplinu, a ne u ciklus anegdotalnih demonstracija.

Implementacija je odluka o upravljanju

Spremnost za produkciju nije oznaka koju model zaslužuje. To je odluka o riziku, dopuštenjima, nadzoru i vraćanju na prethodno stanje. Počnite s radnjama niskog utjecaja, upotrebljavajte vjerodajnice s najmanjim ovlastima, bilježite pozive alata i odluke o politikama te olakšajte onemogućavanje tijeka rada. Osjetljive podatke treba namjerno svesti na minimum u promptovima i rezultatima dohvaćanja, a ne ih radi praktičnosti uključivati prema zadanim postavkama.

Važno je i jasno vlasništvo. Netko mora biti odgovoran za pravila tijeka rada, ciljeve kvalitete, odgovor na incidente i odobravanje promjena. Agent koji obuhvaća timove bez vlasnika obično nakuplja iznimke sve dok mu više nitko ne vjeruje.

Korisna budućnost promišljeno je projektirana

Trajna vrijednost AI agenata neće proizaći iz sustava koji zvuče autonomno. Proizaći će iz sustava koji pouzdano uklanjaju trenje iz stvarnog rada uz očuvanje odgovornosti. Model može pružiti fleksibilnost, ali pouzdanost proizlazi iz dobrih sučelja, ograničenih dopuštenja, validiranih promjena stanja i iskrenog postupanja s neizvjesnošću.

To su ohrabrujuće vijesti za softverske timove. Izgradnja sposobnih agenata ne zahtijeva napuštanje ustaljene inženjerske prakse. Zahtijeva njezinu pažljiviju primjenu na granici gdje jezik postaje radnja. Počnite s jednim korisnim tijekom rada, učinite svaku radnju vidljivom i stječite autonomiju korak po korak. Tako agent prestaje biti demonstracija i počinje obavljati posao.

Portret autora bloga

Mihajlo

Ja sam Mihajlo — programer vođen znatiželjom, disciplinom i stalnom željom da stvorim nešto smisleno. Dijelim uvide, tutorijale i besplatne usluge kako bih pomogao drugima da pojednostave svoj rad i rastu u svijetu softvera i umjetne inteligencije koji se neprestano razvija.