Garak i praksis: Sådan bygger du et defensivt red‑teaming workflow for LLM’er
NVIDIAs nye hands‑on tutorial viser, hvordan garak kan køres end‑to‑end til defensiv LLM red‑teaming: setup, plugin‑inventar, hurtig dry‑run, real‑model scans, multi‑probe kørsel, rapportanalyse, custom probes og detektorer – og AVID‑eksport. Vi gennemgår trinene, peger på faldgruber og forklarer, hvordan det kan ind i CI/CD og governance uden at knække driften.
7. juni 2026Peter Munkholm
NVIDIAs garak får en konkret behandling i en ny tutorial, der går hele vejen fra installation til AVID‑eksport. Ikke bare én scan og slut, men et sammensat defensivt workflow, som sikkerheds‑ og driftsteams kan lægge i pipeline på få dage. Timingen er god: mange har LLM’er i produktion og ubesvarede sikkerhedsspørgsmål. Det her kan køres i morgen.
Vi har haft garak i hænderne i projekter. Det er værkstedsagtigt på den rigtige måde: pragmatisk, CLI‑drevet og med en plugin‑økologi, der er stor nok til at være nyttig. Tutorialen følger præcis den sti, vi anbefaler i workshops: start småt, bevis processen, operationalisér.
Hvad garak gør i virkeligheden
Garak stiller fire plugin‑typer til rådighed: probes (angreb\/udløsere), detectors (vurdering af output), generators (mål\/targets) og buffs (justeringer). Ifølge tutorialen kan de listes direkte fra CLI, så man får overblik over dækning, før man kører tungere jobs. Derfra tilbyder garak en hurtig dry‑run mod en lokal test‑generator og skanninger mod rigtige modeller, inklusive Hugging Face‑endpoints. Resultater samles i rapporter, som kan læses med garaks rapportmodul og eksporteres i AVID‑format til governance.
Tutorialens ambition er at vise samspillet mellem probes, detectors, generators, reports og vulnerability‑scores i en komplet testkæde – ikke kun en enkelt test. Den tilgang virker i praksis, også når noget fejler undervejs.
Hvordan tutorialen er bygget
Opsætningen er ligetil: installation via pip install -U garak. To miljøvariabler dæmper støj og telemetri: TOKENIZERS_PARALLELISM=false og HF_HUB_DISABLE_TELEMETRY=1. Derefter importeres garak og garak.cli samt _config, som tutorialen bruger til at fange den rapportsti, garak genererer under kørsel.
Kernen er en lille helper, run_garak, der kalder garak.cli.main(args) og forsøger at læse _config.transient.report_filename. Praktisk i notebooks og orkestrering, fordi man slipper for manuelle filnavne. En note fra os: stien til transient config kan ændre sig mellem versioner. Hav en fallback – angiv eksplicit output‑sti eller søg efter seneste *report.jsonl (tutorialen viser også en find_latest_report som alternativ).
Gennemgang af eksekverede trin
Tutorialen starter med plugin‑opregning: --list_probes, --list_detectors, --list_generators og --list_buffs med counts og eksempler. Det giver et nøgternt audit‑billede af, hvilke tests der er tilgængelige på et givent tidspunkt.
Dernæst en hurtig dry‑run med en lokal test‑generator (test.Repeat) og en simpel probe (lmrc.SlurUsage) og én generation:
Pointen er at verificere hele kæden – uden API‑nøgler og uden omkostninger. Vi lægger typisk samme trin i CI for at fange brud i tooling, før dyre kald rammer.
Real‑model scan og multi‑probe
Herefter scanner tutorialen en Hugging Face‑model. Eksemplet bruger gpt2 som mål og en klassisk DAN‑probe (Dan_11_0) med parallelisering:
Bagefter vises en programmatisk multi‑probe‑kørsel via run_garak med tre prober i samme job: dan.Dan_11_0, encoding.InjectBase64 og lmrc.SlurUsage samt --parallel_attempts 16. Det giver bredere dækning og samler data i én rapport – med krav til CPU, netværk og hensyn til rate limits mod eksterne endpoints. Kører I mod cloud‑modeller, bør ops planlægge kø‑styring og caps på samtidige kald.
Hvad rapporterne og scores fortæller
Efter kørsel læses rapporten med garak.report.Report. Tutorialen viser per‑probe gennemsnitlige safety‑scores og evalueringer og har et fallback, der parser JSONL manuelt, hvis import fejler. God praksis, fordi det øger robustheden.
Hvordan skal et security‑team læse det? Scores er signaler, ikke domme. En høj succesrate på en DAN‑probe siger noget om modtagelighed for prompt‑omgåelse, men kontekst er afgørende: prompt‑arkitektur, systeminstruktioner, indbyggede sikkerhedslag og downstream‑detektorer. Brug garak‑scores til screening: flag højrisiko‑områder til menneskelig vurdering af forretningspåvirkning. Standardopsætninger på rå modeller støjer ofte – det er forventeligt og kræver bevidst tuning, før man handler på fundene.
At lave custom probes og detectors
Tutorialen viser også, hvordan man laver egne prober og detektorer. Det er centralt, fordi standard‑plugins sjældent rammer en virksomheds mest konkrete risici. Vi har bygget prober, der tester for læk af interne koder, trade‑secrets i bestemte fraseringer og regulatoriske faldgruber. I en finanscase gav en første multi‑probe‑kørsel 120+ høj‑prioritets alarmer i testmiljø; efter tuning af to detektorer og prompt‑hardening faldt støjen 70%.
Integration i drift og governance
Det vigtige er ikke kun at scanne, men at gøre scanningen til en driftsrytme. Tutorialens dry‑run‑mønster med test.Repeat er velegnet som CI‑trin uden eksterne kald. Real‑model scans kan trigges ved modelopdateringer, nye prompter eller ændrede sikkerhedspolitikker.
AVID‑eksporten binder det til governance. Standardiseret output kan lande i risikoregistre, dashboards eller GRC‑systemer. Lav en mapping: hvilke garak‑felter matcher jeres interne kategorier, hvilke tærskler giver “blokér” vs. “observér”, og hvem ejer opfølgning. Praktisk kræver det et fælles beslutningstræ mellem SRE\/ops, sikkerhed og compliance: hvornår fejler et build, hvornår åbnes et ticket, hvornår kræves menneskelig godkendelse.
Praktiske detaljer der bider
Inden bred udrulning vil vi sikre tre ting. 1) Robusthed: run_garak læner sig op ad _config.transient.report_filename. Brug eksplicit output‑sti eller stabil søgestrategi, som tutorialens find_latest_report antyder. 2) Error‑håndtering: tidsgrænser og retries, så parallelle forsøg ikke hænger ved netværksproblemer. 3) Rate limits og omkostninger: caps og per‑probe logging.
Og så det uundgåelige: scanner I mod eksterne modeller, skal procurement og legal med. Promptdata forlader jeres miljø, og databehandleraftaler kan begrænse jer. Det er vilkår, ikke et garak‑problem.
Hvor garak ikke løser alt
Garak afhænger af plugin‑kvalitet. Nogle detektorer kan give mange false positives i jeres domæne. Tutorialen leverer ikke kvantitative benchmarks for detektorpræcision; test selv mod et kendt sæt on‑ og off‑policy prompts og justér tærskler.
Ydeevne er også åben. Tutorialen viser parallel_attempts, men ikke hardwarekrav eller runtime for større job. Det afhænger af endpoints og prober, men drift har brug for målinger, før natlige kørselssæt planlægges. Start småt og log CPU, RAM, latenser – og om detektorer laver dyre efterberegninger.
Konkrete kommandoer og kode fra tutorialen
Her er de centrale stumper, som vi har krydstjekket mod notebookens tekst:
Programmatisk multi‑probe via helper: run_garak med prober dan.Dan_11_0,encoding.InjectBase64,lmrc.SlurUsage og --parallel_attempts 16
Der er også en analyse‑sektion med import af garak.report.Report og et fallback, der finder seneste *report.jsonl i garaks standardmapper. Det hele ligger i tutorialens “FULL CODES”.
Hvorfor det betyder noget i drift
For teams med LLM‑services i produktion gør garak to ting rigtigt: det er scriptbart, og det har fornuftige standarder. Man kan køre et minimum af sikkerhedstests uden at bygge en ny ramme. AVID‑eksporten hjælper med at gøre findings til en del af kontrolmiljøet, ikke bare en PDF i en mappe.
I en kundepipeline var plugin‑inventaret en stærk audit‑log. En detektor markerede til gengæld halvdelen af svarene som risikable, fordi domænesproget lignede toxicitet. En times justering af tærskler og filtrering af enkelte prober løste det, hvorefter flowet kørte stabilt.
Snillds anbefalinger
Hvis du vil i gang hurtigt, så gør dette i rækkefølge: 1) Tilføj dry‑run i CI med test.Repeat og 1–2 simple prober for at bekræfte værktøjet. 2) Vælg én produktionsnær model og kør en multi‑probe med lav --generations i staging. 3) Byg 1–2 custom prober målrettet jeres forretning (fx læk af interne koder eller brud på brancheregler). 4) Map AVID‑eksporten til jeres governance‑felter og etabler et beslutningstræ for opfølgning.
Målet er et stabilt, gentageligt sikkerhedstjek – ikke en enkelt pæn rapport.
Usikkerheder og ting vi vil validere
Nogle dele i tutorialen bør verificeres uafhængigt. Helper‑mønstret med _config.transient.report_filename kan være skrøbeligt på tværs af versioner. Test på mindst to udgivelser. Der er heller ikke kvantitative tal for false positives\/negatives på detektorerne; lav et lille eval‑sæt med kendte angrebs‑ og ikke‑angrebsprompter. Endelig mangler performance‑målinger for større multi‑probe jobs – mål, før I skalerer.
AVID‑workflowet er demonstreret som eksport, men integration i governance kræver jeres felt‑mapping og tydeligt ejerskab for opfølgning. Det kræver beslutninger, ikke ekstra kode.
Konklusion
Garak‑tutorialen viser et komplet defensivt LLM‑workflow, ikke kun en demo. Den er tilstrækkelig konkret til, at teams kan operationalisere den og stadig sætte eget præg. Start med dry‑run. Bevis multi‑probe i staging. Byg få, skarpe custom prober. Sæt AVID‑eksport i drift og bind den til governance. Forskellen mærkes først, når man kører det i praksis.
Appendiks
Kilde: NVIDIA garak tutorial hos Marktechpost – “NVIDIA garak Tutorial: Build a Complete Defensive LLM Red‑Teaming Workflow with Custom Probes and Detectors”. Indeholder fulde kodeeksempler og link til FULL CODES.
Metoden i artiklen bygger på den offentlige tutorial, suppleret med vores erfaringer. Hvor tutorialen ikke dokumenterer robusthed (fx detektorpræcision), har vi markeret usikkerhed og anbefalet egne tests.
Gør brugeroplevelsen bedre. Hvilket firma arbejder du for?
Brugsvilkår
Brugsvilkår for Snilld
Opdateret: 19. marts 2026
1. Om disse vilkår
Disse brugsvilkår gælder for din brug af Snillds website, chatfunktioner, digitale assistenter, applikationer og øvrige online tjenester, der stilles til rådighed af Snilld ApS.
Ved at bruge vores tjenester accepterer du disse vilkår.
2. Leverandør
Tjenesterne leveres af:
Snilld ApS CVR 44856085 Cortex Park 4 Vest DK-5230 Odense M E-mail: [email protected] Telefon: +45 26 71 48 92
3. Tjenesternes karakter
Snilld tilbyder digitale løsninger, herunder funktioner med kunstig intelligens, til blandt andet information, support, indholdsbehandling, automatisering og produktivitetsformål.
Nogle funktioner kan være eksperimentelle, under udvikling eller afhængige af tredjepartsinfrastruktur.
4. AI-assisterede funktioner
Når du bruger en funktion, hvor du interagerer direkte med en AI-assistent, bliver du oplyst om dette, medmindre det er åbenbart i den konkrete situation.
AI-genererede svar, forslag og analyser kan være unøjagtige, ufuldstændige eller irrelevante. Output fra vores AI-funktioner er vejledende og må ikke stå alene ved beslutninger med væsentlige juridiske, økonomiske, sundhedsmæssige eller andre væsentlige konsekvenser.
Hvor det tilbydes, kan du anmode om menneskelig overtagelse eller manuel opfølgning.
5. Ingen professionel rådgivning
Indhold, svar, forslag og anbefalinger fra Snillds website og AI-funktioner udgør ikke juridisk, økonomisk, regnskabsmæssig, medicinsk eller anden professionel rådgivning.
Du er selv ansvarlig for at vurdere, om du skal søge professionel rådgivning, før du handler på baggrund af information fra vores tjenester.
6. Korrekt brug
Du må ikke bruge Snillds tjenester:
i strid med gældende lovgivning
til krænkelse af andres rettigheder
til at uploade eller dele skadeligt, ulovligt, krænkende eller vildledende indhold
til at forsøge at omgå sikkerhedsforanstaltninger
til at misbruge, overbelaste eller forstyrre tjenesterne
til at indsende følsomme personoplysninger, CPR-numre eller andre fortrolige oplysninger, medmindre Snilld udtrykkeligt har anvist en egnet og sikker kanal til dette
Du er ansvarlig for, at oplysninger og materialer, du indsender, må bruges af dig, og at de ikke krænker tredjemands rettigheder.
7. Brugerinput og ansvar
Når du indsender tekst, filer eller andet materiale til vores tjenester, er du ansvarlig for indholdet og for, at det er lovligt at behandle det i den sammenhæng, du bruger tjenesten til.
Du bør ikke indsende oplysninger, som ikke er nødvendige for formålet.
8. Tredjepartsleverandører
Snilld kan anvende tredjepartsleverandører, herunder hosting-, infrastruktur- og AI-leverandører, som led i leveringen af tjenesterne.
Nogle funktioner kan derfor helt eller delvist være afhængige af tredjepartsydelser. Snilld er ikke ansvarlig for driftsforstyrrelser, ændringer eller ophør hos tredjepartsleverandører, som ligger uden for vores rimelige kontrol.
9. Tilgængelighed og ændringer
Vi bestræber os på, at vores tjenester er tilgængelige og fungerer stabilt, men vi garanterer ikke uafbrudt adgang, fejlfri drift eller, at alt indhold altid er fuldstændigt opdateret.
Vi kan løbende ændre, opdatere, begrænse eller fjerne funktioner, når det er sagligt begrundet, herunder af hensyn til drift, sikkerhed, lovgivning eller produktudvikling.
10. Immaterielle rettigheder
Alt indhold på Snillds website og i vores tjenester, herunder tekst, grafik, design, logoer, software, struktur og materiale, tilhører Snilld ApS eller vores licensgivere, medmindre andet er angivet.
Du får alene en begrænset, ikke-eksklusiv og ikke-overdragelig ret til at bruge tjenesterne til lovlige formål i overensstemmelse med disse vilkår.
Du må ikke kopiere, videredistribuere, offentliggøre, dekompilere, reverse engineere eller på anden måde udnytte materialet kommercielt, medmindre det er udtrykkeligt tilladt efter ufravigelig lov eller skriftlig aftale med Snilld.
11. Ansvarsfraskrivelse
Tjenesterne stilles til rådighed som de er og forefindes.
Snilld afgiver ingen garanti for, at output fra AI-funktioner er korrekt, fuldstændigt, egnet til et bestemt formål eller fri for fejl. Du bærer selv ansvaret for at kontrollere og validere output, før det anvendes i praksis.
12. Ansvarsbegrænsning
I det omfang loven tillader det, er Snilld ikke ansvarlig for indirekte tab, følgeskader, driftstab, avancetab, datatab, tab af goodwill eller lignende tab, der opstår som følge af brug eller manglende mulighed for brug af tjenesterne.
Snillds samlede ansvar kan ikke overstige det beløb, du eventuelt har betalt til Snilld for den relevante tjeneste i de seneste 12 måneder forud for det forhold, der gav anledning til kravet.
Intet i disse vilkår begrænser ansvar, som efter ufravigelig lov ikke lovligt kan begrænses eller fraskrives.
13. Personoplysninger og cookies
Snillds behandling af personoplysninger er beskrevet i vores privatlivspolitik. Brug af cookies og lignende teknologier er beskrevet i vores cookiepolitik.
Hvis du bruger en chat- eller AI-funktion, vil du desuden blive informeret særskilt om den relevante behandling af oplysninger i den konkrete løsning.
Vi kan opdatere disse vilkår, når det er nødvendigt, for eksempel ved ændringer i lovgivning, sikkerhed, leverandørforhold eller tjenesternes funktioner.
Den til enhver tid gældende version vil være offentliggjort på denne side med opdateringsdato. Ved væsentlige ændringer kan vi også informere via website, konto, e-mail eller anden relevant kanal.
15. Lovvalg og værneting
Disse vilkår er underlagt dansk ret.
Enhver tvist skal behandles ved de danske domstole, medmindre ufravigelige forbrugerbeskyttelsesregler giver dig yderligere rettigheder.
16. Kontakt
Hvis du har spørgsmål til disse vilkår, kan du kontakte: