tech
Paikallinen AI-chat käyttöliittymä (Docker Desktop & Docker Model Runner)
Olen jo aiemmin testannut omalla läppärillä (Apple Macbook Air M1/16GB) paikallisesta ajettavia kielimalleja ja niiden käyttöliittymiä. Tähän asti järjestelmien käyttöönotto ja ylläpito on ollut monimutkaista (Docker + Ollama -yhdistelmä).
Ollamalla mallit saa käyttöön helposti, mutta sen tarjoama chat-käyttöliittymä jättää toivomisen varaa. Kehittyneemmän käyttöliittymän (OpenWebUI) pyörittäminen taas vaatii rinnalle Dockerin. Dockerin & Ollaman yhteiselo ei ole aina täysin mutkatonta, ja molemmat vaativat myös jatkuvaa päivitystä ja ylläpitoa.
Docker Desktopiin on kesän aikana ilmestynyt Models-valikko, jonka avulla paikallisia malleja voi ladata suoraan Dockerin Hubista. Model Runnerin avulla malleja on mahdollista myös ajaa suoraan Dockerista ilman Ollamaa.
Latasin Docker Hubista Gemma3n-mallin ja loin Docker-kontin tällä docker-compose.yml :llä. (korvaa esimerkin llama-mallia juuri lataamasi mallin tunnisteella)
Kun Docker-kontti on asennettu ja käynnissä, verkkoselaimella osoitteesta localhost:3000 löytyy OpenWebUI:n käyttöliittymä, johon luodaan admin-käyttäjä. Tämän jälkeen käyttöliittymä on valmis, ja se käyttää paikallisesti Docker Hubista ladattua Gemma3n-mallia.
OpenWebUI-käyttöliittymään voi liittää API:lla myös muita kielimalleja verkon yli. Niistä lisää myöhemmin.
Visuaalista p5.js -koodausta ChatGPT:n avulla (pt.2)
Oheista kuvaa varten pyysin (ilmaista) ChatGPT:tä hakemaan yksityiskohtaisia tietoa Suomenlahden majakoista, koostamaan tiedot taulukoksi ja kirjoittamaan sen jälkeen p5.js -koodia taulukon tietojen pohjalta.
Kokeilin samaa jo aiemmin koodieditorilla Google Geminin avustuksella, tässä pelkästään ChatGPT:llä toteutettu versio. Majakoita löytyi Googlen työkaluilla helpommin ja enemmän, mutta olin kyllä rehellisesti yllättynyt miten tiedonhaku ja koodaus onnistuivat yhdessä ja samassa ChatGPT-keskustelussa.
Annoin kaikki pyynnöt ja komennot luonnollisella kielellä, ChatGPT kirjoitti koodin ja muokkasi sitä pyyntöjeni perusteella.
Huom! En ole tarkistanut, ovatko kuvassa esitetyt majakat tarkasti oikeilla paikoilla, onko niiden valo oikeasti tuon väristä ja vilkkuvatko ne animaatiossa esitetyllä tavalla. Kokeilun ideana oli lähinnä testata ChatGPT:n kykyä hakea tietoa ja tuottaa sen pohjalta p5.js-koodia pelkästään luonnollista kieltä käyttämällä.
Aiemmassa blogijulkaisussa kerron tarkemmin, kuinka lähestyin aihetta Geminin ja koodieditorin avulla, ennen kuin kokeilin ChatGPT:tä. tommiska.com/2025/05/0…

