Til hovedinnhold
Norsk English

Agentisk utvikling av vitenskapelig programvare

KI-agenter gir nye muligheter for å utvikle og videreutvikle vitenskapelig programvare. Vi kombinerer praktisk erfaring med agentiske verktøy med inngående kunnskap om numeriske metoder, simulatorer og programvarearkitektur. Vi hjelper deg å utforske nye løsninger, utvide eksisterende verktøy og etablere arbeidsmåter der agentenes bidrag kan testes og vurderes faglig.

Kontaktpersoner

Hva kan vi hjelpe deg med?

En kodeagent kan undersøke en kodebase, foreslå endringer, implementere funksjonalitet og kjøre tester. Den kan bruke resultatene til å rette feil og videreutvikle løsningen gjennom flere steg. Dette åpner for å delegere større deler av utviklingsarbeidet, samtidig som fagpersoner setter retning, avklarer krav og vurderer resultatene.

Vi bruker slike verktøy i vårt eget arbeid med vitenskapelig programvare og kan hjelpe deg med å:

  • Utforske og utvikle ny funksjonalitet i eksisterende simuleringsverktøy.
  • Lage grensesnitt, visualisering og analyseverktøy rundt etablert programvare.
  • Utvikle prototyper for å undersøke modeller, metoder og arbeidsflyter.
  • Bruke agenter til testing, dokumentasjon, feilsøking og omstrukturering av kode.
  • Tilrettelegge kodebaser og utviklingsmiljøer for agentassistert arbeid.
  • Etablere faglige kontroller og tester som gjør agentenes bidrag etterprøvbare.

Har du et utviklingsbehov du ønsker å utforske med KI-agenter? Ta kontakt med vår forskningsgruppe for Anvendt beregningsvitenskap.

Praktisk erfaring fra krevende kodebaser

Vår erfaring er forankret i utvikling av numeriske metoder og simuleringsprogramvare. Vi bruker agenter både til avgrensede oppgaver og til mer omfattende endringer som berører flere deler av en kodebase. Arbeidet krever forståelse av hvordan matematiske modeller, algoritmer og programvare henger sammen.

Vi har blant annet brukt agentassistert utvikling i arbeid med OPM Flow og JutulDarcy. Oppgavene har omfattet lokal nettforfining, adjungerte gradientberegninger og tilpasning av beregninger til GPU-er. Slike oppgaver gir praktisk erfaring med både mulighetene og begrensningene ved å la agenter arbeide i store vitenskapelige kodebaser.

Vi bygger videre på denne erfaringen når vi vurderer hvilke oppgaver som egner seg for delegering, hvilken informasjon agenten trenger, og hvordan resultatene bør kontrolleres.

Verktøy tilpasset oppgaven

Mange behov oppstår rundt en eksisterende simulator: klargjøring av data, oppsett av modeller, sammenligning av scenarioer eller presentasjon av resultater. Agentisk utvikling gjør det enklere å prøve ut skreddersydde verktøy for slike oppgaver og justere dem i tett dialog med brukerne.

Vi utvikler blant annet interaktive grensesnitt, visualisering og analysefunksjoner som bygger på etablerte beregningsverktøy. Fagpersonen kan undersøke en tidlig versjon, presisere behovet og få løsningen videreutviklet gjennom korte iterasjoner.

En fungerende prototype gir grunnlag for å vurdere nytten. Videre bruk krever også at programvaren har hensiktsmessig struktur, testing og dokumentasjon, og at det er avklart hvordan den skal vedlikeholdes.

En kodebase agenten kan arbeide med

Agentens arbeidsvilkår påvirker hva den får til. Tydelige grensesnitt, oversiktlige moduler, gode eksempler og tester som er enkle å kjøre, gjør det lettere å finne frem og vurdere konsekvensene av en endring. Dokumentasjon bør forklare både hvordan programvaren brukes, og hvilke faglige forutsetninger implementeringen bygger på.

Vi arbeider med å gi agentene relevant kontekst og konkrete tilbakemeldinger. Det kan være beskrivelser av arkitektur og kodekonvensjoner, referanseberegninger, byggesystemer eller diagnostikk fra simulatoren. Oppgaver kan deles inn i steg med tydelige kriterier for hva som skal være oppnådd før arbeidet går videre.

Tilretteleggingen er også nyttig for menneskelige utviklere. Den gjør kunnskap om programvaren mer eksplisitt og bidrar til at endringer blir enklere å forstå og kontrollere.

Faglig kontroll av generert kode

Kode som kompilerer og passerer tester, kan fortsatt implementere feil modell eller gi misvisende resultater. I vitenskapelig programvare må vurderingen derfor omfatte mer enn om funksjonaliteten tilsynelatende virker.

Vi kombinerer kodegjennomgang med kontroller som er relevante for beregningsmetoden: bevaringslover, kjente løsninger, konvergensstudier, gradientkontroller og sammenligninger med etablerte implementeringer. Testene må undersøke den tiltenkte matematiske oppførselen og bør ikke bare gjenta antakelsene i den genererte koden.

Endringer kan også påvirke kjøretid, minnebruk og robusthet på måter som ikke vises i små eksempler. Representative modeller og regresjonstester er derfor viktige når agentutviklet funksjonalitet skal tas inn i etablerte verktøy.

Samarbeid mellom fagperson og agent

En kort instruksjon etterlater mange valg åpne. Agenten kan velge datastrukturer, algoritmer eller forenklinger som er rimelige isolert sett, men som ikke passer til formålet. Fagpersonens rolle er å gjøre viktige krav tydelige og følge opp valg som påvirker modellens innhold eller programvarens videre utvikling.

Vi arbeider iterativt: formulere oppgaven, undersøke kodebasen, gjennomføre endringer, teste og vurdere resultatene. Versjonskontroll, avgrensede endringer og dokumenterte testresultater gjør det mulig å følge hva som er gjort og korrigere retningen underveis.

Hvor mye som kan delegeres, avhenger av oppgaven og hvor godt resultatet kan kontrolleres. Praktisk erfaring med verktøyene og inngående kjennskap til programvaren er sentralt for å finne en god arbeidsdeling.

Fra utvikling av programvare til bruk av simulatorer

Agentisk utvikling og agentassistert simulering kan støtte hverandre. En utviklingsagent kan lage et analyseverktøy eller et grensesnitt som en annen agent senere bruker i modelleringsarbeidet. Da blir kvaliteten på grensesnitt, dokumentasjon og tilbakemeldinger avgjørende i begge ledd.

Les mer om hvordan vi arbeider med agentisk KI i beregningsvitenskap, der agenter bruker simulatorer og andre fagverktøy til å sette opp modeller, gjennomføre beregninger og analysere resultater.

Les mer