Yli puoli vuosisataa sitten syntynyt Unix on vaikuttanut merkittävästi modernin teknologian käytäntöihin ja ohjelmistokehityksen menetelmiin. Bell Labsin laboratorioissa alun perin kehitetty Unix kasvoi nopeasti pelkkää käyttöjärjestelmää laajemmaksi kokonaisuudeksi. Se loi kattavan filosofian ohjelmistosuunnittelulle ja järjestelmäsuunnittelulle. Nyt, kun rakennamme ohjelmistokehityksen tulevaisuutta tekoälyn (AI) avulla, Unixin filosofian ydinperiaatteet nousevat jälleen esiin ja ohjaavat agenttipohjaisen tekoälyn kehitystä.
Lauri Palokangas
Lapa is a technology geek and an IT professional who switched to marketing and sales 15 years ago. He runs Eficode’s marketing and communications by day and is involved in behavioral economics research by night. In his free time, he engages in endurance trail running and likes to learn languages.
1. Modulaarisuus: pieni on kaunista
Unix puoltaa yksinkertaisten komponenttien rakentamista ja niiden yhdistämistä selkeillä rajapinnoilla. Periaate tiivistyy näin: "Kirjoita yksinkertaisia osia, jotka on yhdistetty selkeillä rajapinnoilla." Modulaarisuus auttaa hallitsemaan monimutkaisuutta ja mahdollistaa tiimien nopean iteroinnin ilman tarpeettomia kytköksiä. Agenttipohjaiset tekoälyjärjestelmät toteuttavat tätä periaatetta rakentamalla autonomisia tekoälyagentteja ratkaisemaan yksittäisiä ongelmia tai tekemään yhteistyötä niiden ratkaisemiseksi. Agentit toimivat itsenäisesti ja tekevät päätöksiä jatkuvan oppimisen sekä ulkoisten ja monimutkaisten tietoaineistojen analysoinnin pohjalta.
Kun tekoälyagentit noudattavat tätä pienten, atomisten agenttien ydinperiaatetta eli "tekevät yhden asian ja tekevät sen hyvin", kehittäjä voi delegoida toistuvien tehtävien ratkaisemisen agenttipohjaiselle tekoälylle ja vähentää kognitiivista kuormitusta. Tiedostojärjestelmän käyttäminen tietokantana varmistaa yhteentoimivuuden olemassa olevien sovellusten kanssa, parantaa skaalautuvuutta ja helpottaa seuraavan ongelman ratkaisemista toisenlaisen agenttipohjaisen tekoälyratkaisun avulla.
The only way to write complex software that won’t fall on its face is to hold its global complexity down — to build it out of simple parts connected by well-defined interfaces, so that most problems are local and you can have some hope of upgrading a part without breaking the whole.
2. Tekstimuotoiset tietovirrat: läpinäkyvyys on tärkeää
Unix suosii vahvasti tekstipohjaista viestintää sen selkeyden ja virheenkorjauksen helppouden vuoksi. Periaate "Tietovirtojen tulisi mahdollisuuksien mukaan olla tekstimuotoisia, jotta niitä voidaan tarkastella ja suodattaa vakiotyökaluilla" on laajasti käytössä. Tekoälyssä selkeät, tekstipohjaiset vuorovaikutukset ovat yleisiä, mikä näkyy erityisesti JSONin, YAMLin ja prompt engineeringin laajassa käytössä. Unix-hengen mukaisesti mahdollisuus yksityiskohtaiseen tulosteeseen ratkaisun kehityksessä ja vianmäärityksessä vähentää ratkaisua tarkastelevan ja parantavan kehittäjän kognitiivista kuormitusta.
Kun agenttipohjaiset tekoälyjärjestelmät hyödyntävät tekstimuotoisia tietovirtoja ja sovellusten tulosteiden yksityiskohtaisuuden hallintaa, ne saavuttavat paremman yhteentoimivuuden, helpomman integraation ja suoraviivaisemman vianmäärityksen. Nämä ovat keskeisiä etuja monimutkaisten tekoälyympäristöjen hallinnassa. Lisäksi läpinäkyvyys tukee suoraan vaatimustenmukaisuutta ja auditoitavuutta, jotka ovat olennaisia säännellyillä toimialoilla toimiville organisaatioille.
I think that the terseness of Unix programs is a central feature of the style. When your program’s output becomes another’s input, it should be easy to pick out the needed bits. And for people it is a human-factors necessity — important information should not be mixed in with verbosity about internal program behavior. If all displayed information is important, important information is easy to find.
3. Monimutkaiset käyttöliittymät, yksinkertaiset taustajärjestelmät
Unix-käytäntöihin kuuluu monimutkaisten käyttöliittymien ja yksinkertaisemman, vakaan taustalogiikan selkeä erottaminen toisistaan. Käyttöliittymän erottaminen taustalogiikasta varmistaa, etteivät käyttöliittymäkehitykset häiritse tarpeettomasti ydintoimintoja. Samoin agenttipohjaiset tekoälyalustat erottavat selkeästi monimutkaiset päätöksentekoliittymät, kuten keskustelupohjaiset käyttöliittymät ja interaktiiviset hallintapaneelit, vankoista ja ennakoitavista taustakomponenteista. Nämä vastaavat laskennasta, datan käsittelystä ja jatkuvaan oppimiseen perustuvasta autonomisesta päätöksenteosta. Unixille tyypillisen käytännön mukaisesti data siirtyy putkessa prosessilta toiselle, joten agenttipohjaista tekoälymatkaa ei tarvitse aloittaa valtavalla data lake -hankkeella. Oikea lähestymistapa voi olla pienimmän ratkaisemisen arvoisen ongelman tunnistaminen ja tarvittavan tiedon välittäminen agenttien välillä.
Erottelun periaatteiden noudattaminen yksinkertaistaa hallintaa, parantaa järjestelmän palautumiskykyä ja antaa jokaisen kerroksen kehittyä omaan tahtiinsa. Näin se vähentää merkittävästi ylläpidon kuormitusta ja parantaa järjestelmän kokonaisluotettavuutta.
4. Joustavuus syötteissä, tarkkuus tulosteissa
Postelin ohjeen "Ole salliva vastaanottamassasi ja varovainen lähettämässäsi." mukaisesti Unix korostaa joustavuutta syötteiden käsittelyssä ja tarkkuutta tulosteissa. Tämä tasapaino varmistaa laajan yhteensopivuuden ja luotettavuuden erilaisissa järjestelmissä. Agenttipohjaiset tekoälyjärjestelmät noudattavat tätä periaatetta: vankat tekoälyagentit hyväksyvät erilaisia syöttötietoja, mutta validoivat ja standardoivat tulosteensa tarkasti säilyttäen jatkoprosessien laadun ja johdonmukaisuuden. Koska agenttipohjainen tekoäly on luonteeltaan ei-determinististä, tuloste on validoitava ylimääräisellä "oraakkelien" kerroksella ennen kuin se voidaan hyväksyä seuraavan agentin käyttöön.
Tämän periaatteen hyödyntäminen auttaa integroimaan tekoälyjärjestelmiä sujuvammin eri tiimien ja kolmannen osapuolen työkalujen välillä. Samalla se parantaa toiminnan tehokkuutta ja käyttäjien luottamusta.
5. Prototypoi ennen optimointia
Unix suosittelee ratkaisujen nopeaa prototypointia tulkatuilla kielillä, kuten Pythonilla, ennen niiden hiomista ja optimointia käännettävillä kielillä, kuten C:llä. Tämä tiivistyy periaatteeseen: "Prototypoi ennen viimeistelyä. Varmista, että ratkaisu toimii, ennen kuin optimoit sen." Agenttipohjaisen tekoälyn kehitys noudattaa pitkälti samaa käytäntöä: yleensä aloitetaan nopeilla Python-prototyypeillä, joilla testataan autonomisen päätöksenteon kyvykkyyksiä ennen suorituskyvyn kannalta kriittisten osa-alueiden hienosäätöä.
Agenttipohjainen tekoäly noudattaa tätä ajatusta myös korkeammalla abstraktiotasolla. Prosessien automatisointi agenteilla ei onnistu kerralla. Koska agenttien käyttöönottoa voidaan pitää stokastisena prosessina, yksi agentti voi vaikuttaa haitallisesti laajempaan ratkaisuun. Kehittäjän on hallittava tämä ennen etenemistä. Ratkaisuna on soveltaa agenttipohjaista tekoälyä ratkaisuun yksi osa kerrallaan ja oppia, miten se ratkaisee yhä suuremman osuuden kokonaisratkaisusta.
Iteratiivinen ja nopea lähestymistapa agenttipohjaisen tekoälyn kehitykseen sopii hyvin Agile-menetelmiin. Sen avulla tiimit voivat validoida ideoita nopeasti, tunnistaa pullonkauloja ja kehittää tekoälyagentteja tehokkaasti. Se vähentää kalliita ennenaikaisia optimointeja ja pienentää merkittävästi markkinoillepääsyyn kuluvaa aikaa sekä projektiriskiä.
6. Suosi tarvittaessa useita ohjelmointikieliä
Unix tunnistaa, että ohjelmointikielten strateginen yhdistäminen voi yksinkertaistaa ohjelmistokehitystä, erityisesti silloin, kun yhden kielen käyttö lisää monimutkaisuutta. Agenttipohjaiset tekoälyratkaisut hyödyntävät usein useita kieliä ja kehyksiä: Pythonia koneoppimis- ja vahvistusoppimismalleihin, JavaScriptiä käyttöliittymävuorovaikutuksiin sekä YAMLia määrityksiin. Koska kaikki muuttuu lopulta tokeneiksi, myös kuvankäsittely ja tiedon poimiminen kuvista sopivat luontevasti tähän kielivalikoimaan.
Tämä monikielinen lähestymistapa antaa tiimeille mahdollisuuden valita kuhunkin tehtävään sopivimmat työkalut, mikä vähentää monimutkaisuutta, parantaa ylläpidettävyyttä ja lisää kokonaisketteryyttä sekä kehittäjien tuottavuutta.
7. Älä koskaan hylkää tietoa ennenaikaisesti
Unix neuvoo: "Kun suodatat, älä koskaan heitä pois tietoa, jota et tarvitse." Agenttipohjaiset tekoälyjärjestelmät toteuttavat tätä kattavan lokituksen, monitoroinnin ja huolellisen dokumentoinnin avulla. Säilyttämällä yksityiskohtaiset operatiiviset tiedot ja metadatan järjestelmät voivat kehittyä jatkuvasti.
Kattavien tietoaineistojen ja lokien ylläpito mahdollistaa paremman diagnostiikan, tehokkaamman virheenkäsittelyn ja tekoälyratkaisujen tulevaisuudenkestävyyden sekä turvaa näin organisaation investoinnit.
8. Laajennettavuus: suunnittelu tulevaa kasvua varten
Unix korostaa tulevaa laajennettavuutta tukevaa suunnittelua: "Suunnittele tulevaisuutta varten, sillä se saapuu nopeammin kuin uskotkaan." Myös agenttipohjaisten tekoälyalustojen on varauduttava integroimaan tulevia kyvykkyyksiä, laajennuksia ja muutoksia sujuvasti ilman laajoja uudelleenkirjoituksia.
Kun laajennettavuus varmistetaan alusta alkaen, tekoälyinvestoinnit säilyvät merkityksellisinä ja mukautuvina nopeasti muuttuvissa teknologia- ja liiketoimintaympäristöissä. Laajennettavuuden suunnittelu säilyttää strategisen joustavuuden ja mahdollistaa nopeamman sopeutumisen uusiin markkinavaatimuksiin ja teknologisiin edistysaskeliin.
Word and Excel and PowerPoint and other Microsoft programs have intimate — one might say promiscuous — knowledge of each others’ internals. In Unix, one tries to design programs to operate not specifically with each other, but with programs as yet unthought of.
Unix-filosofiaa kestävänä viisautena
Hyvin erilaisella tietojenkäsittelyn aikakaudella kehitetty Unix-filosofia tarjoaa selkeitä, strategisia näkökulmia, jotka ovat vahvasti läsnä nykyisessä agenttipohjaisen tekoälyn maailmassa. Sen periaatteet ovat osoittautuneet hämmästyttävän ennakoiviksi ja vaikuttaneet suoraan autonomisten tekoälyjärjestelmien parhaisiin käytäntöihin: modulaarisuuteen, läpinäkyvyyteen, vastuiden erottamiseen, joustavuuteen syötteiden suhteen, nopeaan prototypointiin, käytännönläheiseen monikielisyyteen, tiedon säilyttämiseen ja laajennettavuuteen.
Käytännön kokemuksesta syntynyt ja vuosikymmenten aikana hioutunut ajaton viisaus tarjoaa vankan perustan agenttipohjaisten tekoälyhankkeiden johtamiseen selkeästi, yksinkertaisesti ja strategisella kaukonäköisyydellä. Näin teknologiapäätöksemme säilyvät tulevaisuudessakin kestävinä, Agile-periaatteiden mukaisina ja vaikuttavina.
P.S. Entä Unix-putket?
Yksi Unix-järjestelmän keskeisistä ideoista on putket: yhden sovelluksen tulosteen yhdistäminen toisen sovelluksen syötteeseen. Koska arvon luominen agenttipohjaisella tekoälyllä perustuu olennaisesti samaan asiaan, eikö olisi perusteltua ajatella, että MCP (Model Context Protocol) on putkien luonteva jatkumo?
Tarkkaan ottaen MCP ja Unix-putket perustuvat pohjimmiltaan erilaisiin konsepteihin:
Unix-putket ovat luonteeltaan lineaarisia, deterministisiä ja passiivisia. Ne noudattavat eksplisiittisiä sääntöjä, ja jokainen komponentti suorittaa tekstimuotoiselle datalle yksinkertaisen, ennakoitavan tehtävän.
MCP puolestaan on luonteeltaan dynaaminen, tavoiteohjattu ja vuorovaikutteinen. Se tukee agenttien välistä neuvottelua, yhteistyötä ja autonomista päätöksentekoa, joita ohjaavat ennalta määriteltyjen lineaaristen työnkulkujen sijaan kehittyvät tavoitteet ja konteksti.
Vaikka niillä on pinnallisia yhtäläisyyksiä, kuten modulaarisuus ja yhdisteltävyys, MCP ei ole Unix-putkien evoluutio vaan itsenäinen kehityssuunta. Tästä erosta huolimatta kaksi Unix-putkien kehittäjän Doug McIlroyn keskeistä ajatusta elävät agenttipohjaisen tekoälyn maailmassa:
Huolehdi, että jokainen ohjelmisto (agentti) tekee yhden asian hyvin. Jos ohjelmiston (agentin) odotetaan tekevän jotain muuta, kirjoita sitä varten erillinen ohjelmisto (agentti) sen sijaan, että monimutkaistaisit aiempaa lisäämällä siihen ominaisuuksia.
Oleta, että ohjelmiston (agentin) tulostetta käytetään toisen ohjelmiston (agentin) syötteenä, vaikka et vielä tietäisi, mikä kyseinen ohjelmisto (agentti) on. Älä kuormita tulostetta. Vältä tiukasti sarakkeisiin jaettuja tai binäärisiä syötemuotoja. Älä pyri vuorovaikutteisuuteen.The Bell System Technical Journal. Bell Laboratories. M. D. McIlroy, E. N. Pinson, and B. A. Tague. “Unix Time-Sharing System Forward”. 1978. 57 (6, part 2). p. 1902.
- DevOps
- AI
Subscribe to our newsletter
Related blogs