
Skriuwen · 3 maaie 2023
AI brûke om koade te generearjen
Programmearje mei superkrêften
As ûnderdiel fan myn ynspanningen om software te optimalisearjen en cloudkosten te besunigjen, moast ik in besteand, net bot effisjint stik serversoftware ferfange troch wat dat gebrûk makket fan robúustere (mar fersnippere) ark yn Debian GNU/Linux. Koe it taalmodel GPT4 my in bytsje AI-magy leverje? Lês mei!
In diel fan de cloudtsjinsten fan myn bedriuw is de saneamde "Lemmid Manager", in yntegrearre ynhâldsbehearsysteem dat rauwe ynfier (tekst, fideo's, ôfbyldingen) omsmyt ta prachtige, tige flugge statyske websites. Konfrontearre mei tanimmende cloudkosten skriuw ik dielen fan de software om, sadat se effisjinter wurde: minder kompjûterkrêft foar deselde resultaten.
Ôfbyldingen draaie
Miskien wist do it net, mar as do mei dyn tillefoan in foto makkest, wurdt dy altyd lizzend (of breedbyld) bewarre. As do in steande (of oprjochte) foto makkest, foeget dyn tillefoan gewoan in bytsje ekstra ynformaasje ta oer hoe't do de kamera holdst, sadat de foto ek goed stiet as do him letter wer besjochst. It is flugger om ien bytsje (ekstra) ynformaasje te skriuwen as om de bits en bytes fan dyn ôfbylding sels te draaien.
Sa lang as de foto op dyn tillefoan bliuwt is dat alles prima, mar as men him op in website sette wol, moat er optimalisearre wurde foar it web. De werklike bits en bytes moatte dan oerienkomme mei de werklike ynhâld fan de foto. De ôfbylding kin dan fierder optimalisearre wurde foar laadsnelheid en foar ferskillende skermgruttes.
Automatysk draaie op grûn fan EXIF
Moderne (smartphone)kamera's bewarje de oriïntaasje yn de saneamde EXIF dy't by de eigentlike ôfbyldingsgegevens heart. Om de ôfbylding (de bits en bytes) de oriïntaasje fan de kamera goed werjaan te litten, moat men de EXIF-gegevens lêze en op grûn fan de oriïntaasje in draaialgoritme op de bits en bytes fan de ôfbylding tapasse.
De hjoeddeistige oplossing
De oarspronklike (hânmakke) oplossing brûkt NodeJS en in module mei de namme "lwip" (LightWeight ImageProcessor) om dit te dwaan. Dat wurket yn de measte gefallen prima, mar sûnt ôfbyldings grutter wurden binne (troch mear megapixels), is de behoefte oan wurkgeheugen flink tanommen. It neidiel fan alles yn ien NodeJS-proses dwaan is dat it hiele ding in bytsje in geheugenfretter wurdt: de hiele NodeJS-backend hat der lêst fan as do him oan syn limiten brocht mei it ferwurkjen fan tûzenen foto's.
In gewoane strategy om flessehalzen yn software oan te pakken is om se út it haadprogramma te heljen. Yn stee fan ôfbyldings yn NodeJS sels te ferwurkjen, wol ik gewoane ark fan Debian GNU/Linux (dy't har bewiisd hawwe) brûke foar it automatysk draaien. Út NodeJS kin ik dan de eksterne 'auto_rotator' oanroppe en wachtsje oant er klear is. As in NodeJS-proses op in asynchroan resultaat (callback) wachtet, is it fuortdaliks wer beskikber foar oare fersiken.
GPT4 as koadegenerator
It moaie fan frije (as yn libre) software is dat der safolle boustiennen binne dy't do brûke kinst om dyn eigen programma's mei te bouwen. Ik wist dat Debian GNU/Linux ark hat dat ôfbyldings op grûn fan EXIF-gegevens draaie kin. De útdaging is om ien skript te meitsjen dat dizze ferskillende ark gearwurkje lit en tagelyk goed omgiet mei flaters.
In stee fan my sels djip yn alle beskikbere kommando's en opsjes te ferdjipjen, besleat ik GPT4 te freegjen in skript foar my te generearjen dat presys die wat ik woe, mei standert ark fan Debian GNU/Linux:

Yn in pear sekonden generearre GPT4 fan OpenAI in bash-skript dat ImageMagick (in gewoan grafysk ark) brûkt om op grûn fan de EXIF-gegevens wizigingen oan in opjûn ôfbyldingsbestân oan te bringen. De AI keas "exiftool" om de oriïntaasjegegevens te lêzen en liet op grûn fan de útfier fan dat ark it kommando "convert" fan ImageMagick rinne om de goeie rotaasje ta te passen.

De folsleine koade (dy't yn sekonden generearre waard) is prachtich fan kommentaar foarsjoen, wat dy in poerbêst gefoel jout fan wat der bart. It is opboud en optimalisearre foar minsken om te lêzen.
Dokumintaasje
Neist de eigentlike wurkjende koade levere de AI dokumintaasje dy't útlis jout oer hoe't do de nij generearre software brûke kinst, ynklusyf ynstallaasje-ynstruksjes. Dat is wat dat de measte programmeurs oersjogge (technyske dokumintaasje is faak in neigedachte).

Konklúzje
Yn in pear minuten hie ik in wurkjend, dokumintearre stik koade dat in flessehals yn in stik cloudsoftware oplost. Dat is gewoan geweldich: it besparre my tiid (dy't ik doe brûkt haw om dit blogberjocht te skriuwen).
Men kin him allinnich mar ôffreegje wat foar effekt grutte taalmodellen as ChatGPT/GPT4 hawwe sille op hoe't wy wurkje. Ik omearmje AI-ark folslein: witte hoe't men se brûkt, sil yn de hiel tichte takomst essinsjeel wêze (tink ik)!