Laajat kielimallit ja agenttipohjaiset tekoälyjärjestelmät (toukokuu 2025)
Yleisluontoinen katsaus aiheeseen toukokuussa 2025.
Laajat kielimallit (LLM:t) toimivat pohjimmiltaan tilastollisen päättelyn avulla. Ne analysoivat käyttäjän syötteen ja tuottavat vastauksen arvioimalla, mikä olisi todennäköisin ja tarkoituksenmukaisin jatko annetulle tekstille. Vaikka prosessi on teknisesti monimutkainen, se tapahtuu lähes välittömästi. Tämä nopea ja sujuva toiminta luo vaikutelman aidosta keskustelusta ja luonnollisesta kielenkäytöstä.
Tunnetut tekoälypalvelut kuten ChatGPT, Claude, Copilot ja Gemini ovat kehittyneitä chatbot-pohjaisia käyttöliittymiä. Ne eroavat merkittävästi yksinkertaisemmista, esimerkiksi yritysten asiakaspalvelussa käytettävistä chatboteista. Edistyneempien chatbot-pohjaisten käyttöliittymien erityispiirre on niiden kyky hyödyntää myös muita tekoälysovelluksia (esim. kuvien generointi ja konenäkö) sekä erikoistuneita työkaluja (esim. tiedonhaku) tehtävien suorittamisessa.
Käyttäjän kehotteet & kehotteiden suunnittelu Hyvän kehotteen voi muotoilla esim. seuraavasti
- Suorat käskyt:”Tiivistä tämä muistio viidellä lauseella”.
- Roolipohjaiset ohjeet: ”Toimi kokeneena alan x asiantuntijana. Hahmottele ohessa kuvatun projektin tärkeimmät vaiheet”
- Askel-askeleelta ohjeet: ”Tiivistä ensin muistiinpanot yhteen kappaleeseen, listaa sitten kolme pääasiallista toimenpidettä”. Tehtävät voi usein jakaa myös peräkkäisiin prompteihin.
Rakenteelliset kehotepohjat (esim. CO-STAR)
- Context Oleelliset taustatiedot (esimerkit ja tausta-aineistot)
- Objective Tavoite tai tehtävä (esim. esseekirjoitus, mainosteksti tai raportti)
- Style Tekstin tyylilaji (esim. humoristinen, juridinen tai virkakieli)
- Tone Tekstin sävy (esim. lämmin, neutraali tai suoraviivainen)
- Audience Tavoiteltu kohderyhmä
- Response Vastauksen muotoilu (esim. viisi lausetta tai bullet pointit)
Voit lukea lisää promptien eli kehotteiden muotoilusta esimerkiksi:
Hyvän promptauksen periaatteet tietotyön tekijälle
Kielimallien keskeiset rajoitteet ja ratkaisuja niistä aiheutuviin ongelmiin
Kielimallien tunnettuja rajoitteita ovat mm.
- virheellisen tiedon tuottaminen (hallusinaatiot)
- tietopohjan vanheneminen koulutusajankohdan jälkeen
- puutteellinen kyky viitata käytettyihin lähteisiin
- tietosuojaan liittyvät kysymykset
- rajallinen kyky käsitellä laajoja aineistoja kerrallaan
Rajoitteista seuraavia ongelmia voidaan kuitenkin hallita erilaisin keinoin. Tietosuojariskejä minimoidaan systemaattisella tiedonhallinnalla ja selkeillä tietoturvakäytännöillä. Kielimallien toimintaa voidaan tehostaa hyödyntämällä hakupohjaista generointia (RAG, Retrieval-Augmented Generation) sekä erilaisia tukityökaluja, jotka laajentavat mallien käyttömahdollisuuksia ja parantavat niiden luotettavuutta.
Agenttipohjaiset tekoälyjärjestelmät
Agenttipohjainen tekoäly edustaa merkittävää kehitysaskelta perinteisiin tekoälymalleihin verrattuna. Siinä missä tavanomaiset tekoälyt keskittyvät lähinnä vastausten tuottamiseen, agenttipohjainen tekoäly kykenee itsenäiseen toimintaan, päätöksentekoon ja ongelmanratkaisuun. Uusimman sukupolven chatbot-sovellukset hyödyntävät näitä kehittyneitä ominaisuuksia. Näitä sovelluksia kutsutaan päättelymalleiksi (Reasoning Models), sillä ne pystyvät jäljittelemään ihmismäistä päättelykykyä ja soveltamaan tietoa johdonmukaisesti erilaisten ongelmien ratkaisemisessa.
Agenttipohjaisen tekoälyn soveltamismahdollisuudet ovat laaja-alaiset. Sitä voidaan hyödyntää tehokkaasti esimerkiksi ohjelmistokehityksen tukena, tieteellisessä tutkimustyössä sekä erilaisten toistuvien työtehtävien automatisoinnissa.
Agenttipohjaisten järjestelmien neljä keskeistä toimintaperiaatetta
- Ennakoiva suunnittelu: Järjestelmä suunnittelee toimenpiteet huolellisesti ennen varsinaista toteutusvaihetta
- Systemaattinen arviointi: Järjestelmä arvioi ja analysoi toimintaansa prosessin eri vaiheissa
- Työkaluintegraatio: Järjestelmä hyödyntää tarkoituksenmukaisia erikoistyökaluja tehtävien suorittamisessa
- Moniagenttitoiminta: Useat tekoälyagentit toimivat yhteistyössä joko peräkkäisinä ketjuina, keskitetysti johdettuina tai rinnakkaisina toimijoina
Vaikka et käyttäisi AI-agentteja, voit myös itse hyödyntää samoja periaatteita kielimallien avulla työskennellessäsi.
Visuaalista koodausta AI:n avustuksella
Suomenlahden majakat visualisoituna p5js-koodilla editor.p5js.org/atommi/fu…
Ethan Mollickin tuore julkaisu esitteli OpenAI O3 -kielimallin kyvykkyyksiä. Siitä inspiroituneena kokeilin muita kielimalleja ja itselle ennestään tuttuja työkaluja.
Anthropic Claude 3.7 piirsi svg-kuvan Mollickin promptilla, mutta majakoiden sijainnit olivat Clauden tarjoamassa versiossa päin honkia. Googlen Gemini ei suostunut piirtämään SVG:tä, mutta keräsi majakoiden tiedot taulukkoon ja antoi lisäksi Python-koodin, jolla sai itse generoitua SVG-kuvan. Tämän SVG-kuvan sain helposti käännettyä myös p5js-koodiksi. editor.p5js.org/atommi/fu…
Päädyin lopulta pyytämään Gemini 2.5 pro:lta yksityiskohtaisen taulukon kaikista Suomenlahden majakoista. Tallensin taulukon sellaisenaan .csv muodossa. Yhdessä Gemini 2.5 flashin kanssa sitten “vibekoodailtiin” varsin monimutkainen p5.js -koodi, joka hyödyntää suoraan .csv-taulukon dataa, mm. light characteristic lyhenteillä esitettynä [ Fl(2) W 10s ].
“Koodaamiseen” käytin VS Codea Cline -lisäosalla, sekä Gemini 2.5 Flash APIa, jota voi testata ilmaiseksi. p5js-sketchin hahmottelu ja koodimuutokset toteutin pääosin ohjaamalla prosessia luonnollisella kielellä, eli esitin siis pyyntöjä “tee näin”, “korjaa tämä”, “muuta tämä” jne.
Taulukkoon päätyneiden nimien seassa on myös pari majakkaa, jotka eivät ole aktiivisessa käytössä. Karttapohjan liittäminen skaalautuvaan p5js-sketchiin osoittautui myös haastavaksi, eli en mene takuuseen siitä että kaikki majakat olisivat oikealla sijainnilla.
Linkki Mollickin alkuperäiseen julkaisuun: www.linkedin.com/posts/emo…
