Ainikki kerää uutisia määritellyistä aiheista, valitsee niistä tärkeimmät ja kirjoittaa jokaisesta suomenkielisen tiivistelmän. Prosessi koostuu kymmenestä vaiheesta, joista osa käyttää kielimalleja (tekoälyä) ja osa on determinististä logiikkaa eli perinteistä koodia.
Hakee uutisia lähteestä (tällä hetkellä Hacker News). Suodattaa pois jutut, jotka ovat saaneet vähän pisteitä.
Normalisoi URL-osoitteet ja yhdistää samat linkit toisiinsa.
Kielimalli tunnistaa samasta asiasta kertovat jutut eri lähteistä ja ryhmittelee ne yhteen.
Kielimalli tarkistaa jokaisen ehdokkaan ja pudottaa pois ne, jotka eivät liity käsiteltävään aiheeseen.
Kielimalli valitsee ja järjestää 3–10 uutista arviointikriteerien perusteella. Uutiset, joita on käsitelty viikon sisällä julkaistuissa koosteissa, jätetään pois.
Lataa pisteytyksessä valittujen artikkeleiden sivut ja erottaa niistä varsinaisen artikkelitekstin sivun rakenteesta (valikot, mainokset, evästeilmoitukset).
Kielimalli kirjoittaa jokaisesta uutisesta otsikon ja suomenkielisen tiivistelmän. Jos rikastaminen tai kirjoitus pudottaa liikaa juttuja, koostetta täydennetään pisteytyksen seuraavaksi parhailla ehdokkailla.
Kielimalli kirjoittaa lyhyen yhteenvedon päivän koosteesta.
Kokoaa tulokset yhteen ja tarkistaa, että kooste on täydellinen ja julkaisukelpoinen.
Kirjoittaa JSON-tiedoston ja varmistaa sen eheyden lukemalla sen uudelleen.
Viisi vaihetta (ryhmittely, aiheen suodatus, pisteytys, kirjoitus, yleiskuva) käyttää suuria kielimalleja (LLM). Ne tekevät päätöksiä, jotka vaativat ymmärrystä kielestä ja sisällöstä — esimerkiksi saman uutisen tunnistamista eri lähteistä tai uutisen merkityksen arvioimista.
Muut vaiheet ovat ohjelmallista logiikkaa: tiedon haku, URL-normalisointi, tekstin poiminta ja validointi. Nämä ovat täsmällisiä eivätkä tee arviointia.
Tällä hetkellä Ainikilla on yksi aihepiiri, tekoäly, ja kaksi lähdettä: Hacker News (Algolian rajapinnan kautta) sekä Yle (RSS-syötteen kautta). Rakenne tukee useampaa aihetta ja lähdettä, joten molempia voi lisätä myöhemmin ilman, että arkkitehtuuria tarvitsee muuttaa.
Uusi kooste julkaistaan aamuisin verkkosivulla ja lähetetään myös aihekohtaiselle Telegram-kanavalle: Ainikki — päivän AI-uutiset.
Koosteen tyyli ja sisältö määräytyvät asetustiedostojen perusteella, ei koodista:
Kaikki tiedostot ovat versioituja: kun ääntä muutetaan merkittävästi, vanhaa tiedostoa ei muokata vaan tehdään uusi versio. Näin vanhat julkaisut pysyvät jäljitettävissä siihen persoonaan, jolla ne on kirjoitettu.
Jokainen vaihe voi käyttää eri mallia. Halvat mallit riittävät luokitteluun ja pisteytykseen, kun taas tiivistelmien kirjoittamiseen valitaan laadukkaampi malli. Näin kustannukset ja laatu pysyvät tasapainossa.
Tällä hetkellä kaikki mallit toimivat OpenRouterin kautta, joka tarjoaa lukuisia vaihtoehtoja. Mallin voi vaihtaa vaihekohtaisesti yhdellä config-rivillä.
Malliriippumattomuus on tietoinen valinta: kun uusia, sopivampia malleja julkaistaan tai vanhoja poistuu tarjonnasta, Ainikki voidaan siirtää käyttämään niitä ilman, että koko toteutusta joudutaan rakentamaan uudelleen.
Päivittäisen koosteen luonti maksaa tällä hetkellä noin 0,05–0,15 euroa. Toisin kuin monet tekoälypalvelut, Ainikin tuotos on jaettua: sama kooste näytetään kaikille käyttäjille. Mitä enemmän käyttäjiä, sitä pienempi generointikustannus käyttäjää kohti.
Ainikki käyttää suuria kielimalleja (eli tekoälyä) ja voi tehdä virheitä. Ihminen ei tarkista sisältöä.
Jos artikkelin sisältöä ei saada ladattua (esim. robots.txt estää haun, sivu on tyhjä tai vaatii JavaScriptin), uutinen jätetään koosteesta pois kokonaan. Koska lähteitä on vain yksi, samasta asiasta voi puuttua näkökulmia.
Pisteytys, aihevalinta ja tiivistäminen ovat luonnoltaan subjektiivisia tehtäviä, joihin vinoumat vaikuttavat — oli asialla sitten ihminen tai kone. Ainikin tapauksessa kielimalli voi hiljaisesti suosia tiettyjä lähteitä tai näkökulmia.
Sivustolla on käytössä itse ylläpidetty Plausible Analytics, eikä muuta seurantaa ole. Käyttäjätunnuksia tai kirjautumista ei ole, eikä tietoja yhdistetä yksittäisiin käyttäjiin.
Telegram on Ainikista erillinen palvelu, jolla on omat tietosuojakäytännöt. Ainikkia voi hyvin käyttää täysin ilman Telegramia.
Ainikin koodi on avointa ja MIT-lisensoitu: github.com/samporapeli/ainikki.
Sisältöä ei käsin hienosäädetä tai korjata julkaisun jälkeen: teksti julkaistaan sellaisenaan, sellaisena kuin prosessi sen tuottaa. Jos jokin toistuvasti mättää, se korjataan mieluummin prosessista kuin yksittäisestä julkaisusta.
Palautetta ja virheilmoituksia voi lähettää Mastodonin tai LinkedInin kautta.
Ainikin on tehnyt Sampo Rapeli, joka on käyttänyt kielimalleja ja agenttista koodausta päivittäin niin töissä kuin vapaalla jo pidemmän aikaa. Ainikki on kokeilu siitä, miten kielimalli toimii itsenäisenä osana automaattista prosessia – ei reagoimassa käyttäjän viestiin, vaan ajastettuna ja ilman kenenkään antamaa kehotetta. Osa vaiheista käyttää mallia myös rakenteisen datan (esim. pisteytyksen JSON-ulostulo) tuottamiseen, ei vain ihmiselle luettavan tekstin kirjoittamiseen.
Taustalla on myös oma tarve: tekoälyala muuttuu nopeasti, ja päivittäinen, lyhyt kooste on tapa pysyä kärryillä ilman, että pitää itse seurata uutisia jatkuvasti. Vastaavia koosteita on muitakin (esimerkiksi englanninkieliset Hacker Newsletter ja TLDR newsletter), joten mullistavasta ideasta ei ole kyse. Toisin kuin monet muut koostepalvelut, Ainikki on suomenkielinen ja käyttää ylpeästi kielimalleja uutisten valinnassa ja tiivistämisessä.