← Nieuwste papers
🤖 AI

Specification and Detection of LLM Code Smells

Dit artikel introduceert het concept van LLM code smells door vijf terugkerende problematische programmeerpraktijken voor LLM-inferentie te formaliseren, breidt de SpecDetect4AI-tool uit om deze te detecteren, en demonstreert door middel van een studie naar 200 open-source systemen dat deze smells meer dan 60% van dergelijke systemen beïnvloeden met een hoge detectieprecisie.

Oorspronkelijke auteurs: Brahim Mahmoudi, Zacharie Chenail-Larcher, Naouel Moha, Quentin Stiévenart, Florent Avellaneda

Gepubliceerd 2026-07-10
📖 6 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Brahim Mahmoudi, Zacharie Chenail-Larcher, Naouel Moha, Quentin Stiévenart, Florent Avellaneda

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Stel je voor dat je net een super slimme robotassistent hebt gebouwd (een Large Language Model, of LLM) en je hebt hem uitgenodigd om in je software te gaan wonen. Het is alsoal het inhuren van een geniale tovenaar om je te helpen bij het toveren in je code. Maar er is een addertje onder het gras: als je de tovenaar geen duidelijke regels, een vaste hand en een kaart geeft, kan het een puinhoop worden. De robot kan in de war raken, zonder magie komen te zitten, of beginnen met het schreeuwen van onzin.

Dit paper is als een gids voor een detective om de "slechte gewoontes" op te sporen die ontwikkelaars per ongeluk aanleert wanneer ze deze tovenaars in hun code uitnodigen. De auteurs, Brahim, Zacharie, Naouel, Quentin en Florent, realiseerden zich dat hoewel iedereen weet hoe je code schrijft, niemand een formele lijst heeft opgeschreven van de specifieke "smells" (die subtiele, slechte gewoontes die niet direct een crash veroorzaken, maar de software later ziek maken) die specifiek optreden bij het gebruik van LLM's.

De Vijf "Slechte Gewoontes" (De Smells)

Het team heeft door onderzoeksartikelen, tech-blogs en echte code uit de praktijk gespit om vijf terugkerende problemen te vinden. Denk aan deze "Top 5 Manieren om de Taak van je Tovenaar te Verpesten":

  1. De "Oneindig Budget" Smell (Unbounded Max Metrics): Stel je voor dat je je tovenaar vertelt: "Ga een verhaal schrijven, maar stop niet totdat je zonder papier of tijd zit." In de echte wereld hebben API's limieten. Als je geen limiet instelt op hoeveel woorden (tokens) de tovenaar kan uitspugen, of hoe lang hij kan nadenken (timeouts), krijg je misschien een half afgemaakt verhaal, of erger nog, je computer kan vast blijven zitten terwijl hij eeuwig wacht terwijl je een fortuin betaalt. De oplossing? Stel altijd een harde stop in op de lengte en de tijd.
  2. De "Bewegend Doelwit" Smell (No Model Version Pinning): Stel je voor dat je tovenaar "GPT-4" heet. Maar wat als het bedrijf achter de tovenaar morgen stiekem het brein binnen het "GPT-4"-lichaam vervangt door een ander brein? Als je je code niet vastlegt aan een specifieke versie (zoals "GPT-4 van 20 november 2024"), werkt je software vandaag misschien wel, maar gedraagt het zich morgen totaal vreemd omdat de tovenaar veranderd is. De oplossing? Leg de tovenaar vast aan een specifieke, onveranderlijke versie.
  3. De "Geen Baas" Smell (No System Message): Stel je voor dat je je tovenaar een kamer in stuurt zonder hem te vertellen wie hij is of wat de regels zijn. Hij kan zich dan als een komiek gedragen terwijl je een leraar wilde, of als een dichter terwijl je een programmeur wilde. Zonder een "System Message" om de toon en de rol vast te stellen, zijn de resultaten onvoorspelbaar en moeilijk te controleren. De oplossing? Geef de tovenaar altijd een duidelijke functiebeschrijving voordat hij aan het werk gaat.
  4. De "Rommelig Bureau" Smell (No Structured Output): Stel je voor dat je je tovenaar vraagt om een lijst met ingrediënten, maar hij overhandigt je een paragraaf met warrige tekst in plaats van een nette lijst. Als je software een nette lijst verwacht (zoals JSON) om zijn werk te doen, zal het crashen bij het proberen te lezen van de bende. De oplossing? Dwing de tovenaar om in een strikt formaat te schrijven, zoals een checklist, zodat je software het gemakkelijk kan lezen.
  5. De "Rollercoaster" Smell (Temperature Not Explicitly Set): Stel je voor dat dit de "creativiteitsdraaiknop" van de tovenaar is. Als je deze niet instelt, kan de tovenaar de ene dag super serieus zijn en de volgende dag totaal chaotisch, afhankelijk van wat de standaardinstelling toevallig is. Dit maakt je software onbetrouwbaar omdat dezelfde vraag telkens een ander antwoord krijgt. De oplossing? Draai de knop altijd naar een specifiek getal zodat de tovenaar zich elke keer op dezelfde manier gedraagt.

