AI treba kontekst vašeg koda, a ne samo vaše upite
Većina neuspjeha umjetne inteligencije u radu na softveru nisu neuspjesi upita. To su neuspjesi konteksta.
Model može napisati uvjerljiv kod na temelju dobro sročenog zahtjeva, ali uvjerljivost nije isto što i ispravnost. Ne zna automatski koja usluga upravlja nekim poljem, koja je migracija već pokrenuta, koja je verzija biblioteke fiksirana, zašto postoji naizgled suvišna provjera ili što se mora dogoditi ako ovisnost prekorači vrijeme čekanja. Ti detalji žive u bazi koda, njezinim alatima, operativnim navikama i ljudima koji je održavaju.
Korisno pitanje nije: „Koji upit trebamo dati umjetnoj inteligenciji?” Ono glasi: „Koji je kontekst ovom sustavu potreban da donese sigurnu odluku?”
Upiti opisuju namjeru; kontekst definira stvarnost
Upit može glasiti: „Dodaj mehanizam ponovnog pokušaja kada pružatelj usluge plaćanja nije dostupan.” Time se utvrđuje namjera, ali većina inženjerskog posla ostaje neriješena.
Trebaju li se ponovni pokušaji odvijati u HTTP rukovatelju, pozadinskom radniku ili korisniku reda? Koji su neuspjesi prolazni? Je li operacija plaćanja idempotentna? Definira li postojeća biblioteka za ponovne pokušaje već pravila odgode? Što se događa nakon posljednjeg pokušaja? Može li ponovni pokušaj slučajno dvaput naplatiti korisnika?
Generički model može proizvesti kod koji izgleda razumno, a pritom krši jedno od tih ograničenja. Sustav svjestan konteksta može pregledati postojeće granice i djelovati unutar njih. Ta je razlika daleko važnija od toga je li izvorni upit sadržavao domišljatu frazu.
U praktičnom smislu, kontekst može uključivati strukturu repozitorija, relevantne izvorne datoteke, testove, konfiguraciju izgradnje, verzije ovisnosti, API ugovore, sheme baze podataka, konvencije implementacije, nedavne promjene, operativne priručnike i zahtjeve iz zadataka. Uključuje i negativno znanje: pravila o tome što se ne smije mijenjati.
Dajte umjetnoj inteligenciji ograničen radni skup
Više konteksta nije uvijek bolje. Ubacivanje cijelog repozitorija u radni tijek umjetne inteligencije može preplaviti korisni signal, izložiti materijal koji nije relevantan za zadatak i otežati provjeru rezultata. Cilj je ograničen radni skup: dovoljno informacija za sigurno zaključivanje, ograničeno na trenutačnu promjenu.
Za ispravak pogreške taj radni skup može sadržavati test koji ne prolazi, implementaciju koja se testira, pozivatelja koji joj dostavlja ulaze, relevantne definicije tipova i sažet opis očekivanog ponašanja. Za zadatak implementacije može uključivati konfiguraciju usluge, proces izgradnje artefakta, varijable ciljnog okruženja i postupak vraćanja na prethodno stanje.
Počnite s ugovorom
Prije nego što zatražite od umjetne inteligencije da promijeni kod, učinite ugovor izričitim. Navedite vidljivo ponašanje koje mora proizaći, ograničenja koja se ne smiju prekršiti i način na koji će se uspjeh provjeriti.
- Definirajte ponašanje ulaza, izlaza i pogrešaka.
- Navedite postojeća sučelja, module ili naredbe koje su u opsegu.
- Utvrdite ograničenja vezana uz sigurnost, privatnost, performanse i kompatibilnost.
- Navedite testove, provjere ili kriterije pregleda koji trebaju potvrditi promjenu.
- Istaknite nesigurne pretpostavke umjesto da sustavu dopustite da potajno izmišlja odgovore.
To nije birokracija. To je ista disciplina koju bi tehnički voditelj primijenio pri dodjeljivanju posla drugom inženjeru. Umjetna inteligencija čini tu disciplinu vidljivijom jer se nejasnoća brzo pretvara u rezultat koji djeluje samouvjereno.
Kontekst treba dolaziti u slojevima
Pouzdan radni tijek s umjetnom inteligencijom obično se sužava od široke orijentacije prema lokalnim dokazima. Najprije utvrdite što je sustav i gdje pripada zatražena promjena. Zatim pružite datoteke i sučelja koja upravljaju ponašanjem. Na kraju uključite testove i operativne detalje koji određuju je li implementacija doista prihvatljiva.
Razmotrite zahtjev za dodavanje zapisivanja revizije promjena dozvola. Modelu je potrebno više od kontrolera koji prima zahtjev. Možda su mu potrebni politika autorizacije, konvencija domenskih događaja, apstrakcija za zapisivanje ili prijenos događaja, pravila redakcije i testovi koji pokazuju koja se polja nikada ne smiju zabilježiti. Bez tih slojeva može dodati zapis u dnevnik koji stvara problem s privatnošću ili zaobilazi uobičajeni revizijski trag aplikacije.
Slojeviti kontekst također poboljšava pregled. Recenzent može pitati slijedi li predložena promjena dostavljeni ugovor i lokalne konvencije, umjesto da pokušava procijeniti veliku, nepovezanu zakrpu na temelju intuicije.
Alati pomažu samo kada su granice jasne
Agenti umjetne inteligencije koji mogu pretraživati kod, pokretati testove, pregledavati dokumentaciju ili pripremati promjene sposobniji su od samog razgovora. Mogu pratiti reference, otkrivati postojeće pomoćne alate i testirati kompajlira li se implementacija. No pristup alatima nije zamjena za inženjerske granice.
Dajte agentu najmanju ovlast koja mu je potrebna. Čitanje izvornog koda i pokretanje usmjerenog skupa testova može biti primjereno za istragu. Mijenjanje produkcijske konfiguracije, slanje vanjskih zahtjeva ili implementacija usluge zahtijevaju znatno viši prag. Sustav treba znati kada stati i zatražiti pregled.
To je načelo osobito važno kod nepovratnih radnji. Agent možda može izraditi migraciju baze podataka, ali ne bi trebao pretpostaviti da je migracija sigurna za veliku tablicu, kompatibilna sa starijom verzijom aplikacije ili reverzibilna tijekom incidenta. To su odluke o implementaciji, a ne samo zadaci generiranja koda.
Učinite provjeru dijelom zahtjeva
Najjači rad potpomognut umjetnom inteligencijom ima ugrađen put do opovrgavanja. Umjesto da tražite samo implementaciju, zatražite najmanje relevantne testove, očekivane načine neuspjeha i sažetak pretpostavki. Zatim neovisno pregledajte pretpostavke koje se odnose na poslovna pravila, sigurnost, integritet podataka i vanjske nuspojave.
Primjerice, zahtjev za rukovanje neuspjelom isporukom webhooka trebao bi zahtijevati odgovore na praktična pitanja: Je li rukovatelj idempotentan? Jesu li ponovni pokušaji ograničeni? Je li događaj sigurno dedupliciran? Je li neuspjeh vidljiv operaterima? Ne uspijeva li neispravan sadržaj bez izlaganja osjetljivih podataka? Uspješan test sretnog puta ne rješava ta pitanja.
Umjetna inteligencija može ubrzati implementaciju i otkriti previdjene grane. Ne može ukloniti potrebu za odgovornošću za rezultat. Osoba ili tim koji isporučuje promjenu i dalje je odgovoran za određivanje što „ispravno” znači u okružujućem sustavu.
Izgradite kontekst kao sposobnost proizvoda
Timovi često tretiraju kontekst kao nešto što pojedini programeri nose u svojim glavama. To loše funkcionira za ljude, a još gore za umjetnu inteligenciju. Vrijedan kontekst treba učiniti dostupnim za otkrivanje: jasne granice modula, aktualna dokumentacija, smisleni testovi, izričito vlasništvo, predvidljive naredbe za izgradnju i sažeti operativni priručnici.
Ta ulaganja istodobno poboljšavaju uvođenje novih članova, preglede, odgovor na incidente i automatizaciju. Baza koda koja je čitljiva agentu umjetne inteligencije obično je čitljivija i sljedećem inženjeru koji se pridruži timu.
Budućnost razvoja potpomognutog umjetnom inteligencijom neće odrediti najrazrađeniji upit. Odredit će je to pružamo li inteligentnim sustavima pouzdan uvid u rad: ciljeve, ograničenja, dokaze i granice njihovih ovlasti. Upiti započinju razgovor. Kontekst čini odgovor vrijednim isporuke.