· hutor.tech
Kako dodati OpenAI u postojeću PHP aplikaciju
Dodati jezični model u postojeću PHP aplikaciju zadatak je integracije, a ne projekt o umjetnoj inteligenciji. Model je udaljena usluga koja je spora, povremeno nedostupna i naplaćena po tokenima — ponašajte se prema njoj točno kao prema platnom pristupniku i veći dio rješenja slijedi sam.
Počnite jednim uskim zadatkom. „Sažmi ovaj upit“, „izvuci adresu dostave iz ove poruke“, „napiši meta opis za ovaj proizvod“ mogu se isporučiti u jednom danu i lako se ocjenjuju. „Dodati AI na stranicu“ nije zadatak, a projekti koji tako počnu obično završe skupim chat widgetom koji nitko ne koristi.
Ključ držite na serveru i izvan repozitorija. Mjesto mu je u `.env`, čita se kroz `config/services.php` u Laravelu, nikad u JavaScriptu i nikad u predlošku. Ključ koji dođe do preglednika ključ je koji plaća tuđi promet.
API zovite iz reda, ne iz kontrolera. Zahtjev koji čeka model može trajati deset sekundi ili posve isteći; korisnik ne bi smio to čekati. Najprije spremite zapis, stavite zadatak u red, rezultat pokažite kad stigne. U Laravelu je to nekoliko redaka; u starijoj aplikaciji isti posao dovoljno dobro odradi tablica zadataka s workerom iz crona.
Poziv omotajte istom obranom kakvu dajete svakoj vanjskoj usluzi:
— timeout, da spor odgovor ne drži workera zauvijek;
— ponavljanja s odmakom za ograničenja i odgovore 5xx;
— predmemoriju po ulaznim podacima, da isti opis proizvoda ne platite dvaput;
— čvrsto ograničenje na tokene i na broj poziva koje može izazvati jedan korisnik;
— bilježenje identifikatora zahtjeva, potrošnje tokena i cijene.
Tražite strukturiran izlaz kad odgovor koristi vaš kod. Model koji vraća slobodan tekst tjera vas da raščlanjujete prozu; model ograničen JSON shemom vraća polja koja se mogu provjeriti. I svejedno ih provjerite — izlaz jezičnog modela za vašu je aplikaciju korisnički unos i ne smije bez izbjegavanja znakova završiti u SQL-u, naredbama ljuske ni HTML-u.
Na kraju odlučite što se događa kad model pogriješi, jer hoće. Generirani tekst pokazujte kao nacrt koji odobrava čovjek, izvornik čuvajte uz generiranu verziju i neka se sve vrati na staro ponašanje kad je API nedostupan. Integracija koju nitko ne može isključiti na kraju će povući stranicu sa sobom.