{"id":465,"date":"2024-10-12T10:27:02","date_gmt":"2024-10-12T08:27:02","guid":{"rendered":"https:\/\/djax.se\/blog\/?p=465"},"modified":"2024-12-01T11:07:48","modified_gmt":"2024-12-01T10:07:48","slug":"sa-fort-det-inte-langre-bara-ar-crud-sa-ar-det-ai","status":"publish","type":"post","link":"https:\/\/djax.se\/?p=465","title":{"rendered":"S\u00e5 fort det inte l\u00e4ngre (bara) \u00e4r CRUD s\u00e5 \u00e4r det AI"},"content":{"rendered":"\n<p>Vad inneb\u00e4r det att ett system har AI funktionalitet?<\/p>\n\n\n\n<p>AI kan betyda att det \u00e4r n\u00e5gon form av pryl, som kan utf\u00f6ra en uppgift som traditionellt har utf\u00f6rts av m\u00e4nniskor. Enligt den definitionen \u00e4r all grad av automations\u00f6kning som gjorts sedan den <a href=\"https:\/\/sv.wikipedia.org\/wiki\/Flygande_skytteln\">flygande skytteln<\/a> i starten av den industriella revolutionen en form av AI.<\/p>\n\n\n\n<p>Men s\u00e5klart t\u00e4nker vi de senaste \u00e5ren p\u00e5 vad som g\u00e5r att g\u00f6ra i mjukvara n\u00e4r AI diskuteras. Vad f\u00f6r framsteg har d\u00e5 skett som gjort att AI dyker upp \u00f6verallt just nu? Det \u00e4r f\u00f6r att fungerade till\u00e4mpningar av det gamla forskningsomr\u00e5det <a href=\"https:\/\/en.wikipedia.org\/wiki\/Machine_learning\">&#8221;Machine learning&#8221;<\/a> sedan starten av 2010-talet lyckats utf\u00f6ra uppgifter inte tidigare m\u00f6jligt p\u00e5 den tidens datorer.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"554\" src=\"https:\/\/djax.se\/wp-content\/uploads\/2024\/09\/bild-1024x554.png\" alt=\"\" class=\"wp-image-638\" srcset=\"https:\/\/djax.se\/wp-content\/uploads\/2024\/09\/bild-1024x554.png 1024w, https:\/\/djax.se\/wp-content\/uploads\/2024\/09\/bild-300x162.png 300w, https:\/\/djax.se\/wp-content\/uploads\/2024\/09\/bild-768x416.png 768w, https:\/\/djax.se\/wp-content\/uploads\/2024\/09\/bild-1536x831.png 1536w, https:\/\/djax.se\/wp-content\/uploads\/2024\/09\/bild.png 1656w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/gotoams.nl\/2024\/sessions\/3115\/beyond-the-hype-a-realistic-look-at-large-language-models\">Beyond the Hype: A Realistic Look at Large Language Models<\/a><\/figcaption><\/figure>\n\n\n\n<p>Att Nvidia skapade CUDA 2006 var fundamentalt f\u00f6r att de h\u00e4r gamla teorierna \u00e4ntligen skulle kunna testk\u00f6ras effektivt p\u00e5 tillr\u00e4ckligt snabb h\u00e5rdvara. Vid den h\u00e4r tiden f\u00f6rstod d\u00e5 17-\u00e5rige Adam inte varf\u00f6r det skulle vara intressant att k\u00f6ra n\u00e5got annat \u00e4n spel som <a href=\"https:\/\/en.wikipedia.org\/wiki\/The_Elder_Scrolls_IV:_Oblivion\"><em>Oblivion<\/em> <\/a>p\u00e5 grafikkortet&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vad \u00e4r CRUD?<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>A crud app is just a skin over a database. Traditionally this means the 5 core function &#8211; create, read one, read all, update and delete &#8211; with some auxiliary functions.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.reddit.com\/r\/webdev\/comments\/15lwnym\/what_do_people_mean_by_a_simple_crud_app\/\">What do people mean by &#8221;a simple CRUD app&#8221;<\/a><\/p>\n<\/blockquote>\n\n\n\n<p>CRUD kan vara en simpel hemsida som har i uppgift att lagra ett f\u00e5tal sammanh\u00f6rande dom\u00e4nobjekt. Kanske har samma information tidigare sammanst\u00e4llts i en Excel fil. <\/p>\n\n\n\n<p>Ut\u00f6ver de vanliga operationerna p\u00e5 datan (Skapa, H\u00e4mta, Uppdatera, Ta bort) kanske \u00e4ven viss r\u00e4ttighetsstyrning beh\u00f6vs s\u00e5 endast vissa grupper av anv\u00e4ndare f\u00e5r till exempel ta bort en viss typ av objekt. I en s\u00e5dan h\u00e4r applikation g\u00e5r inte en enda CPU cykel \u00e5t s\u00e5 l\u00e4nge inte n\u00e5gon m\u00e4nniska l\u00e4ser eller modifierar datan. Skulle alla helt pl\u00f6tsligt sluta anv\u00e4nda mjukvaran s\u00e5 skulle den aldrig igen utf\u00f6ra n\u00e5got arbete. Total stillhet infinner sig.<\/p>\n\n\n\n<p>N\u00e4r blir en s\u00e5dan h\u00e4r applikation AI?<\/p>\n\n\n\n<p>N\u00e4sta steg i den naturliga utvecklingen av en s\u00e5dan h\u00e4r &#8221;app&#8221; \u00e4r att tillf\u00f6ra mer och mer validering av den data som tillf\u00f6rs. N\u00e4r den tillf\u00f6rs. <\/p>\n\n\n\n<p>Anv\u00e4ndaren skall varnas n\u00e4r ett f\u00e4lt missats fyllas i eller om n\u00e5got numeriskt v\u00e4rde \u00e4r utanf\u00f6r det omr\u00e5de verksamheten uppm\u00e4rksammat skulle vara en bra regel att ha. Denna typ av inv\u00e4rdesvalideringar kan bli mer och mer avancerad desto l\u00e4ngre man kommer fr\u00e5n enkla datatypskontroller till ren aff\u00e4rslogik unikt anpassad f\u00f6r den aktuella verksamhetens nuvarande behov.<\/p>\n\n\n\n<p>Att f\u00e5 s\u00e5dana h\u00e4r varningsrutor med v\u00e4lskrivna felmeddelanden kan ge k\u00e4nslan av att mjukvaran &#8221;vet&#8221; saker. \u00c4r den AI nu? Den hindrar verksamheten fr\u00e5n att lagra tillst\u00e5nd en n\u00e4rvarande m\u00e4nniska annars skulle satt stopp f\u00f6r.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Every time we figure out a piece of it, it stops being magical; we say, &#8217;Oh, that&#8217;s just a computation.&#8217;<\/p>\n\n\n\n<p><a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Rodney_Brooks\">Rodney Brooks<\/a> (AI effect)<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">N\u00e4r blir mjukvaran intelligent?<\/h2>\n\n\n\n<p>F\u00f6rs\u00e4kringskassans system som \u00e4r exponerade till den allm\u00e4nna befolkningen klarar inte av att detektera n\u00e4r den senare f\u00f6r\u00e4ldern r\u00e5kar logga ledighet p\u00e5 samma dag som den andra f\u00f6r\u00e4ldern redan registrerat. Ist\u00e4llet ringer handl\u00e4ggare upp dagar senare och undrar hur det skall vara och hur de skall \u00e4ndra inmatningen. H\u00e4r skulle simpel validering med en popup n\u00e4r den senare registreringen g\u00f6rs som s\u00e4ger &#8221;Din sambo\/partner\/fru\/b\u00e4ttre h\u00e4lft har redan registrerat ledighet p\u00e5 datum x, y, z. Vill du \u00e4nd\u00e5 spara?&#8221;.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>&#8221;Bolagsverket tar emot vilket skr\u00e4p som helst&#8221;<\/p>\n\n\n\n<p>Jens Nylander<\/p>\n<\/blockquote>\n\n\n\n<p>Den tidigare mp3-spela import\u00f6ren Jens &#8221;Jens of Sweden&#8221; Nylander s\u00e4ger att han med AI (han vet vad han skall s\u00e4ga) hittar <a href=\"https:\/\/www.affarsvarlden.se\/artikel\/100-000-fel-i-farska-arsredovisningar-bolagsverket-tar-emot-vilket-skrap-som-helst\">otaliga \u00e5rsredovisningar<\/a> som \u00e4r rent felaktiga och mots\u00e4gelsefulla. S\u00e5dant som aldrig borde tagits emot. S\u00e5dant som borde validerats vid sparningsstillf\u00e4llet.<\/p>\n\n\n\n<p>Kontentan \u00e4r att detta \u00e4r enkel validering av inv\u00e4rden och det enda sv\u00e5ra att utf\u00f6ra \u00e4r n\u00e4r och hur k\u00e4llan av dessa v\u00e4rden skall informeras om de felaktigheter som f\u00f6rs\u00f6ker lagras. De vanliga utmaningarna inom <a href=\"https:\/\/djax.se\/?p=434\" data-type=\"post\" data-id=\"434\">integration<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"552\" src=\"https:\/\/djax.se\/wp-content\/uploads\/2024\/09\/bild-2-1024x552.png\" alt=\"\" class=\"wp-image-640\" srcset=\"https:\/\/djax.se\/wp-content\/uploads\/2024\/09\/bild-2-1024x552.png 1024w, https:\/\/djax.se\/wp-content\/uploads\/2024\/09\/bild-2-300x162.png 300w, https:\/\/djax.se\/wp-content\/uploads\/2024\/09\/bild-2-768x414.png 768w, https:\/\/djax.se\/wp-content\/uploads\/2024\/09\/bild-2-1536x828.png 1536w, https:\/\/djax.se\/wp-content\/uploads\/2024\/09\/bild-2.png 1640w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/gotoams.nl\/2024\/sessions\/3115\/beyond-the-hype-a-realistic-look-at-large-language-models\">Beyond the Hype: A Realistic Look at Large Language Models<\/a><\/figcaption><\/figure>\n\n\n\n<p>I grafen ovan hamnar applikationer l\u00e4ngre \u00e5t h\u00f6ger n\u00e4r de sl\u00e5r st\u00f6rre och st\u00f6rre del av m\u00e4nskligheten p\u00e5 den givna uppgiften. D\u00e4r hittas redan schack och behandling av proteinstrukturer i den \u00f6vre delen av grafen som st\u00e5r f\u00e5r applikationer som designats f\u00f6r enskilda uppgifter. I den nedre delen hittas stora spr\u00e5kmodeller (ChatGTP) som anses vara n\u00e5gon form av generell intelligens (vilket \u00e4r oerh\u00f6rt h\u00e4ftigt!). Dock placeras de fortfarande l\u00e5ngt till v\u00e4nster d\u00e5 de \u00e4r s\u00e4mre \u00e4n n\u00e4stan alla m\u00e4nniskor p\u00e5 generella uppgifter. De \u00e4r samtidigt oerh\u00f6rt kraftfulla i specifikt spr\u00e5krelaterade uppgifter, d\u00e4r sl\u00e5r de s\u00e4kert m\u00e5nga.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vad kan LLM d\u00e5 g\u00f6ra?<\/h2>\n\n\n\n<p>De ing\u00e5r i samlingen av m\u00f6jligheter som kallas &#8221;Generative AI&#8221;. De \u00e4r b\u00e4st p\u00e5:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00d6vers\u00e4tta<\/li>\n\n\n\n<li>Klassificera text<\/li>\n\n\n\n<li>Summera text<\/li>\n\n\n\n<li>Svara p\u00e5 fr\u00e5gor (Lagrad kunskap \/ RAG)<\/li>\n<\/ul>\n\n\n\n<p>D\u00e4r svara p\u00e5 fr\u00e5gor s\u00e4kert \u00e4r det mest hype finns. N\u00e4r modellerna blir tillr\u00e4ckligt stora visar det sig att de b\u00e5de l\u00e4r sig spr\u00e5k samt av farten r\u00e5kar lagra fakta om v\u00e4rlden. D\u00e4rf\u00f6r kan de konversera och svara p\u00e5 fr\u00e5gor men med risken att de, utan att veta det, genererar &#8221;fakta&#8221; som inte \u00e4r sant. <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>But roughly speaking (and today), you&#8217;re not asking some magical AI. You&#8217;re asking a human data labeler. Whose average essence was lossily distilled into statistical token tumblers that are LLMs. This can still be super useful of course. Example when you ask eg \u201ctop 10 sights in Amsterdam\u201d or something, some hired data labeler probably saw a similar question at some point, researched it for 20 minutes using Google and Trip Advisor or something, came up with some list of 10, which literally then becomes the correct answer, training the AI to give that answer for that question.<\/p>\n\n\n\n<p><a href=\"https:\/\/x.com\/karpathy\/status\/1862565643436138619\">Andrej Karpathy<\/a><\/p>\n<\/blockquote>\n\n\n\n<p>F\u00f6r att motverka dessa hallucinationer beh\u00f6ver fr\u00e5gan kompletteras med n\u00e5gon form av <a href=\"https:\/\/blogs.nvidia.com\/blog\/what-is-retrieval-augmented-generation\/\">RAG <\/a>som tillf\u00f6r extra kunskaper till AI modellen vid fr\u00e5getillf\u00e4llet.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>But to deliver authoritative answers that cite sources, the model needs an assistant to do some research<\/p>\n\n\n\n<p><a href=\"https:\/\/blogs.nvidia.com\/blog\/what-is-retrieval-augmented-generation\/\">What Is Retrieval-Augmented Generation, aka RAG?<\/a><\/p>\n<\/blockquote>\n\n\n\n<p>Jag tror inte systemutvecklare kommer beh\u00f6va p\u00e5 sikt grotta ner sig i RAG l\u00f6sningar speciellt ofta utan de b\u00e4sta verktygen kommer finnas inbyggda i exempelvis Sharepoint\/Office eller Adobe reader. Kunskap i verksamhetsanpassade l\u00f6sningar som anv\u00e4nder fler \u00e4n en <a href=\"https:\/\/en.wikipedia.org\/wiki\/Modality_(human%E2%80%93computer_interaction)\">modalitet <\/a>l\u00e4r vara mer troligt att beh\u00f6vas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kombination av modelltyper<\/h2>\n\n\n\n<p>Modeller med mer \u00e4n en modalitet f\u00f6rst\u00e5r hur en typ av data kan omvandlas till en annan typ. I bilden nedan anv\u00e4nder jag modellen <a href=\"https:\/\/llava-vl.github.io\/\">LLaVA <\/a>till att f\u00f6resl\u00e5 ett filnamn till en bild som visar ett av de slitna f\u00f6nster jag skall byta ut.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"717\" height=\"577\" src=\"http:\/\/djax.se\/wp-content\/uploads\/2023\/10\/firefox_WhNpL1kuql.png\" alt=\"\" class=\"wp-image-621\" srcset=\"https:\/\/djax.se\/wp-content\/uploads\/2023\/10\/firefox_WhNpL1kuql.png 717w, https:\/\/djax.se\/wp-content\/uploads\/2023\/10\/firefox_WhNpL1kuql-300x241.png 300w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/figure>\n\n\n\n<p>Med det fantastiska projektet <a href=\"https:\/\/github.com\/Mozilla-Ocho\/llamafile\">llamafile<\/a> g\u00e5r det snabbt k\u00f6ra en s\u00e5dan modell p\u00e5 alla operativsystem. Dock har den inte m\u00f6jligheten att skapa bilder s\u00e5 jag bad sedan Bing copilot att visa mig hur det kommer se ut med nya f\u00f6nster:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"807\" height=\"1024\" src=\"http:\/\/djax.se\/wp-content\/uploads\/2023\/10\/msedge_qjl2Au2iuQ-807x1024.png\" alt=\"\" class=\"wp-image-623\" srcset=\"https:\/\/djax.se\/wp-content\/uploads\/2023\/10\/msedge_qjl2Au2iuQ-807x1024.png 807w, https:\/\/djax.se\/wp-content\/uploads\/2023\/10\/msedge_qjl2Au2iuQ-236x300.png 236w, https:\/\/djax.se\/wp-content\/uploads\/2023\/10\/msedge_qjl2Au2iuQ-768x975.png 768w, https:\/\/djax.se\/wp-content\/uploads\/2023\/10\/msedge_qjl2Au2iuQ.png 855w\" sizes=\"auto, (max-width: 807px) 100vw, 807px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Vart ger LLM mest nytta?<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>&#8221;Focus on concrete value. Discover whether you&#8217;re using generative AI or predictive AI. Determine a very specific, concrete, credible use case of exactly how this technology is going to improve some kind of operation in the enterprise and deliver value.&#8221;<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Generative AI is not the panacea we\u2019ve been promised | Eric Siegel for Big Think+\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/B2zCWJBnfuE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Ist\u00e4llet f\u00f6r att generera n\u00e5got till slutanv\u00e4ndaren kan spr\u00e5kmodeller redan i utvecklingsfasen skriva koden? Om de har tr\u00e4nats p\u00e5 stora m\u00e4ngder befintlig kod s\u00e5 klarar de absolut att generera kod som ser mycket bra ut. Min f\u00f6rhoppning \u00e4r att s\u00e5dana AI st\u00f6dverktygen f\u00f6r utvecklare p\u00e5 sikt skall f\u00f6rst\u00e5 semantiken i programmeringsspr\u00e5ket s\u00e5 de inte genererar <a href=\"https:\/\/www.theregister.com\/2024\/03\/28\/ai_bots_hallucinate_software_packages\">saker som inte finns<\/a>.<\/p>\n\n\n\n<p>Anv\u00e4nds ett kompilerat spr\u00e5k har de stora <a href=\"https:\/\/eclipseide.org\/\">utvecklingsmilj\u00f6erna <\/a>sedan l\u00e4nge kunnat <a href=\"https:\/\/en.wikipedia.org\/wiki\/Code_completion\">f\u00f6resl\u00e5 de n\u00e4sta raderna kod<\/a> som garanterat \u00e4r giltiga d\u00e5 verktygen f\u00f6rst\u00e5r det aktuella spr\u00e5ket samt vilka variabler och funktioner som g\u00e5r att fr\u00e5n den plats mark\u00f6ren st\u00e5r.<\/p>\n\n\n\n<p>Att skapa grundl\u00e4ggande formul\u00e4r till CRUD appar som sparar och h\u00e4mtar data fr\u00e5n databaser l\u00e4r AI baserade assistenter kunna g\u00f6ra utan problem oavsett spr\u00e5k och ramverk sett till den stora m\u00e4ngd exempel de m\u00e5ste l\u00e4rt sig av under sin tr\u00e4ning. Att tillsammans med utvecklarna nysta upp b\u00e4sta s\u00e4tt att f\u00f6r\u00e4ndra en befintlig stor kodbas d\u00e4r det mesta av den historiska kontexten av <a href=\"https:\/\/djax.se\/?p=496\" data-type=\"post\" data-id=\"496\">varf\u00f6r verksamhetens processer ser ut som de<\/a> g\u00f6r inte f\u00e5ngas av koden \u00e4r n\u00e4sta utmaning.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vad inneb\u00e4r det att ett system har AI funktionalitet? AI kan betyda att det \u00e4r n\u00e5gon form av pryl, som kan utf\u00f6ra en uppgift som traditionellt har utf\u00f6rts av m\u00e4nniskor. Enligt den definitionen \u00e4r all grad av automations\u00f6kning som gjorts sedan den flygande skytteln i starten av den industriella revolutionen en form av AI. Men [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":626,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-465","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-okategoriserad"],"_links":{"self":[{"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/posts\/465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/djax.se\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=465"}],"version-history":[{"count":36,"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/posts\/465\/revisions"}],"predecessor-version":[{"id":711,"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/posts\/465\/revisions\/711"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/media\/626"}],"wp:attachment":[{"href":"https:\/\/djax.se\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/djax.se\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/djax.se\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}