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
- Hva heter hovedstaden i Mongolia?
- 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:
Invokerkalkulator, 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!