Wat Ze Hebben Gevonden (Het Bewijs)

Om te zien hoe algemeen deze slechte gewoontes zijn, bouwde het team een speciale tool genaamd SpecDetect4LLM. Denk aan het als een spellingscontrole die alleen kijkt naar deze vijf specifieke tovenaar-gerelateerde fouten. Ze hebben deze tool uitgevoerd op 200 verschillende open-source softwareprojecten die LLM's gebruiken.

Hier is de grote onthulling: 60,50% van die 200 projecten had ten minste één van deze slechte gewoontes. Dat is meer dan de helft!

De tool was behoorlijk goed in het opsporen van de echte problemen, met een precisie van 86,06%. Dit betekent dat wanneer de tool zei: "Hé, je hebt hier een slechte gewoonte," het in 86 van de 100 gevallen juist was.

Ze hebben ook uitgesplitst hoe vaak elke "smell" voorkwam:

  • No Structured Output (NSO): De meest voorkomende, gevonden in 40,50% van de systemen.
  • Unbounded Max Metrics (UMM): Gevonden in 38,00% van de systemen.
  • No Model Version Pinning (NMVP): Gevonden in 36,00% van de systemen.
  • LLM Temperature Not Explicitly Set (TNES): Gevonden in 36,50% van de systemen.
  • No System Message (NSM): Gevonden in 34,50% van de systemen.

Wat Ze Niet Weten (De Limieten)

Het is belangrijk om op te merken wat dit paper niet heeft gedaan. De auteurs hebben niet geprobeerd te tellen hoeveel slechte gewoontes ze hebben gemist (ze hebben de "recall" niet gemeten). Ze hebben alleen gecontroleerd hoe nauwkeurig hun tool was wanneer deze wel iets vond. Ook kijkt hun tool naar de code op de pagina (statische analyse), dus het kan niet zien wat er gebeurt wanneer de code daadwerkelijk draait en praat met de tovenaar in realtime. Ze suggereren dat toekomstig werk naar die lopende effecten zou kunnen kijken, maar voor nu hebben ze alleen de code gemeten zoals deze in de bestanden staat.

De Conclusie

De belangrijkste boodschap is niet dat deze systemen onherstelbaar kapot zijn. Het is dat ontwikkelaars deze krachtige AI-tools vaak behandelen als magische dozen zonder de handleiding te lezen. Door deze vijf "smells" te definiëren en een tool te bouwen om ze te vinden, geven de auteurs ontwikkelaars een checklist om hun AI-geïntegreerde software betrouwbaarder, goedkoper in gebruik en gemakkelijker te repareren te maken. Ze zeggen niet dat ze het hele probleem van AI-veiligheid hebben opgelost, maar ze hebben zeker de eerste vijf kuilen in de weg gevonden en borden geplaatst zodat anderen ze kunnen vermijden.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →