Koding med AI

Innhold

  • Hva er AI/LLM egentlig?
  • Spørsmål vs. chat vs agenter
  • Kontekst
  • Verktøy og MCP
  • Kodeagenter
  • Skills, sub-agents

Hva er AI/LLM egentlig?

  • Store mengder innhold, f.eks. tekst, konverteres til tokens
  • Et token er en bit innhold, f.eks. et ord eller en del av et ord
    What is the capital of Mongolia?
  • LLM-er trenes til å forutsi neste token, gitt en sekvens av tokens

Å stille et spørsmål

  1. Hva heter hovedstaden i Mongolia?
  2. Hva heter hovedstaden i Mongolia? =>Ulan Bator

Chatting

  • Hva heter hovedstaden i Mongolia?
    • System: Du er en chatbot. Svar på spørsmålene mine så kort som mulig.
    • User: Hva heter hovedstaden i Mongolia?
    • => Ulan Bator
  • Hvor mange innbyggere bor det der?
    • System: Du er en chatbot. Svar på spørsmålene mine så kort som mulig.
    • User: Hva heter hovedstaden i Mongolia?
    • You: Ulan bator
    • User: Hvor mange innbyggere bor det der?
    • =>3 millioner

Verktøy (tools)

  • Hva er 2342×3454?
    • System: Du er en chatbot. Svar på spørsmålene mine så kort som mulig.
    • Bruker: Hva er 2342×3454?
    • Du: Invoker kalkulator, argument=2342×3454
    • Kalkulator: 8089268
    • => 2342 × 3454 = 8 089 26

Chain-of-thought

  • LLM lager midlertidige svar - som å tenke høyt
  • Nyttig for mennesker, men også for LLM - lager bedre sluttsvar

Chain-of-thought i en agentløkke

  • Hva heter hovedstaden i Mongolia?
    • Tanke: Jeg må finne hovedstaden i Mongolia.
    • Handling: søk("hovedstad Mongolia")
    • Observasjon: "Ulaanbaatar"
    • Tanke: Jeg har svaret nå.
    • => Hovedstaden i Mongolia er Ulaanbaatar.

Byggesteinene

  • LLM — modellen. Tilstandsløs: tekst inn, tekst ut.
  • Verktøy (Tool) — en funksjon LLM-en kan kalle (bash, les fil, søk).
  • Agent — LLM + løkke + verktøy. Kan planlegge, handle, observere og gjenta.

Agenter og IDE'er

Man kan bruke AI i mange former, via web-interface, integrert i utviklingsverktøyet ditt (IDE), integrert i kode-plattformen din (feks GitHub), eller i et terminal-basert grensesnitt (TUI).

I denne workshoppen skal vi fokusere på terminalen, da dette gir best resultat (med mindre man er veldig avanserte).

Demo-time!

Oppgave 1

  • Start Copilot i en ny tom katalog, feks oppgave-1.
  • Be Copilot lage et program som regner ut primtall nr 10.000. Følg med på hva som skjer. Se på filen som blir generert. Sjekk at programmet virker.
  • Be Copilot endre programmet slik at det spør brukeren om et tall T, og skriver ut primtall nr T. Sjekk at programmet virker.
  • HINT: winget install GitHub.copilot, winget install -e --id Microsoft.VisualStudioCode

Oppgave 2

  • Start Copilot i en ny tom katalog, feks oppgave-2.
  • Lag en webside med en quiz, med 10 spørsmål om et tema du velger selv. Hvert spørsmål skal ha 4-5 alternativer, og når brukeren velger ett av alternativene skal websiden vise om det var feil eller riktig.
  • Utvid programmet til at det venter med å røpe om ditt valg er riktig til du trykker en "Sjekk"-knapp, og da viser hvilke svar som var riktige/feile, og hvor mange poeng du fikk.

Observasjoner

  • AI er overraskende god på å lage nye prototyper!
  • Ikke alltid kodekvaliteten er bra
  • Den tar ofte (viktige) avgjørelser for deg - på godt og vondt
  • Den vil fort begynne å slite når den skal jobbe videre med eksisterende prosjekter

Kontekst

  • LLM jobber basert på kontekst - den bør inneholde relevant informasjon
  • Kodeagenter vil automatisk finne relevante filer og legge dem til i konteksten
  • Hvis konteksten blir for stor, eller lite relevant, synker kvaliteten på resultatet
  • I kodeagenter som Copilot kan man eksplisitt starte en ny kontekst

Tokens

Flere tokens ⇒ større kontekst ⇒ lavere kvalitet og høyere pris

What is the capital of Mongolia? ⇒ 7 tokens

Hva heter hovedstaden i Mongolia? ⇒ 10 tokens

London ⇒ 1 token    Ulaanbaatar ⇒ 5 tokens

Planlegging!

  • Kode-agenter har en PLAN-modus. I dette moduset blir ingen eksisterende filer endret, men agenten vil lage en plan, som typisk lagres som PLAN-1.md
  • I Copilot kan man skifte til plan-modus ved å trykke SHIFT-P.
  • Denne bør gjennomgås, og hvis den ser bra ut, commites.
  • Deretter er det på tide å sette i gang!

Tips

  • Lag en klar plan før noe kode skrives. AI kan hjelpe deg med å lage en plan!
  • Hold konteksten ren. Begynner du på noe helt nytt, lag en ny kontekst (/new, /clear)
  • Det er en fordel å bruke engelsk, selv om sluttproduktet ditt skal være en norsk løsning
  • Vær obs på at for mye informasjon gir høyere pris og lavere kvalitet

Oppgave 3

  • Start Copilot på nytt i en tom katalog, feks oppgave-3
  • Last ned et datasett og lagre det i denne katalogen. Eksempler på datasett: https://datahub.io/core/population
  • Be Copilot lage en webside med en visualisering av disse dataene. Bruk først PLAN-modus og sjekk at den planlegger å lage det du ønsker (feks kake-diagram i stedet for stolpe).
  • Eksperimenter med ulike visninger.

Skills

  • Skill — en pakket, navngitt og gjenbrukbar evne med avgrenset formål.
  • Et skill kan være en enkel tekst/Markdown-fil med informasjon
  • Ligger en bestemt plass, feks .copilot/skills/booking-regler/SKILL.md
  • Har meta-data i toppen av filen (alltid med i kontekst)
  • Innholdet lastes ved behov (inn i konteksten) av agenten

Skills

  • Et skill kan også inneholde lenker, spesifikasjoner, liste over verktøy etc
  • Man kan lage sine egne skills, feks info om dette prosjektet...
  • ... eller laste ned mer generelle skills fra internett
  • Agenten kan lage eller laste ned skills for deg

Eksempler på skills

  • GitHub skill for å integrere med GitHub (issues/tickets, pull requests, jobber etc)
  • Stripe-skill for å lage betalingsløsninger med Stripe
  • Accessibility-skill for å sørge for at webløsningen også fungerer for blinde/svaksynte
  • Dokumentasjon av bedriftens organisasjon
  • Hvordan man tester dette prosjektet
  • PDF-skill - hvordan lage en god PDF-fil
  • Generell informasjon om Mongolia

Sub-agenter

  • En agent kan starte en ny agent, basert på en agent-definisjon, eller et skill
  • Disse kan kjøres i parallel, og vil typisk starte med en ren kontekst
  • Eksempler på sub-agenter: Developer, reviewer, tester, accessibility tester, security reviewer

MCP

  • Model Context Protocol - en standard for å definere et verktøy som en AI-client (agent) kan bruke
  • Kan gi tilgang til data fra en database, data fra GitHub, etc
  • Ofte vil et skill si hvilke MCP'er som er relevante å bruke
  • Eksempel: Playwright MCP — nettleserautomatisering; lar agenten åpne sider, klikke og ta skjermbilder. Kombineres gjerne med et test-skill og/eller en teste-(sub)-agent som ber agenten bruke Playwright MCP.

Oppgave 4

  • Du har (minst) to leiligheter og en hytte du ønsker å leie ut. Du trenger en løsning som skal kunne driftes i skyen, lagre data, gjøre det mulig å ta backup av data, tillate brukere å logge inn, og på sikt støtte betalingsløsninger.
  • Be Copilot lage en plan og/eller en spesifikasjon for et slikt system, og lagre disse som feks PLAN.md og SPECIFICATION.md.
  • Undersøk dokumentene, be om avklaringer, spesifiseringer, rett opp i feile antagelser etc.

Oppgave 5

  • Når du er fornøyd med planen og spesifikasjonen for booking-prosjektet, be Copilot lage en liste med TODOs, konkrete punkter som skal implementeres
  • Ser planen bra ut? I så fall, be Copilot sette i gang med implementasjonen! Sørg for at du får se en demo av løsningen - spør Copilot hvis du lurer på hvordan du starter prosjektet.

Hva tilfører utvikleren?

  • Debugging
  • Spesifikasjoner
  • Kvalitetskontroll
  • Styring
  • Drift, DevOps
  • Sikkerhet

Sikkerhet

  • Agenter går ofte amok - bruk versjonskontrollsystem!
  • Agenter kan være overraskende kreative (eks kundedatabase)
  • Agenter jobber med dine rettigheter - viktig å være bevisst, feks med passord og API-nøkler
  • Nedlastede skills/agenter kan inneholde malware
  • Trusselbildet er blitt mer komplekst med AI

Demo-time!

The complete demo project is availble on GitHub: https://github.com/narve/booking-demo

Menneskelig genom vs. hjerne

🧬 Genom: ~750 MB
🧠 Hjerne: ~2,5 petabyte


Hjernen er ~3 millioner ganger større enn genomet.
Genomet er koden. Hjernen er det kompilerte, kjørende programmet — formet av erfaring.

DNA: 3 mrd basepar × 2 bit. Hjerne: 100 billioner synapser × ~4,7 bit (Salk-studien 2016)

Koden bak en LLM

Overraskende poeng: selve arkitekturkoden er mikroskopisk sammenlignet med vektene.

Hva Eksempel Størrelse
🧮 Modellarkitektur (bare nettverket) nanoGPT (Karpathy) ~300 linjer Python / ~10 KB
🏋️ Treningsskript (enkelt) nanoGPT train.py ~400 linjer / ~15 KB
⚡ Inferensmotor (enkel) llama2.c 700 linjer (~25 kB)
⚡ Inferensmotor llama.cpp ~5 MB kildekode
🔧 Produksjons-treningsrammeverk Megatron-LM (NVIDIA) ~50 MB kildekode

Stor vs. liten modell — sammenligning

Modell Treningsdata Parametere Modellstørrelse
GPT-5 (største, estimert) ~15 000 mrd tokens (est.) ~2 000 mrd (est.) ~4 TB (fp16, est.)
Qwen2.5-Coder 7B ~5 500 mrd tokens (kode-fokusert) 7 mrd ~8 GB (int8)

Den lille modellen er 100-500 × mindre, men løser kodingsoppgaver på nivå med mye større modeller — spesialisering er kraftig.

Hva nå? Neste kurs :)

  • Mer om skills, tools og MCP
  • Hvordan bruke dette i praksis
  • Definering og bruk av sub-agenter
  • Ulike modeller og deres styrker og svakheter

Avslutning

  • Frilek ☺️
  • Takk for meg!