<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>software engineering &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/tag/software-engineering/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Tue, 21 Apr 2026 10:14:24 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.smalsresearch.be/wp-content/uploads/2026/01/cropped-cropped-Smals_Research-32x32.png</url>
	<title>software engineering &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Legacy &#038; IA : Voyagez dans le Temps depuis votre Terminal</title>
		<link>https://www.smalsresearch.be/legacy-ai-voyagez-temps-terminal/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Tue, 14 Apr 2026 09:48:59 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">https://www.smalsresearch.be/?p=28963</guid>

					<description><![CDATA[Depuis l'essor de l'engouement pour les grands modèles de langage, la plupart des développeurs ont sans doute déjà pu constater le gain de productivité que ces outils peuvent offrir, à condition de les utiliser correctement. Dans cet article de blog, nous explorons la possibilité d'aller plus loin : l'IA offre-t-elle une aide suffisante afin de maîtriser le legacy code ?]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-large is-resized"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj.png"><img fetchpriority="high" decoding="async" width="1024" height="1024" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-1024x1024.png" alt="" class="wp-image-27693" style="width:274px;height:auto"/></a></figure>



<p class="justify-text no-top-margin"><em>Dit artikel is ook beschikbaar in het <a href="https://www.smalsresearch.be/legacy-ai-tijdreizen-in-je-terminal/" data-type="post" data-id="27622">Nederlands</a>.</em></p>



<p class="justify-text" style="padding-top:0;padding-right:0;padding-bottom:0;padding-left:0">Depuis l&#8217;essor de l&#8217;engouement pour les grands modèles de langage, la plupart des développeurs ont sans doute déjà pu constater le gain de productivité que ces outils peuvent offrir, à condition de les utiliser correctement. Dans cet article de blogue, nous explorons la possibilité d&#8217;aller plus loin&nbsp;: l&#8217;IA offre-t-elle une aide suffisante afin de maîtriser le <em>legacy code</em>&nbsp;?</p>



<span id="more-28963"></span>



<p class="justify-text">Le recours aux grands modèles de langage <a href="https://www.smalsresearch.be/zin-onzin-en-nut-van-llms-zijn-ze-de-hype-waard/">(Large Language Model &#8211; LLM)</a> en programmation est en effet bien connu à présent&nbsp;: cela va de la formulation de questions à un <em>chatbot</em> (&#8220;comment écrire un algorithme en Java qui&#8230;&#8221;), à un <a href="https://www.smalsresearch.be/llms-pour-code/"><em>code completion</em> de plus en plus intelligent et étendu</a> (saisie automatique de ce que vous souhaitez taper dans l&#8217;éditeur), jusqu&#8217;au <a href="https://www.smalsresearch.be/vibe-coding-avec-les-ides-agentique/"><em>vibe coding</em> complet </a>(dans l&#8217;IDE, ou même simplement dans un terminal)&nbsp;: des agents d&#8217;IA rédigent, à l&#8217;aide de <em>prompts</em>, des pans entiers de code sur votre machine &#8211; oui, même des applications fonctionnelles.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:30%">
<p class="justify-text">Cette méthode de travail a déjà été décrite <a href="https://www.smalsresearch.be/vibe-coding-avec-les-ides-agentique/">dans un article de blog précédent</a>, et les mises en garde et les points auxquels il faut prêter attention, restent d&#8217;actualité&nbsp;: surveiller en permanence, remettre les choses en question, vérifier, et fournir à l&#8217;IA la bonne quantité de contexte utile (un art en soi). Cependant, le traitement du <strong>code <em>legacy</em></strong> pose encore un certain nombre de problèmes supplémentaires&nbsp;:</p>



<ul class="wp-block-list">
<li class="justify-text">Il ne s&#8217;agit pas d&#8217;une nouvelle construction (ou <em>greenfield</em>)&nbsp;: les décisions du passé, souvent obscures, ont un impact considérable.</li>



<li class="justify-text">Dans de nombreux cas, il existe déjà une masse de code.</li>



<li class="justify-text">Souvent, la compilation, l’exécution et le test du code nécessitent une technologie spécifique, qui est elle-même obsolète et parfois difficile à installer ou à simuler.</li>



<li class="justify-text">En tant qu’humain, on n’est souvent plus au courant du comment et du pourquoi de la base de code existante, ce qui rend plus difficile l’évaluation critique des résultats de l’IA.</li>
</ul>
</div>



<div class="wp-block-column is-style-section-1 has-accent-5-background-color has-background is-layout-flow wp-container-core-column-is-layout-43dc041e wp-block-column-is-layout-flow is-style-section-1--1" style="border-width:2px;border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;flex-basis:70%">
<h3 class="wp-block-heading is-style-default" style="margin-top:var(--wp--preset--spacing--20);margin-right:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);margin-left:var(--wp--preset--spacing--20)"><span style="text-decoration: underline;"><em>Vibe coding</em>&nbsp;: quelques conseils</span></h3>



<p class="justify-text has-small-font-size" style="padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)"><em>Nous avons déjà découvert ces astuces simples dans le cadre de notre travail sur le code </em>legacy<em> et l&#8217;IA, mais elles s&#8217;appliquent plus largement à tous les projets de </em>Vibe Coding<em>.</em></p>



<ul class="wp-block-list">
<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Nettoyage en profondeur&nbsp;: avant de laisser une IA se pencher sur une base de code, vous devez vous assurer qu&#8217;elle ne contient aucune donnée privée, aucun mot de passe ni aucune autre information sensible&nbsp;!</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Planification&nbsp;: demandez des options et reportez l&#8217;exécution. En effet, lorsqu&#8217;on maîtrise soi-même ce que l&#8217;on souhaite réaliser, on a certainement déjà une idée précise de l&#8217;objectif à atteindre. Il peut toutefois s&#8217;avérer utile de commencer une conversation avec l&#8217;IA en gardant l&#8217;esprit ouvert et de lui demander des idées et des options (par exemple en matière d&#8217;architecture ou de technologie utilisée) pour concrétiser sa vision générale (tout en précisant à l&#8217;IA, parfois trop zélée, qu&#8217;il ne s&#8217;agit encore que de planification). Demandez spécifiquement plusieurs suggestions&nbsp;! Cela peut aider à réfléchir ensemble et à enrichir vos propres idées avec davantage d’inspiration. Au fil de la conversation, explorez plus en profondeur les options qui vous plaisent le plus, puis n’ajoutez votre expertise personnelle que pour affiner les idées de l’IA, jusqu’à ce qu’un plan d’action concret et aussi optimal que possible ait vu le jour. Ce n’est qu’ensuite que nous passerons à une mise en œuvre effective..</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Indirection et outils. En particulier lorsque vous travaillez via une CLI (Command Line Interface), ni vous ni l’IA n’avez immédiatement conscience de tous les outils existants qui pourraient être exploités pour atteindre vos objectifs. Laissez l’IA rechercher les outils susceptibles de vous aider, et aidez-la à les installer. Plus vous pouvez accomplir de tâches à l&#8217;aide d&#8217;outils, moins le contexte est encombré par un travail &#8220;manuel&#8221; inutile effectué par l&#8217;IA elle-même (sans parler des économies réalisées en termes de consommation de <em>tokens</em>). Il existe par exemple toutes sortes d&#8217;outils d&#8217;analyse statique de code permettant d&#8217;évaluer et de maintenir la qualité des lignes de code que vous écrivez. L&#8217;IA n&#8217;a souvent aucun mal à mettre en œuvre bon nombre des suggestions fournies après l&#8217;analyse.</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Mode Expert&nbsp;: parfois, les outils standard ne suffisent pas pour aider suffisamment l&#8217;IA à accomplir ce que vous souhaitez qu&#8217;elle fasse. Dans ce cas, vous pouvez d&#8217;abord laisser l&#8217;IA écrire ses propres outils. De cette manière, il est possible de s&#8217;assurer que le résultat, ou l&#8217;<em>output</em> de l&#8217;outil, soit concis et synthétique pour les tâches suivantes, afin de ne pas surcharger le contexte. Les <em>context windows</em> des LLM s&#8217;agrandissent certes de plus en plus, mais il faut tout de même veiller à ce qu&#8217;elles ne contiennent que les éléments les plus utiles (attention au <a href="https://redis.io/blog/context-rot/"><em>context rot</em></a>).</li>
</ul>
</div>
</div>



<p>Nous avons donné une définition très large du code <em>legacy</em> dans un <a href="https://www.smalsresearch.be/code-herite-meilleures-pratiques-ia/">précédent article de blog</a>. Commençons donc par préciser ce que nous entendons par &#8220;<em>legacy</em>&#8221; et par mieux illustrer le &#8220;degré de difficulté&#8221; des projets legacy.</p>



<h2 class="wp-block-heading">&#8220;Ancien&#8221; code&nbsp;: une multitude de possibilités</h2>



<p class="justify-text">Il n’existe pas vraiment de définition officielle du code <em>legacy</em>&nbsp;; généralement, on parle de l’utilisation d’une technologie qui n’est plus prise en charge, difficile à maintenir, ou simplement de &#8220;code dont on hérite de quelqu’un d’autre&#8221;. Il s’agit évidemment toujours de code encore en service, et donc important. Ironiquement, les applications les plus critiques sont souvent celles qui existent depuis des années et auxquelles on &#8220;fait confiance&#8221; depuis longtemps, mais sans les entretenir correctement.</p>



<p class="justify-text">L&#8217;IA peut nous aider à entretenir n&#8217;importe quel code ; nous allons donc présenter un spectre allant du code <em>legacy</em> le plus ancien et le plus problématique au code de projets ne nécessitant qu&#8217;une petite mise à jour. À une extrémité du spectre, on trouve des programmes écrits dans des langages de programmation obsolètes, selon une architecture dépassée, utilisant des bases de données qui ne sont plus d’actualité et fonctionnant sur des serveurs équipés de systèmes d’exploitation qui ne sont plus pris en charge&nbsp;: avec ces géants, on doit souvent craindre une défaillance critique à la moindre modification erronée. À l’autre extrémité, on trouve des logiciels assez bien entretenus, mais qui utilisent une bibliothèque logicielle qui n’est plus la version la plus récente&nbsp;: il est généralement très facile de les remettre entièrement à jour. Enfin, quelque part entre les deux, on trouve des applications pour lesquelles la plupart des développeurs n’utiliseraient pas encore le terme <em>legacy</em>, mais qui nécessitent néanmoins des migrations complexes, avec par exemple un ou deux <em>frameworks</em> obsolètes à remplacer.</p>



<figure class="wp-block-image size-large is-resized"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_307h9q307h9q307h-scaled.png"><img decoding="async" width="1024" height="506" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_307h9q307h9q307h-1024x506.png" alt="" class="wp-image-27634" style="width:1301px;height:auto"/></a></figure>



<p class="justify-text">Que pouvons-nous en faire&nbsp;? Les LLM offrent-ils d&#8217;autres possibilités en fonction de la position du projet sur ce spectre&nbsp;? Jusqu&#8217;à présent, nos recherches se sont concentrées sur la partie gauche de ce spectre&nbsp;; la suite de cet article portera donc davantage sur les possibilités d&#8217;aborder le &#8220;véritable&#8221; legacy. Plus tard dans l&#8217;année, nous approfondirons également ce que nous pouvons faire en matière de migrations et d&#8217;updates.</p>



<h1 class="wp-block-heading">Utilisation des LLM sur des bases de code <em>legacy</em></h1>



<p class="justify-text">Il est clair qu&#8217;un simple prompt &#8220;réécris ce programme selon les normes modernes&#8221; ne fonctionnera pas (même si certains fournisseurs affirment que cela sera bientôt possible). Nous devrons poser des questions un peu plus concrètes et décomposer le travail en plusieurs étapes. Il y a en fait deux choses que nous pouvons faire avec notre code <em>legacy&nbsp;</em>: le réécrire et le documenter.</p>



<h2 class="wp-block-heading">Réécriture du code <em>legacy</em></h2>



<p class="justify-text">Lorsque nous commençons à réécrire du code, nous devons souvent tenir compte du fait que la reconstruction complète d’un très grand projet est une tâche trop difficile. Il est possible d’obtenir des &#8220;quick wins&#8221; en réécrivant stratégiquement certaines parties d’un projet, qui seront ensuite réutilisées dans un contexte plus large, où une équipe humaine et l’IA reconstruiront l’application dans les règles de l’art. Nos expériences nous ont montré qu’il était trop ambitieux d’attendre de l’IA qu’elle utilise une architecture entièrement nouvelle tout en traduisant l’ancien code vers le nouveau. En revanche, il est possible de &#8220;vibe coder&#8221; une grande partie de la charpente typique d’un nouveau projet, puis d’y injecter de manière ciblée un certain nombre de morceaux de code qui sont des traductions de parties d’un projet <em>legacy</em>. En tant qu’êtres humains, notre tâche consiste à indiquer clairement quelle architecture nous attendons et quelles sont les règles de qualité du code nouveau.</p>



<p class="justify-text">L&#8217;un des principaux défis liés à la réécriture de code à l&#8217;aide de l&#8217;IA consiste à tester l&#8217;exactitude de la traduction&nbsp;: le code fait-il toujours ce qu&#8217;il faisait auparavant (indépendamment du fait que cela soit souhaitable, car même le <em>business case</em> peut parfois être trop obsolète dans le cas d&#8217;un projet <em>legacy</em>)&nbsp;? Pour les projets relativement récents, il existe déjà de nombreux tests que nous pouvons effectuer pour vérifier l&#8217;exactitude, mais avec les anciens systèmes <em>legacy</em>, nous sommes souvent confrontés au problème que l&#8217;application est simplement testée en production, ou du moins avec des données de production&nbsp;: il n&#8217;y a pas de tests spécifiques ni même de données de test pouvant être utilisées en toute sécurité. Dans ce cas, il s&#8217;agit de créer un environnement dans lequel nous pouvons tester le nouveau code en toute sécurité, ce qui est généralement un travail ad hoc et demande une certaine créativité. Nous ne pouvons pas envoyer de données de production vers le <em>cloud</em>, nous devons donc nous assurer que le LLM ne puisse pas les lire. Ce serait plus simple si nous pouvions utiliser des LLM fonctionnant en local, mais pour l&#8217;instant, ceux-ci ne sont pas encore assez puissants (quand ils sont disponibles) pour effectuer des tâches aussi complexes avec du code <em>legacy</em>.</p>



<p class="justify-text">L&#8217;interface utilisateur constitue un autre défi&nbsp;: dans les projets plus anciens, celle-ci est souvent obsolète et il faut construire une nouvelle GUI à partir de zéro. Cela pose toutefois le problème de ne plus disposer d&#8217;une base de référence dans l&#8217;ancien projet&nbsp;: la nouvelle interface devra généralement être testée manuellement par des personnes. J&#8217;espère toutefois que nous verrons des progrès dans ce domaine dans un avenir proche, en ce qui concerne les possibilités de l&#8217;IA. En effet, nous voyons déjà apparaître des systèmes capables de contrôler l&#8217;intégralité de votre ordinateur (comme OpenClawd), et l&#8217;intégration avec des frameworks plus traditionnels pour le test d&#8217;une interface graphique fait également partie des possibilités.</p>



<p class="justify-text">Enfin, les petits projets <em>legacy</em> constituent également un domaine où nous pouvons obtenir des résultats rapides. Si nous utilisons un programme <em>legacy </em>petit à moyen, doté de fonctionnalités limitées et d’une GUI simple, ou présentant un <em>input </em>et un <em>output </em>clairs en cas de traitement par lots, et qu’il n’existe aucun <em>business case</em> justifiant son intégration dans une autre méthode de travail, nous pouvons alors tenter une approche directe pour construire une version moderne dans un nouveau langage de programmation à l’aide de l’IA. Dans ce cas, il faudra tout de même bien tester et adopter une approche structurée avec un accompagnement des développeurs humains, mais il est possible d&#8217;essayer cette méthode pour des applications non critiques. Une application à usage interne, par exemple, constitue généralement un bon premier candidat.</p>



<h2 class="wp-block-heading">Documentation du code <em>legacy</em></h2>



<p class="justify-text">Parfois, la réécriture du code <em>legacy </em>avec l&#8217;IA est un peu trop ambitieuse, ou nous avons besoin de plus d&#8217;informations avant de nous y risquer. Il peut être intéressant de se tourner d’abord vers la documentation&nbsp;: l’IA peut également nous aider à faire en sorte que l’exploration d’une base de code <em>legacy </em>ressemble un peu moins à de l’archéologie de haut niveau.</p>



<p class="justify-text">Expliquer un morceau de code de petite à moyenne taille et en extraire la logique business, ou analyser un morceau plus important et en expliquer la structure et l’architecture, tout cela est tout à fait possible avec les grands modèles de langage actuels. Il est toutefois possible d’aller plus loin&nbsp;: il est possible de créer des outils d’IA pour l&#8217;aider à explorer la base de code et, par exemple, à générer des diagrammes illustrant les dépendances entre les segments de code. Ou bien on peut lui faire écrire des scripts afin de structurer soigneusement ses conclusions après chaque analyse dans un fichier texte pour elle-même et un PDF destiné à l’utilisateur humain.</p>



<p class="justify-text">Il est également possible d&#8217;adopter une approche hiérarchique&nbsp;: commencer par explorer la base de code, puis approfondir progressivement l&#8217;analyse des différents modules afin d&#8217;obtenir de plus en plus de détails et de compléter l&#8217;analyse. Il s&#8217;agit là de l&#8217;approche descendante, que nous pouvons toutefois compléter par une version ascendante&nbsp;: une fois que nous sommes allés en profondeur, nous pouvons à nouveau demander un résumé afin de construire une présentation mieux documentée de la situation dans son ensemble.</p>



<p class="justify-text">Il est toutefois important ici de savoir à l&#8217;avance ce que nous souhaitons exactement atteindre. Une analyse générale d’une base de code par l’IA peut s’avérer intéressante lorsque les utilisateurs humains ne connaissent pas du tout le système et souhaitent disposer de points de repère pour se familiariser avec celui-ci.</p>



<p class="justify-text">Cependant, lorsque l&#8217;objectif est de pouvoir assurer la maintenance de la base de code, il est préférable de mettre en place un système proposant un <em>chatbot</em> qui connaît le contexte spécifique et les particularités du projet <em>legacy</em>, et qui peut répondre à des questions très ciblées à ce sujet. Cela est possible, par exemple, dans CoPilot Studio. Si cela ne fonctionne pas correctement, il est possible d&#8217;envisager de construire manuellement une base de connaissances en utilisant l&#8217;IA qui pourra ensuite être utilisée par l&#8217;IA pour répondre aux questions.</p>



<p class="justify-text">Une autre option consiste à extraire des informations spécifiques de la base de code, telles que la logique business par module individuel, ou du pseudocode pouvant aider les développeurs humains à réimplémenter cette logique dans un autre projet. (Et bien sûr, une IA peut également être mise à contribution lors de cette deuxième étape).</p>



<p class="justify-text">Avec une touche de créativité, nous pouvons concevoir une meilleure approche pour la plupart des analyses ad hoc que celle consistant à &#8220;se contenter d’analyser à tout va&#8221;. Et la documentation d’un système <em>legacy </em>peut tout simplement constituer une première étape vers sa réécriture.</p>



<h1 class="wp-block-heading" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)">Conclusion&nbsp;: professionnels recherchés</h1>



<figure class="wp-block-image alignright size-large is-resized is-style-default" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-scaled.png"><img decoding="async" width="1024" height="559" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-1024x559.png" alt="" class="wp-image-27699" style="aspect-ratio:1.8333516399024625;object-fit:contain;width:546px;height:auto"/></a></figure>



<p class="justify-text no-top-margin">Comme mentionné précédemment, les LLM nous offrent progressivement des possibilités très puissantes pour traiter nos bases de code <em>legacy</em>, surtout lorsque nous avons accès aux modèles volumineux et puissants disponibles aujourd’hui. Nous constatons toutefois qu’il s’agit en réalité d’une boîte à outils très bien fournie, comprenant plusieurs outils puissants, et que nous devons savoir ce que nous voulons en faire et comment les utiliser au mieux.</p>



<p class="justify-text">Tout n’est pas encore entièrement automatisé&nbsp;: nous aurons donc toujours besoin de bons professionnels pour tirer le meilleur parti de ces outils. Notre conseil aux développeurs est de ne surtout pas avoir peur de l’IA et de l’utiliser régulièrement lors de l’analyse et du développement de logiciels&nbsp;: l’expérience est la meilleure école pour former les bons professionnels dont nous avons besoin dans ce domaine.</p>



<p class="justify-text">Pour l’instant, la conclusion est donc la suivante&nbsp;: pour le code <em>legacy</em>, l’IA n’est pas une panacée, mais une boîte à outils pratique qu’il vaut mieux essayer dans le cadre d’une approche plus large. Comme indiqué, nous nous pencherons plus tard dans l&#8217;année sur le milieu et la partie droite du spectre du code <em>legacy</em>. Nous pensons qu&#8217;il existe ici davantage de possibilités d&#8217;automatisation de certains workflows, surtout si nous exploitons davantage les agents. Il est donc possible que, pour des projets un peu plus simples et répétitifs, nous puissions évoluer du &#8220;professionnel&#8221; vers &#8220;l&#8217;usine&#8221;.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Legacy &#038; AI: Tijdreizen in je Terminal</title>
		<link>https://www.smalsresearch.be/legacy-ai-tijdreizen-in-je-terminal/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 07:56:17 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">https://www.smalsresearch.be/?p=27622</guid>

					<description><![CDATA[Sinds de hype van grote taalmodellen is losgebarsten, zullen de meeste ontwikkelaars ondertussen al wel geproefd hebben van de productiviteitswinst die deze tools, mits correct gebruik, kunnen bieden. In deze blog onderzoeken we of we verder kunnen gaan dan dat: biedt het AI ook voldoende hulp bij het beheersen van Legacy Code?]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-large is-resized"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj.png"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-1024x1024.png" alt="" class="wp-image-27693" style="width:274px;height:auto"/></a></figure>



<p class="no-top-margin justify-text"><em>Cet article est aussi disponible en <a href="https://www.smalsresearch.be/legacy-ai-voyagez-temps-terminal/" data-type="post" data-id="28963">français</a>.</em></p>



<p class="justify-text" style="padding-top:0;padding-right:0;padding-bottom:0;padding-left:0">Sinds de hype van grote taalmodellen is losgebarsten, zullen de meeste ontwikkelaars ondertussen al wel geproefd hebben van de productiviteitswinst die deze tools, mits correct gebruik, kunnen bieden. In deze blog onderzoeken we of we verder kunnen gaan dan dat: biedt AI ook voldoende hulp bij het beheersen van Legacy Code?</p>



<span id="more-27622"></span>



<p class="justify-text">Het inzetten van <a href="https://www.smalsresearch.be/zin-onzin-en-nut-van-llms-zijn-ze-de-hype-waard/" data-type="post" data-id="24386">Large Language Models (LLM)</a> bij het programmeren is inderdaad ondertussen stilaan goed gekend: het gaat van vragen stellen aan een chatbot (&#8220;hoe schrijf ik in Java een algoritme dat &#8230; &#8220;), overheen steeds <a href="https://www.smalsresearch.be/llms-voor-code/" data-type="post" data-id="18875">slimmere en langer wordende <em>code completion</em></a> (automatisch aanvullen wat je wil typen in de editor), tot <a href="https://www.smalsresearch.be/vibe-coding-met-agentic-ides/" data-type="post" data-id="22499">volledige <em>vibe coding</em></a> (in de IDE, of zelfs gewoon in een terminal): AI agenten, via prompts, hele stukken code &#8211; ja, zelfs werkende toepassingen &#8211; laten schrijven op je machine.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:30%">
<p class="justify-text">Deze manier van werken beschreven we reeds <a href="https://www.smalsresearch.be/vibe-coding-met-agentic-ides/" data-type="post" data-id="22499">in een vorige blogpost</a>, en de caveats, zaken waarop men moet letten, gelden nog steeds: blijf continu opvolgen, stel zaken in vraag, controleer, en geef de juiste hoeveelheid nuttige context mee aan het AI (een kunst op zich). Voor het behandelen van <strong><em>legacy code</em></strong>, stellen er zich echter nog een aantal verdere problemen:</p>



<ul class="wp-block-list">
<li class="justify-text">Het is geen nieuwbouw (of <em>greenfield</em>): er is erg veel impact van &#8211; vaak obscure &#8211; beslissingen uit het verleden.</li>



<li class="justify-text">In veel gevallen is er reeds een massa code aanwezig.</li>



<li class="justify-text">Vaak vraagt het com- pileren, uitvoeren en testen van de code specifieke technologie, die zelf verouderd is en soms moeilijk te in-stalleren of simuleren.</li>



<li class="justify-text">Je bent als mens vaak niet meer onderwezen in het hoe en waarom van de bestaande codebase, waardoor het moeilijker wordt de resultaten van het AI kritisch te be-oordelen.</li>
</ul>
</div>



<div class="wp-block-column is-style-section-1 has-accent-5-background-color has-background is-layout-flow wp-container-core-column-is-layout-43dc041e wp-block-column-is-layout-flow is-style-section-1--2" style="border-width:2px;border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;flex-basis:70%">
<h3 class="wp-block-heading is-style-default" style="margin-top:var(--wp--preset--spacing--20);margin-right:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);margin-left:var(--wp--preset--spacing--20)"><span style="text-decoration: underline;">Vibe Coding: Een aantal Tips</span></h3>



<p class="justify-text has-small-font-size" style="padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)"><em>Deze eenvoudige truukjes ondervonden we reeds bij ons werk rond Legacy Code &amp; AI, maar zijn breder toepasbaar naar alle Vibe Coding projecten.</em></p>



<ul class="wp-block-list">
<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Grote Schoonmaak: vóór je een AI loslaat op een codebase, moet je ervoor zorgen dat er geen privégegevens, paswoorden, of andere gevoelige informatie in te vinden zijn!</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Planning: vraag om opties en stel executie uit. Als je zelf bedreven bent in wat je wil doen, heb je vast en zeker al een idee van waar je precies naartoe wilt. Het kan echter soms lonen om je gesprek met het AI heel open van geest te beginnen en te vragen naar ideeën en opties (b.v. qua architectuur of gebruikte technologie) om je algemene visie te bewaarlijken (waarbij je het soms overijverige AI ook duidelijk maakt dat er alleen nog maar wordt gepland). Vraag specifiek naar meerdere suggesties! Dit kan helpen bij het brainstormen, en om je eigen ideeën aan te vullen met meer inspiratie. In het vervolg van het geprek ga je dan dieper in op de opties die je het meeste aanstaan, en dan pas vul je aan met je eigen expertise om de ideeën van het AI bij te sturen, tot er een concreet plan van actie is ontstaan dat zo optimaal mogelijk is. Pas daarna gaan we over tot effectieve implementatie.</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Indirectie en Tools. Zeker als je via een CLI (Command Line Interface) werkt, zijn zowel jij als het AI zich niet meteen bewust van alle mogelijke reeds bestaande tools die zouden kunnen worden geëxploiteerd om je doelen te bereiken. Laat het AI zoeken naar tools die zouden kunnen helpen, en helpen bij de installatie ervan. Hoe meer zaken je via tools kan doen, hoe minder de context wordt vervuild met nodeloos &#8220;manueel&#8221; werk door het AI zelf (om nog maar te zwijgen van de besparing qua token gebruik). Zo bestaan er b.v. allerlei <a href="https://en.wikipedia.org/wiki/Static_program_analysis">static code analysis tools</a> die je kan gebruiken om de kwaliteit van je geschreven code te evalueren en hoog te houden. Het is vaak een koud kunstje voor het AI om heel wat van de gegeven suggesties na de analyse uit te voeren.</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Expert Mode: soms volstaan standaard tools niet om het AI voldoende te helpen bij wat je wil dat het doet. In dat geval kan je het AI eerst diens eigen tools laten schrijven. Daarbij kan je er voor zorgen dat het resultaat, of de output van de tool, iets is wat kort en samenvattend is voor de verdere taken, om de context niet teveel te belasten. Context windows van LLMs worden weliswaar steeds groter, maar dan nog moet je ervoor zorgen dat enkel de nuttigste zaken erin zitten (pas op voor <a href="https://redis.io/blog/context-rot/">context rot</a>).</li>
</ul>
</div>
</div>



<p>In een vorige <a href="https://www.smalsresearch.be/legacy-code-trotseren-best-practices-ai/" data-type="post" data-id="21131">post rond legacy code</a>, gaven we een erg brede definitie. Laten we dus vooreerst iets duidelijker stellen wat we met Legacy bedoelen, en de &#8220;moeilijkheidsgraad&#8221; van Legacy projecten beter illustreren.</p>



<h2 class="wp-block-heading">&#8220;Oude&#8221; code: een spectrum aan mogelijkheden</h2>



<p class="justify-text">Er is niet echt een officiële definitie van legacy code; meestal spreekt men van het gebruik van niet langer ondersteunde technologie, moeilijk te onderhouden, of simpelweg &#8220;code die je van iemand anders erft&#8221;. Het gaat uiteraard altijd wel om code die nog in gebruik, en dus belangrijk is. Ironisch genoeg, zijn het vaak de meest kritische toepassingen, die al jaren meegaan en waar men al jaren &#8220;op vertrouwt&#8221;, maar dan zonder ze goed te onderhouden.</p>



<p class="justify-text">AI kan ons helpen bij het onderhoud van eender welke code, dus we zullen een spectrum demonstreren dat van de oudste, ergste legacy code gaat, tot code van projecten die slechts een kleine update nodig heeft. Aan de ene kant van het spectrum heb je programma&#8217;s, geschreven in ouderwetse programmeertalen, volgens een achterhaalde architectuur, gebruik makend van databases die niet meer van deze tijd zijn, en draaiende op servers met niet langer ondersteunde besturingssystemen: bij deze mastodonten moet men vaak bang zijn dat ze kritisch zullen falen bij de kleinste verkeerde wijziging. Helemaal aan de andere kant heb je vrij goed onderhouden software, waarin een softwarebibliotheek wordt gebruikt die niet meer de meest recente versie is: meestal een koud kunstje om ze weer helemaal up-to-date te krijgen. Ergens in het midden vind je, ten slotte, toepassingen terug waarbij de meeste developers nog niet meteen het woord Legacy in de mond zullen nemen, maar waar wel moeilijke migraties dienen te gebeuren, met b.v. een verouderd framework of twee dat zou moeten worden vervangen.</p>



<figure class="wp-block-image size-large is-resized"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_307h9q307h9q307h-scaled.png"><img loading="lazy" decoding="async" width="1024" height="506" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_307h9q307h9q307h-1024x506.png" alt="" class="wp-image-27634" style="width:1301px;height:auto"/></a></figure>



<p class="justify-text">Wat kunnen we hier nu mee? Bieden LLMs ons andere mogelijkheden naargelang de plaats van het project op dit spectrum? Ons onderzoek heeft zich tot nu toe op de linkerkant van dit spectrum gefocust, dus het vervolg van deze blogpost zal veeleer over de mogelijkheden gaan om &#8220;échte&#8221; Legacy aan te pakken. Later dit jaar gaan we ook verder uitdiepen wat we met migraties en updates kunnen doen.</p>



<h2 class="wp-block-heading">Gebruik van LLMs op Legacy Codebases</h2>



<p class="justify-text">Het is duidelijk dat de eenvoudige prompt &#8220;herschrijf mij dit programma volgens moderne standaarden&#8221; niet zal werken (al beweren sommige vendors dat dit eraan zit te komen). We zullen iets concretere zaken gaan vragen, en het werk ook enigszins in stukjes moeten kappen. Verder zijn er eigenlijk twee zaken die we kunnen gaan doen met onze legacy code: ze herschrijven en ze documenteren.</p>



<h3 class="wp-block-heading">Herschrijven van Legacy Code</h3>



<p class="justify-text">Als we beginnen met code herschrijven, zullen we er vaak rekening mee moeten houden dat een heel groot project voldoende goed herbouwen een te moeilijke opgave is. We kunnen &#8220;quick wins&#8221; behalen door strategisch een aantal zaken te gaan herschrijven van een project, en die stukken dan te gebruiken in een ruimere context, waarbij een team van mensen en AI de toepassing opnieuw bouwen volgens de regels van de kunst. Bij onze experimenten stelden we vast dat het een brug te ver was om van het AI te verwachten een volledig nieuwe architectuur te gebruiken, tegelijk met het vertalen van oude code naar nieuwe. Wat wel mogelijk is, is om heel wat van de typische scaffolding (de standaardcode om tot iets werkend te komen) van een nieuw project te vibe coden, en daar dan gericht een aantal stukken code in te injecteren die vertalingen zijn van stukjes van een legacy project. Als mens is het onze taak om duidelijk aan te geven welke architectuur we verwachten, en wat de kwaliteitsregels zijn van de nieuw geschreven code.</p>



<p class="justify-text">Eén van de grotere uitdagingen bij het herschrijven van code met behulp van AI, is het testen van de correctheid van de vertaling: doet de code nog wat ze vroeger deed (los van het feit of dit wenselijk is, want zelfs de business case kan soms te verouderd zijn in geval van Legacy)? Bij redelijk nieuwe projecten zullen er reeds heel wat testen bestaan die we kunnen uitvoeren om de correctheid na te gaan, maar bij legacy hebben we vaak het probleem dat de toepassing eenvoudigweg wordt getest in productie, of op zijn minst met productiedata: er zijn geen specifieke tests of zelfs maar veilig bruikbare testdata. In dat geval komt het erop neer een omgeving te creëren waarin we de nieuwe code op een veilige manier kunnen testen, wat meestal ad hoc werk is en enige creativiteit vraagt. We mogen namelijk geen productiedata naar de Cloud sturen, dus we moeten ervoor zorgen dat het LLM deze niet kan lezen. Het zou eenvoudiger zijn als we lokaal draaiende LLMs zouden kunnen gebruiken, maar voorlopig zijn deze nog niet krachtig genoeg (als ze al beschikbaar zijn) om dergelijke complexe taken uit te voeren met legacy code.</p>



<p class="justify-text">Een andere uitdaging is de gebruikersinterface: bij oudere projecten is deze vaak achterhaald en moet er, vanaf de grond, een nieuwe GUI (Graphical User Interface) worden opgebouwd. Dat geeft echter het probleem dat je geen basis meer hebt in het oude project om mee te vergelijken: de nieuwe interface zal doorgaans manueel door mensen moeten worden getest. Ik verwacht echter dat we op dit vlak nog vorderingen zullen zien in de nabije toekomst, wat de mogelijkheden van het AI betreft. We zien namelijk al systemen opduiken die je volledige computer kunnen besturen (zoals <a href="https://openclawd.ai/">OpenClaw</a> of het <a href="https://www.anthropic.com/news/3-5-models-and-computer-use">&#8220;Computer Use&#8221; van Anthropic</a>), en ook integratie met meer traditionele raamwerken voor het testen van een GUI behoort tot de mogelijkheden.</p>



<p class="justify-text">Waar we, ten slotte, ook quick wins mee kunnen halen, zijn kleinere Legacy projecten. Als we een klein tot matig groot legacy programma gebruiken, met beperkte functionaliteit en een eenvoudige GUI of een duidelijke input en output in geval van batch processing, en geen business case om deze te integreren in een andere manier van werken, dan kunnen we een rechttoe rechtaan aanpak proberen om een moderne versie in een nieuwe programmeertaal te bouwen met AI. We moeten dan nog altijd goed testen en een gestructureerde aanpak hebben met bijsturingen door menselijke developers, maar het wordt wel feasible om dit voor niet-kritische toepassingen te gaan uitproberen. Een intern gebruikte toepassing is bijvoorbeeld een typische goede eerste kandidaat.</p>



<h3 class="wp-block-heading">Documenteren van Legacy Code</h3>



<p class="justify-text">Soms is herschrijven van Legacy met AI net iets te ambitieus, óf we hebben meer informatie nodig voor we er ons aan wagen. In dat geval kan het interessant zijn om eerst richting documentatie te kijken: het AI kan ons ook helpen om het verkennen van een legacy codebase net iets minder op archeologie voor gevorderden te doen lijken.</p>



<p class="justify-text">Van een klein tot matig stuk code uitleggen en er de business logica uithalen, of een groter stuk analyseren en de opbouw en architectuur uitleggen: dat kan met de huidige grote taalmodellen zonder meer. We kunnen echter verder gaan: we kunnen het AI tools laten bouwen om zichzelf te helpen de codebase te verkennen, en b.v. diagrammen te voorzien van de afhankelijkheden tussen de stukken code. Of we kunnen het scripts laten maken om de bevindingen na elk stuk analyse netjes te structureren in een tekstbestand voor zichzelf en een pdf voor de menselijke gebruiker.</p>



<p class="justify-text">We kunnen ook hiërarchisch werken: eerst een verkenning van de codebase doen, en dan telkens dieper duiken in de verschillende modules, om meer en meer detail te verkrijgen en de analyse aan te vullen. Dat is de top-down aanpak, die we echter kunnen aanvullen met een bottom-up versie: eens we tot in de diepte zijn gegaan, kunnen we weer zaken laten samenvatten om van het grotere plaatje een beter geïnformeerde uiteenzetting op te bouwen.</p>



<p class="justify-text">Hier is het wel van belang dat we van tevoren weten wat we precies willen bereiken. Een algemene analyse van een codebase door het AI kan interessant zijn wanneer de menselijke gebruikers het systeem nog totaal niet kennen en aanknopingspunten willen hebben om zaken te leren, maar biedt meestal weinig extra aan mensen die de codebase reeds beheersen.</p>



<p class="justify-text">Maar wanneer het doel is om de codebase te kunnen onderhouden, kunnen we eventueel een systeem opbouwen waarbij we een chatbot aanbieden die de specifieke context en bijzonderheden van het legacy project kent, en daar heel gerichte vragen over kan beantwoorden. Dit kan b.v. in <a href="https://adoption.microsoft.com/en-us/ai-agents/copilot-studio/">CoPilot Studio</a>. Wanneer dat niet goed genoeg werkt, kunnen we nog overwegen om manueel een knowledge base op te bouwen, gebruik makend van het AI, die dan weer door het AI kan worden gebruikt om vragen te beantwoorden.</p>



<p class="justify-text">Nog een andere optie bestaat eruit dat we specifieke informatie uit de codebase willen extraheren, zoals de business logica per afzonderlijke module, of pseudocode die menselijke developers kan helpen om de logica in een ander project te herimplementeren. (En uiteraard kan bij die tweede stap ook weer een AI worden ingezet.)</p>



<p class="justify-text">Kortom, met een beetje creativiteit kunnen we voor de meeste ad hoc analyses een betere aanpak verzinnen dan &#8220;analyseer er maar gewoon op los&#8221;. En het documenteren van een legacy systeem kan ook gewoon een eerste opstap zijn naar het herschrijven.</p>



<p></p>



<h2 class="wp-block-heading" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)">Besluit: vakmannen gevraagd</h2>



<figure class="wp-block-image alignright size-large is-resized is-style-default" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-scaled.png"><img loading="lazy" decoding="async" width="1024" height="559" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-1024x559.png" alt="" class="wp-image-27699" style="aspect-ratio:1.8333516399024625;object-fit:contain;width:546px;height:auto"/></a></figure>



<p class="justify-text no-top-margin">Zoals we hebben aangekaart, bieden LLMs ons stilaan erg krachtige mogelijkheden om onze Legacy Codebases aan te pakken, zéker wanneer we toegang hebben tot de grote en krachtige modellen die vandaag beschikbaar zijn. We zien echter ook dat het eigenlijk een heel goed gevulde gereedschapskoffer is, met een aantal krachtige &#8220;power tools&#8221;, en dat we moeten weten <em>wat </em>we ermee willen bereiken en <em>hoe </em>we deze best kunnen gebruiken.</p>



<p class="justify-text">We zitten nog niet op het punt dat alles automatisch gaat: we zullen dus nog steeds goede <em>vakmannen </em>nodig hebben om optimaal van dit gereedschap gebruik te maken. Onze raad aan developers is om zeker niet bang te zijn van AI en er geregeld gebruik van te maken bij de analyse en ontwikkeling van software: ervaring is de beste leerschool om de goede vakmannen die we hiervoor nodig hebben, op te leiden.</p>



<p class="justify-text">Voorlopig is dus het besluit: voor legacy code is AI geen wondermiddel, maar een handige gereedschapskist die je best kan uitproberen als deel van een bredere aanpak. Zoals gezegd kijken we later dit jaar eerder naar het midden en de rechterkant van het spectrum van legacy. Wij vermoeden dat hier meer mogelijkheden zijn tot automatisering van een aantal workflows, zeker als we ook dieper gebruik gaan maken van agents. Mogelijks kunnen we, voor iets eenvoudigere en repetitievere projecten, dus toch van &#8220;vakman&#8221; naar &#8220;fabriek&#8221; evolueren.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Zin, Onzin, en Nut van LLMs: Zijn ze de Hype waard?</title>
		<link>https://www.smalsresearch.be/zin-onzin-en-nut-van-llms-zijn-ze-de-hype-waard/</link>
					<comments>https://www.smalsresearch.be/zin-onzin-en-nut-van-llms-zijn-ze-de-hype-waard/#comments</comments>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Wed, 10 Dec 2025 09:22:56 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=24386</guid>

					<description><![CDATA[We hebben waarschijnlijk het moment bereikt waarop de hype over AI op zijn grootst is: men is langs één kant laaiend enthousiast over AI, maar hier en daar raken mensen al gedesillusioneerd. Ook spreekt men meer en meer over een bubbel in de markt van de grote tech-spelers. Maar hoe nuttig zijn LLMs momenteel nu [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2025/11/yin-yang-llm.png"><img loading="lazy" decoding="async" width="520" height="514" src="/wp-content/uploads/2025/11/yin-yang-llm.png" alt="" class="wp-image-24491" style="width:120px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/yin-yang-llm.png 520w, https://www.smalsresearch.be/wp-content/uploads/2025/11/yin-yang-llm-300x297.png 300w" sizes="auto, (max-width: 520px) 100vw, 520px" /></a></figure>



<p class="justify-text">We hebben waarschijnlijk het moment bereikt waarop de hype over AI op zijn grootst is: men is langs één kant laaiend enthousiast over AI, maar hier en daar raken mensen al gedesillusioneerd. Ook spreekt men meer en meer over een bubbel in de markt van de grote tech-spelers. Maar hoe nuttig zijn LLMs momenteel nu echt? Kunnen we nog veel verbetering verwachten? En hoe zit dat met die hallucinaties?</p>



<span id="more-24386"></span>



<p class="justify-text">Waarschijnlijk heb je het zelf al meegemaakt: je praat met ChatGPT of een andere slimme chatbot, en deze vertelt je vol vertrouwen iets waarvan je weet dat het niet klopt. Of je bent een developer, en die <a href="https://blog.singleton.io/posts/2025-06-14-coding-agents-cross-a-chasm/">coding assistant werkt best wel goed</a>, tot je <a href="https://martinfowler.com/articles/pushing-ai-autonomy.html">naar wat meer verlangt</a>, maar die nieuw toegevoegde feature aan je programma <a href="https://www.csoonline.com/article/4053635/when-ai-nukes-your-database-the-dark-side-of-vibe-coding.html">hopeloos tekort schiet</a>. En dat zijn nog maar je eigen, bescheiden, ervaringen: wat je hoort van anderen, of op het nieuws of via sociale media, is allicht nog veel extremer: vreugdekreten over hoe we, dankzij AI, een volgende industriële revolutie tegemoet gaan en doemberichten dat mensen hun job erdoor zullen verliezen, versus artikels die vertellen over hoe AI projecten maar blijven mislukken en verhalen over wat voor <a href="https://www.vrt.be/vrtnws/nl/2023/03/24/chatgpt-nepbronnen/">belachelijke of zelfs gevaarlijke hallucinaties</a> uit de AI chatbots blijven komen. Dus wat moet je er nu van denken?</p>



<figure class="wp-block-image alignright size-full is-resized is-style-rounded"><a href="/wp-content/uploads/2025/11/stochastic-parrot.jpeg"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2025/11/stochastic-parrot.jpeg" alt="" class="wp-image-24485" style="width:392px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot.jpeg 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot-150x150.jpeg 150w, https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot-300x300.jpeg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot-768x768.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Om dit enigszins beter te begrijpen: een heel kort, niet te technisch, intermezzo over wat LLMs alweer zijn (mijn excuses dat ik daarbij opzettelijk vaag blijf: voor een betere uitleg raad ik de <a href="/chatgpt-een-eerste-indruk/" data-type="post" data-id="17969">blogposts</a> van mijn <a href="/1-jaar-chatgpt/" data-type="post" data-id="19172">collega&#8217;s</a> aan): AI taalmodellen doen voorspellingen over wat het volgende stukje tekst moet zijn, aan de hand van probabiliteiten. Ze zijn getraind op zó veel tekst, dat de <em>in se</em> willekeurige zinnen die eruit rollen, daardoor van een hoge kwaliteit zijn en perfect juist <em>klinken </em>(en het vaak genoeg ook <em>zijn</em>). Echt nadenken zoals een mens doen ze dus niet; het is heel erg &#8220;text based&#8221;. Het is meer het vinden en herhalen van patronen, dan écht begrip; de intelligentie erin ontstaat als <a href="https://nl.wikipedia.org/wiki/Emergentie">emergent verschijnsel</a>. De leukste naam die ik er al voor gehoord heb is &#8220;<a href="https://en.wikipedia.org/wiki/Stochastic_parrot">probabilistische papegaai</a>&#8220;.</p>



<p class="justify-text">Volgens Gartner zitten we nu al <a href="https://www.gartner.com/en/articles/hype-cycle-for-artificial-intelligence">voorbij de piek van opgeblazen verwachtingen en in de trog van desillusie</a>. Ook <a href="https://ai.plainenglish.io/wall-street-is-wrong-about-artificial-intelligence-4d58369ddcb2">andere verslaggevers</a> spreken van een hype of bubbel. Er worden ettelijke miljarden geïnvesteerd in nieuwe datacenters om de AI-machine te voeden, soms zelfs met inbegrip van nieuwe energiecentrales, terwijl de <a href="https://www.computerworld.com/article/3998244/ai-chatbots-see-fast-adoption-but-deliver-minimal-productivity-gains-study-finds.html">winstgevendheid voorlopig nog ver te zoeken</a> is. Is het effectief een bubbel? Dat hangt af van je <a href="https://danielmiessler.com/blog/no-ai-is-not-a-bubble">definitie van bubbel</a>&#8230; Het lijkt in elk geval een grote, soms geostrategische gok, op de volgende technologie die de wereld drastisch kan veranderen en verbeteren, of zelfs veroveren; misschien zelfs vernietigen&#8230; En op moment van schrijven deinzen sommigen er niet van terug om te zeggen dat de luchtbel weldra zal barsten, met als belangrijkste argumenten de <a href="https://graceblakeley.substack.com/p/the-ai-circular-economy">circulaire investeringen</a> van een aantal grote bedrijven in elkaars capaciteit, en het <a href="https://www.bbc.com/news/articles/cpd2qv58yl5o">openstellen van ChatGPT voor erotische inhoud</a>, een zet die meer op cashflow-druk dan op ruimdenkendheid lijkt te duiden.</p>



<p class="justify-text">Bijkomend probleem is dat momenteel ook de <a href="https://olivermolander.medium.com/gartners-ai-hype-cycle-way-passed-its-due-date-and-are-we-entering-a-classical-ml-winter-7c09041c72c4">investeringen in LLM de wind wegnemen uit de zeilen van een aantal andere zeer nuttige AI-technologieën</a> (maar wanneer de storm is gaan liggen kunnen de datacenters misschien wel van pas komen voor deze laatste). Stemmen gaan trouwens op dat we voor échte intelligentie <a href="https://www.forbes.com/sites/robtoews/2023/09/03/transformers-revolutionized-ai-what-will-replace-them/">nóg een andere AI technologie</a> zullen moeten ontwikkelen (al zal het uiteindelijk wel iets zijn dat <a href="https://www.a16z.news/p/bitter-economics">gebruik maakt van alle rekenkracht die we nu uitrollen</a>), en dat <a href="https://thenewstack.io/entering-ai-autumn-why-llms-are-nearing-their-limit/">LLMs stilaan op hun limieten</a> botsen, met steeds kleiner wordende incrementele verbeteringen (en <a href="https://tweakers.net/nieuws/241122/wetenschappers-vinden-fouten-in-445-veiligheidstests-voor-ai-modellen.html">opgeklopte testresultaten</a>). Ondanks <a href="https://www.incompleteideas.net/IncIdeas/BitterLesson.html">de bittere les dat meer data en rekenkracht de grootste vooruitgang</a> mogelijk hebben gemaakt, gaan er nu stemmen op dat men <a href="https://www.businessinsider.com/openai-cofounder-ilya-sutskever-scaling-ai-age-of-research-dwarkesh-2025-11">met LLMs geen Artificial General Intelligence (AGI) zal kunnen bouwen</a>; men zal nieuwe research moeten aanboren. En ondertussen kan men ook aantonen dat de <a href="https://tweakers.net/nieuws/239420/openai-rapport-hallucinaties-zijn-wiskundig-inherent-aan-huidige-ai-aanpak.html">hallucinaties er gewoon bij horen</a> en <a href="https://openai.com/nl-NL/index/why-language-models-hallucinate/">allicht nooit volledig weg te krijgen zullen zijn</a>: onkruid vergaat niet. </p>



<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2025/11/llm-garden.jpeg"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2025/11/llm-garden.jpeg" alt="" class="wp-image-24489" style="width:424px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden.jpeg 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden-150x150.jpeg 150w, https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden-300x300.jpeg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden-768x768.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Maar in een tuin waar onkruid groeit, kan men toch ook goede dingen laten groeien, met wat moeite. En in zo&#8217;n tuin hebben LLMs wel degelijk hun nut: daar waar een taak vooral gaat over tekst en taal, zijn ze bijvoorbeeld heel krachtig (denk aan samenvatten, vertalen, zaken verzinnen, zeer eenvoudige redeneringen opbouwen, &#8230;). En ook voor programmeren (wat een soort omgaan met een specifiek soort taal is), merken we enthousiasme van vele developers die hun productiviteit zagen stijgen (maar <a href="/ai-om-de-veiligheid-van-de-code-te-verbeteren-deel-1-veiligheid-van-de-gegenereerde-code/">security blijft een aandachtspunt!</a>). Als algemene slimme assistent kan het ook een rol spelen, zolang de gebruiker zelf voldoende onderlegd is in een onderwerp en kritisch is ingesteld. En misschien moeten ze gewoon nog verder <a href="https://jenson.org/boring/">evolueren tot de beste tool voor een bepaalde niche</a> van taken.</p>



<p class="justify-text">Ook zelf heb ik een genuanceerd verhaal te vertellen: in mijn <a href="/vibe-coding-met-agentic-ides/" data-type="post" data-id="22499">vorige blogpost</a> had ik het over een aantal kleine successen met <a href="https://www.infoworld.com/article/4058076/vibe-coding-and-the-future-of-software-development.html">vibe coding</a>, en de beperkingen van het AI, wanneer de taken groter of complexer worden. Hetzelfde zie ik in het werk dat ik sindsdien heb verricht: het analyseren en vertalen van legacy code met behulp van deze taalmodellen. Ook daar dus een gemengd succes: geen toverstokjes, nauwelijks of moeilijk te automatiseren, maar toch een zichtbare tijdswinst bij het begrijpen van middelmatig grote en het herschrijven van kleine stukken code van dit soort projecten (meer details daarover in een komende blogpost).</p>



<h2 class="wp-block-heading">Conclusie</h2>



<p class="justify-text">Een LLM is slechts één van de vele intelligente technologieën die we momenteel aan onze vingertippen hebben, al zij het wel de meest toegankelijke en zichtbare. Misschien vandaar zowel de hype als de controverse?</p>



<p class="justify-text">Zijn LLMs nuttig? Ik zou durven argumenteren van wel. Met de huidige stand van de technologie is het echter van groot belang dit te nuanceren: zet een LLM als <a href="https://leadershiplighthouse.substack.com/p/i-went-all-in-on-ai-the-mit-study">powertool ter beschikking</a> van een menselijke expert! <strong>De echte waarde ligt dus niet in vervanging, maar in augmentatie</strong>. Laten we het komende jaar kijken of alle <a href="/ai-agents-voordelen-uitdagingen-en-usecases/" data-type="post" data-id="22407">agent-based systemen</a> hier verandering in brengen&#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smalsresearch.be/zin-onzin-en-nut-van-llms-zijn-ze-de-hype-waard/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Sens, absurdité et utilité des LLM : méritent-ils ce battage médiatique ?</title>
		<link>https://www.smalsresearch.be/sens-absurdite-et-utilite-des-llm-meritent-ils-ce-battage-mediatique/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Wed, 10 Dec 2025 09:17:25 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=24579</guid>

					<description><![CDATA[Nous avons probablement atteint le point culminant du battage médiatique autour de l&#8217;IA&#160;: d&#8217;un côté, l&#8217;IA suscite l&#8217;enthousiasme, de l&#8217;autre, elle commence déjà à créer la désillusion. On parle aussi de plus en plus d&#8217;une bulle sur le marché des grands acteurs technologiques. Mais quelle est réellement l&#8217;utilité des LLM à l&#8217;heure actuelle&#160;? Pouvons-nous encore [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2025/11/yin-yang-llm.png"><img loading="lazy" decoding="async" width="520" height="514" src="/wp-content/uploads/2025/11/yin-yang-llm.png" alt="" class="wp-image-24491" style="width:143px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/yin-yang-llm.png 520w, https://www.smalsresearch.be/wp-content/uploads/2025/11/yin-yang-llm-300x297.png 300w" sizes="auto, (max-width: 520px) 100vw, 520px" /></a></figure>



<p class="justify-text">Nous avons probablement atteint le point culminant du battage médiatique autour de l&#8217;IA&nbsp;: d&#8217;un côté, l&#8217;IA suscite l&#8217;enthousiasme, de l&#8217;autre, elle commence déjà à créer la désillusion. On parle aussi de plus en plus d&#8217;une bulle sur le marché des grands acteurs technologiques. Mais quelle est réellement l&#8217;utilité des LLM à l&#8217;heure actuelle&nbsp;? Pouvons-nous encore espérer de nombreuses améliorations&nbsp;? Et qu&#8217;en est-il des hallucinations&nbsp;?</p>



<span id="more-24579"></span>



<p class="justify-text">Vous avez probablement déjà vécu cette situation&nbsp;: vous discutez avec ChatGPT ou un autre robot conversationnel «&nbsp;intelligent&nbsp;» et celui-ci produit sans détour une affirmation que vous savez fausse. Ou vous êtes développeur et votre <a href="https://blog.singleton.io/posts/2025-06-14-coding-agents-cross-a-chasm/">assistant de codage fonctionne plutôt bien</a>, jusqu&#8217;à <a href="https://martinfowler.com/articles/pushing-ai-autonomy.html">ce que vous en demandiez plus</a>, mais la nouvelle fonctionnalité ajoutée à votre programme <a href="https://www.csoonline.com/article/4053635/when-ai-nukes-your-database-the-dark-side-of-vibe-coding.html">est loin d&#8217;être à la hauteur</a>. Et ce ne sont là que vos propres expériences, modestes. En effet, les expériences relatées par les autres ou celles relayées dans la presse ou sur les réseaux sociaux sont sans doute bien plus extrêmes&nbsp;: d&#8217;un côté, des cris de joie à l&#8217;idée que l&#8217;IA amorce une nouvelle révolution industrielle et des messages alarmistes selon lesquels elle entraînera des pertes d&#8217;emploi, de l&#8217;autre, des articles qui disent que les projets d&#8217;IA ne cessent d&#8217;échouer et des récits sur <a href="https://www.vrt.be/vrtnws/nl/2023/03/24/chatgpt-nepbronnen/">les hallucinations ridicules, voire dangereuses</a> que ne cessent de produire les robots conversationnels basés sur l’IA. Que faut-il dès lors en penser&nbsp;?</p>



<figure class="wp-block-image alignright size-full is-resized is-style-rounded"><a href="/wp-content/uploads/2025/11/stochastic-parrot.jpeg"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2025/11/stochastic-parrot.jpeg" alt="" class="wp-image-24485" style="width:414px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot.jpeg 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot-150x150.jpeg 150w, https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot-300x300.jpeg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot-768x768.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Pour une meilleure compréhension, un bref intermède, pas trop technique, sur ce que sont les LLM (je vous prie de m&#8217;excuser de rester volontairement vague à ce sujet&nbsp;: pour une meilleure explication, je vous recommande les <a href="/chatgpt-een-eerste-indruk/">articles de blog</a> de mes <a href="/1-an-chatgpt/" data-type="post" data-id="19587">collègues</a>)&nbsp;: les modèles de langage d&#8217;IA prédisent ce que doit être le prochain morceau de texte, en se basant sur des probabilités. Ils ont été entraînés sur une telle quantité de texte que les phrases aléatoires qu&#8217;ils produisent sont de grande qualité et semblent parfaitement cohérentes (et le sont souvent). Ils ne réfléchissent donc pas comme un être humain&nbsp;: leur fonctionnement est très &#8220;basé sur le texte&#8221;. Il s&#8217;agit davantage de trouver et de répéter des modèles que de faire preuve d&#8217;une véritable compréhension&nbsp;; l&#8217;intelligence qui s&#8217;en dégage est un <a href="https://fr.wikipedia.org/wiki/%C3%89mergence">phénomène émergent</a>. Le nom le plus cocasse que j&#8217;ai entendu jusqu&#8217;à présent est &#8220;<a href="https://fr.wikipedia.org/wiki/Perroquet_stochastique">perroquet stochastique</a>&#8220;.</p>



<p class="justify-text">Selon Gartner, nous avons déjà <a href="https://www.gartner.com/en/articles/hype-cycle-for-artificial-intelligence">dépassé le pic des attentes déraisonnables et nous sommes désormais dans la phase de désillusion</a>. <a href="https://ai.plainenglish.io/wall-street-is-wrong-about-artificial-intelligence-4d58369ddcb2">D&#8217;autres journalistes</a> parlent d&#8217;un effet de mode ou d&#8217;une bulle.<br>Des milliards sont investis dans de nouveaux centres de données pour alimenter la machine IA, parfois même avec de nouvelles centrales électriques, alors que <a href="https://www.computerworld.com/article/3998244/ai-chatbots-see-fast-adoption-but-deliver-minimal-productivity-gains-study-finds.html">la rentabilité est encore loin d&#8217;être atteinte</a>. S&#8217;agit-il réellement d&#8217;une bulle&nbsp;? Tout dépend de votre <a href="https://danielmiessler.com/blog/no-ai-is-not-a-bubble">définition d&#8217;une bulle</a>&#8230; En tout cas, cela ressemble à un pari énorme, parfois géostratégique, sur la prochaine technologie qui pourrait changer et <a>améliorer</a> radicalement le monde, voire le conquérir, voire le détruire&#8230; Tandis que j&#8217;écris ces lignes, certains n&#8217;hésitent pas à affirmer que la bulle est sur le point d&#8217;éclater, avec comme principaux arguments les <a href="https://graceblakeley.substack.com/p/the-ai-circular-economy">investissements circulaires</a> d&#8217;un certain nombre de grandes entreprises dans leurs capacités respectives et <a href="https://www.bbc.com/news/articles/cpd2qv58yl5o">l&#8217;ouverture de ChatGPT au contenu érotique</a>, une décision qui semble davantage refléter une pression sur les flux de trésorerie qu&#8217;une ouverture d&#8217;esprit.</p>



<p class="justify-text">Un autre problème réside dans le fait qu&#8217;actuellement, <a href="https://olivermolander.medium.com/gartners-ai-hype-cycle-way-passed-its-due-date-and-are-we-entering-a-classical-ml-winter-7c09041c72c4">les investissements dans les LLM freinent également le développement d&#8217;un certain nombre d&#8217;autres technologies d&#8217;IA très utiles</a> (mais lorsque la tempête se sera calmée, les centres de données pourraient bien s&#8217;avérer utiles pour ces dernières). Certains pensent d&#8217;ailleurs que pour obtenir une véritable intelligence, nous devrons développer <a href="https://www.forbes.com/sites/robtoews/2023/09/03/transformers-revolutionized-ai-what-will-replace-them/">une autre technologie d&#8217;IA</a> (même si, au final, celle-ci <a href="https://www.a16z.news/p/bitter-economics">utilisera toute la puissance de calcul que nous déployons actuellement </a>), et que <a href="https://thenewstack.io/entering-ai-autumn-why-llms-are-nearing-their-limit/">les LLM atteignent peu à peu leurs limites</a>, avec des améliorations incrémentielles de plus en plus faibles (et <a href="https://www.begeek.fr/les-benchmarks-dia-sous-le-feu-des-critiques-424095">des résultats de tests gonflés</a>). Malgré <a href="https://algonaute.fr/fr/stupefiant.html">la leçon amère</a> que davantage de données et de puissance de calcul ont permis les plus grands progrès, des voix s&#8217;élèvent maintenant pour dire qu&#8217;on ne pourra pas construire une Intelligence Artificielle Générale (AGI) avec les LLM ; il faudra se tourner vers de nouvelles recherches. Et entre-temps, on peut aussi démontrer que <a href="https://intelligence-artificielle.developpez.com/actu/375803/OpenAI-l-avoue-generation-de-contre-verites-de-citations-fictives-ou-de-faits-inexacts-les-hallucinations-de-ChatGPT-ne-disparaitront-jamais-L-IA-generative-face-a-sa-limite-structurelle/">les hallucinations en font tout simplement partie</a> et <a href="https://openai.com/fr-FR/index/why-language-models-hallucinate/">qu&#8217;elles ne disparaîtront probablement jamais complètement</a>&nbsp;: les mauvaises herbes ne disparaissent jamais. </p>



<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2025/11/llm-garden.jpeg"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2025/11/llm-garden.jpeg" alt="" class="wp-image-24489" style="width:424px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden.jpeg 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden-150x150.jpeg 150w, https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden-300x300.jpeg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden-768x768.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Mais dans un jardin envahi par les mauvaises herbes, de belles plantations sont tout de même possibles, moyennant quelques efforts. Et dans un tel jardin, les LLM ont bel et bien leur utilité&nbsp;: lorsqu&#8217;une tâche concerne principalement le texte et le langage, ils sont par exemple très performants (pensez au résumé, à la traduction, à la création, à la construction de raisonnements très simples&#8230;). Et même pour la programmation (qui est une sorte de manipulation d&#8217;un langage spécifique), nous constatons l&#8217;enthousiasme de nombreux développeurs qui ont vu leur productivité augmenter (mais <a href="/ia-pour-ameliorer-securite-du-code-1/">la sécurité demeure un point d&#8217;attention&nbsp;!</a>). En tant qu&#8217;assistant intelligent général, les LLM peuvent également jouer un rôle, à condition que l&#8217;utilisateur soit suffisamment informé sur un sujet et ait l&#8217;esprit critique. Et peut-être doivent-ils simplement continuer à <a href="https://jenson.org/boring/">évoluer pour devenir le meilleur outil pour une certaine niche</a> de tâches.</p>



<p class="justify-text">J&#8217;ai moi-même une histoire nuancée à raconter&nbsp;: dans mon <a href="/vibe-coding-avec-les-ides-agentique/">précédent article de blog</a>, j&#8217;ai évoqué quelques petits succès avec le <a href="https://www.infoworld.com/article/4058076/vibe-coding-and-the-future-of-software-development.html">vibe coding</a>, ainsi que les limites de l&#8217;IA lorsque les tâches deviennent plus importantes ou plus complexes. Je constate la même chose dans le travail que j&#8217;ai effectué depuis&nbsp;: l&#8217;analyse et la traduction de code hérité à l&#8217;aide de ces modèles de langage. Là aussi, le succès est mitigé&nbsp;: pas de baguette magique, difficile voire impossible à automatiser, mais tout de même un gain de temps visible dans la compréhension des codes de taille moyenne et la réécriture des petits morceaux de code de ce type de projets (plus de détails à ce sujet dans un prochain article de blog).</p>



<p><strong>Conclusion</strong></p>



<p class="justify-text">Un LLM n&#8217;est qu&#8217;une des nombreuses technologies «&nbsp;intelligentes&nbsp;» disponibles actuellement, même s&#8217;il s&#8217;agit de la plus accessible et la plus visible. C&#8217;est peut-être ce qui explique à la fois l&#8217;engouement et la controverse qu&#8217;elle suscite.</p>



<p class="justify-text">Les LLM sont-ils utiles&nbsp;? J&#8217;oserais dire que oui. Cependant, compte tenu de l&#8217;état actuel de la technologie, il est fondamental de nuancer cette affirmation&nbsp;: mettez un LLM à la disposition d&#8217;un expert humain en tant qu&#8217;<a href="https://leadershiplighthouse.substack.com/p/i-went-all-in-on-ai-the-mit-study">outil puissant</a>&nbsp;! <strong>La véritable valeur ne réside donc pas dans le remplacement, mais dans l&#8217;augmentation.</strong> Nous verrons si tous les <a href="/agents-ia-avantages-defis-et-cas-utilisation/">systèmes basés sur des agents</a> changeront la donne au cours de l&#8217;année à venir.<a id="_msocom_1"></a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Garde-fous : délimitez votre IA</title>
		<link>https://www.smalsresearch.be/garde-fous-delimitez-votre-ai/</link>
		
		<dc:creator><![CDATA[Bert Vanhalst]]></dc:creator>
		<pubDate>Thu, 27 Nov 2025 09:30:57 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=24564</guid>

					<description><![CDATA[Les garde-fous contribuent à la sûreté et à la fiabilité des applications d'IA. Découvrez comment dans cet article.]]></description>
										<content:encoded><![CDATA[
<p><em>Dit artikel is ook beschikbaar in het <a href="/guardrails-hou-je-ai-binnen-de-lijntjes/">Nederlands</a>.</em></p>



<p>Le monde de l&#8217;IA évolue à une vitesse vertigineuse et l&#8217;émergence du <a href="/qualite-dun-systeme-generatif-de-questions-reponses/">Retrieval-Augmented Generation (RAG)</a> ouvre de nouvelles possibilités pour combiner intelligemment des données et des modèles de langage.</p>



<p>Les systèmes RAG combinent la capacité générative des LLM avec l&#8217;extraction d&#8217;informations pertinentes et actualisées dans des sources de données. Cela les rend plus puissants, mais aussi plus complexes, car ils dépendent de la qualité du modèle et des données utilisées, et sont susceptibles de diffuser des informations obsolètes, incorrectes ou inappropriées.</p>



<p>Dans un <a href="/experiences-pratiques-avec-levaluation-automatique-de-la-rag/">précédent article de blog</a>, nous avons expliqué comment les évaluations automatiques peuvent aider à mesurer la qualité d&#8217;un système RAG et à l&#8217;améliorer de manière interactive. Mais la qualité seule ne suffit pas. Pour que les systèmes d&#8217;IA fonctionnent non seulement <em>correctement</em>, mais aussi de manière <em>sûre</em> et <em>responsable</em>, des garde-fous s&#8217;imposent. Par garde-fous, nous entendons les directives, les restrictions techniques et les cadres éthiques qui garantissent que les systèmes d&#8217;IA opèrent dans des limites acceptables. Ils empêchent un résultat indésirable ou préjudiciable et assurent la conformité des systèmes d&#8217;IA avec les valeurs humaines et les normes sociales.</p>



<p>Que sont exactement ces garde-fous et comment les utiliser efficacement&nbsp;? C&#8217;est ce que nous allons explorer dans cet article.</p>



<h1 class="wp-block-heading">La nécessité des garde-fous</h1>



<p>Les applications basées sur des LLM comportent divers risques qui soulignent la nécessité de garde-fous solides. Sans protection adéquate, les instructions du système peuvent être dérobées. Celles-ci donnent un aperçu de la logique interne et des mécanismes de sécurité, que vous préférez ne pas voir divulgués. Il existe également un risque d&#8217;atteinte à la vie privée lorsque des données à caractère personnel parviennent à des fournisseurs de modèles externes. En outre, les modèles peuvent générer des réponses préjudiciables, allant de propos haineux à des conseils d&#8217;automutilation, ou des informations incorrectes en raison d&#8217;un résultat hallucinatoire. Les questions hors sujet peuvent entraîner une utilisation abusive de l&#8217;application et augmenter les coûts, tandis que des réponses inappropriées ou non conformes peuvent nuire à la réputation.</p>



<p>Pour toutes ces raisons, il est essentiel de mettre en place des mécanismes de sécurité solides, car ils constituent un rempart contre ces risques divers et contribuent à la sûreté et à la fiabilité des applications d&#8217;IA ainsi qu&#8217;à leur conformité avec les attentes des utilisateurs et des organisations.</p>



<h1 class="wp-block-heading">Méthodes et techniques</h1>



<p>Les garde-fous sont généralement déployés à deux niveaux&nbsp;: juste avant que les données d&#8217;entrée ne soient envoyées au modèle de langage (filtre à l&#8217;entrée) ou juste après la génération des résultats en sortie, mais avant qu&#8217;elle ne parvienne à l&#8217;utilisateur final (filtre à la sortie).</p>



<figure class="wp-block-image"><a href="/wp-content/uploads/2025/11/with_and_without_guardrails.png"><img loading="lazy" decoding="async" width="1862" height="923" src="/wp-content/uploads/2025/11/with_and_without_guardrails.png" alt="Input &amp; output guardrails" class="wp-image-24456" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/with_and_without_guardrails.png 1862w, https://www.smalsresearch.be/wp-content/uploads/2025/11/with_and_without_guardrails-300x149.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/with_and_without_guardrails-768x381.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/11/with_and_without_guardrails-1024x508.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/with_and_without_guardrails-1536x761.png 1536w" sizes="auto, (max-width: 1862px) 100vw, 1862px" /></a></figure>



<p></p>



<p>Garde-fous d&#8217;entrée et de sortie – source&nbsp;: <a href="https://github.com/guardrails-ai/guardrails">https://github.com/guardrails-ai/guardrails</a></p>



<p>Il existe globalement quatre techniques pour concrètement mettre en œuvre les garde-fous.</p>



<ul class="wp-block-list">
<li>Les <strong>garde-fous natifs LLM</strong> sont des mécanismes de sécurité intégrés dans les services proposés par les fournisseurs des modèles eux-mêmes, celui inclut par exemple le filtrage des résultats préjudiciables ou l&#8217;exclusion de certaines instructions. Ils constituent une première ligne de défense, et doivent généralement être complétés par une ou plusieurs des techniques ci-dessous.</li>



<li>Dans le cas des <strong>garde-fous basés sur le prompt</strong>, des instructions spécifiques sont ajoutées au prompt afin d&#8217;influencer le comportement du modèle. Un exemple typique consiste à obliger le modèle à répondre exclusivement sur la base des informations contextuelles fournies (via RAG) afin qu&#8217;il ne génère pas de résultats incontrôlés ou indésirables. Un autre exemple consiste à ajouter des instructions pour éviter que le système d&#8217;IA ne donne des conseils médicaux. L&#8217;exemple ci-dessous montre les instructions ajoutées au prompt pour éviter que l&#8217;application ne donne des conseils médicaux, avec un exemple de conversation dans laquelle l&#8217;application produit la réponse souhaitée.</li>
</ul>



<figure class="wp-block-image"><a href="/wp-content/uploads/2025/11/prompt-engineering.png"><img loading="lazy" decoding="async" width="1017" height="417" src="/wp-content/uploads/2025/11/prompt-engineering.png" alt="Prompt hardening" class="wp-image-24457" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/prompt-engineering.png 1017w, https://www.smalsresearch.be/wp-content/uploads/2025/11/prompt-engineering-300x123.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/prompt-engineering-768x315.png 768w" sizes="auto, (max-width: 1017px) 100vw, 1017px" /></a></figure>



<p></p>



<ul class="wp-block-list">
<li>Les<strong> garde-fous basés sur des règles</strong> agissent de manière déterministe avec des filtres basés sur des mots exacts ou des expressions régulières. Ils permettent d&#8217;effectuer un screening sur certains mots ou sujets et de filtrer des formes simples d&#8217;informations confidentielles, telles que des identifiants, des numéros de téléphone ou des adresses e-mail.</li>



<li>Les <strong style="color: initial;">garde-fous basés sur le ML/LLM</strong><span style="color: initial;"> utilisent des modèles de machine learning ou des </span><em style="color: initial;">LLM-judges</em><span style="color: initial;"> qui sont beaucoup plus aptes à gérer les nuances, l&#8217;intention et le contexte. Ils peuvent évaluer à la fois les entrées et les sorties et les classer, par exemple pour détecter les contenus préjudiciables ou les </span><em style="color: initial;">prompt injections</em><span style="color: initial;"> (tentatives des utilisateurs de manipuler le comportement de l&#8217;application via le prompt). En outre, ils peuvent filtrer les informations sensibles et vérifier les faits en s&#8217;assurant que toutes les affirmations générées en sortie sont étayées par le contexte fourni, comme dans le cas de la RAG.</span></li>
</ul>



<p>Chaque technique a son utilité, sa complexité et son coût. Aussi est-il recommandé d&#8217;évaluer d&#8217;abord les risques spécifiques à un cas d&#8217;utilisation particulier, puis de déterminer les garde-fous réellement nécessaires. Commencez par les méthodes les plus simples (basées sur un prompt et des règles) et ne passez à des techniques plus complexes (basées sur le ML/LLM) que lorsque cela est nécessaire. Ces dernières entraînent en effet une latence et des coûts supplémentaires.</p>



<h1 class="wp-block-heading">Outils</h1>



<p>Il existe de nombreux outils qui prennent en charge ces techniques et facilitent l&#8217;intégration de garde-fous dans une application. Les <strong>frameworks</strong> procurent un environnement complet pour définir, combiner et orchestrer des garde-fous. Ils vous permettent de configurer des règles, des workflows et des étapes de validation sans devoir tout construire vous-même. Exemples&nbsp;: <a href="https://github.com/guardrails-ai/guardrails">Guardrails AI</a>, <a href="https://github.com/protectai/llm-guard/">LLM Guard</a> et <a href="https://docs.nvidia.com/nemo/guardrails">NVIDIA NeMo Guardrails</a>.</p>



<p>Il existe également des <strong>API et des services</strong> qui offrent des fonctionnalités spécifiques, telles que la détection des contenus préjudiciables, le filtrage des données sensibles ou la détection des jailbreaks. Vous pouvez les appeler directement depuis votre application. Nous pouvons citer <a href="https://learn.microsoft.com/en-us/azure/ai-services/content-safety/overview">Azure AI Content Safety</a> ou <a href="https://platform.openai.com/docs/guides/moderation">OpenAI Moderation API</a>.</p>



<p>Sous le capot, ces outils utilisent une combinaison de modèles ML, de <em>LLM-judges</em> et de techniques basées sur des règles. <a href="https://www.llama.com/docs/model-cards-and-prompt-formats/llama-guard-3/">Llama Guard</a> et <a href="https://www.llama.com/docs/model-cards-and-prompt-formats/prompt-guard/">Prompt Guard</a> sont des exemples de modèles ML.</p>



<p>Notre propre expérience montre que certains outils de protection sont nettement moins précis en néerlandais et en français qu&#8217;en anglais. Nous constatons parfois des faux positifs, par exemple lorsque la détection d&#8217;automutilation identifie à tort des phrases inoffensives comme risquées. Pour les applications simples présentant un faible profil de risque et utilisant exclusivement des données publiques, la valeur ajoutée des outils de protection supplémentaires semble limitée. Dans de tels cas, les mécanismes de sécurité intégrés au LLM, associés à un prompt RAG bien conçu, sont généralement suffisants.</p>



<h1 class="wp-block-heading">Conclusion</h1>



<p>En résumé, il est important de toujours utiliser les garde-fous de manière ciblée et stratifiée. Commencez par identifier les risques dans le cas d&#8217;utilisation spécifique, puis choisissez les techniques appropriées, en privilégiant les méthodes simples et en n&#8217;ajoutant des solutions plus complexes que lorsque cela est vraiment nécessaire. Bien qu&#8217;une combinaison de garde-fous natifs LLM, basés sur des prompts, basés sur des règles et basés sur le ML/LLM offre une protection plus robuste, il reste essentiel de comprendre qu&#8217;aucun système ne garantit une sécurité absolue. Les filtres à l&#8217;entrée et à la sortie peuvent produire à la fois des faux positifs et des faux négatifs. De plus, les garde-fous basés sur le ML/LLM occasionnent des coûts et une latence supplémentaires. Un monitoring continu de l&#8217;application d&#8217;IA est recommandé afin de détecter et de traiter rapidement les nouvelles vulnérabilités.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Guardrails: hou je AI binnen de lijntjes</title>
		<link>https://www.smalsresearch.be/guardrails-hou-je-ai-binnen-de-lijntjes/</link>
		
		<dc:creator><![CDATA[Bert Vanhalst]]></dc:creator>
		<pubDate>Tue, 25 Nov 2025 08:41:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=24454</guid>

					<description><![CDATA[Guardrails helpen AI-toepassingen veiliger en betrouwbaarder te maken. Ontdek hier hoe.]]></description>
										<content:encoded><![CDATA[
<p><em>Cet article est aussi disponible <a href="/garde-fous-delimitez-votre-ai/">en français</a>.</em></p>



<p>De wereld van AI evolueert razendsnel, en met de opkomst van <a href="/kwaliteit-van-een-generatief-vraag-antwoordsysteem/">Retrieval-Augmented Generation (RAG)</a> openen zich nieuwe mogelijkheden om data en taalmodellen slim te combineren.</p>



<p>RAG-systemen combineren het generatieve vermogen van LLM’s met het ophalen van relevante, actuele informatie uit databronnen. Dit maakt ze krachtiger, maar ook complexer: ze zijn afhankelijk van de kwaliteit van zowel het model als de gebruikte data, en lopen risico op het verspreiden van verouderde, onjuiste of ongepaste informatie.</p>



<p>In een <a href="/praktische-ervaringen-met-automatische-rag-evaluatie/">vorige blogpost</a> bespraken we hoe automatische evaluaties kunnen helpen om de kwaliteit te meten van een RAG-systeem en het interatief te verbeteren. Maar kwaliteit alleen is niet genoeg. Om AI-systemen niet alleen <em>goed</em> te laten functioneren, maar ook <em>veilig</em> en <em>verantwoord</em>, zijn guardrails nodig. Onder guardrails verstaan we de richtlijnen, technische beperkingen en ethische kaders die ervoor zorgen dat AI-systemen binnen aanvaardbare grenzen opereren. Ze voorkomen ongewenste of schadelijke output en zorgen ervoor dat AI-systemen aansluiten bij menselijke waarden en maatschappelijke normen.</p>



<p>Wat zijn die guardrails precies en hoe zet je ze effectief in? Dat verkennen we in deze blogpost.</p>



<h1 class="wp-block-heading">De nood aan guardrails</h1>



<p>LLM-gebaseerde toepassingen brengen verschillende risico’s met zich mee die de nood aan sterke guardrails duidelijk maken. Zonder passende bescherming kunnen de systeeminstructies ontfutseld worden. Die geven inzicht in interne logica en beveiligingsmechanismen, en die zie je dus liever niet onthuld. Ook bestaat het risico op privacy­schendingen wanneer persoonlijke gegevens bij externe modelproviders terechtkomen. Daarnaast kunnen modellen schadelijke antwoorden genereren, variërend van haatspraak tot zelfbeschadigingsadviezen, of incorrecte informatie door hallucinerende output. Off-topic vragen kunnen leiden tot misbruik van de toepassing en de kosten doen oplopen, terwijl ongepaste of niet-conforme antwoorden reputatieschade kunnen veroorzaken.</p>



<p>Om al deze redenen zijn robuuste guardrails essentieel, omdat ze een buffer vormen tegen deze uiteenlopende risico’s en helpen garanderen dat AI-toepassingen veilig, betrouwbaar en conform de verwachtingen van gebruikers en organisaties functioneren.</p>



<h1 class="wp-block-heading">Methodes en technieken</h1>



<p>Guardrails worden doorgaans op twee niveaus ingezet: vlak vóór de input het taalmodel bereikt (<em>inputfilter</em>), of net na het genereren van de output maar vóór die bij de eindgebruiker terechtkomt (<em>outputfilter</em>).</p>



<figure class="wp-block-image"><a href="/wp-content/uploads/2025/11/with_and_without_guardrails.png"><img loading="lazy" decoding="async" width="1862" height="923" src="/wp-content/uploads/2025/11/with_and_without_guardrails.png" alt="Input &amp; output guardrails" class="wp-image-24456" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/with_and_without_guardrails.png 1862w, https://www.smalsresearch.be/wp-content/uploads/2025/11/with_and_without_guardrails-300x149.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/with_and_without_guardrails-768x381.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/11/with_and_without_guardrails-1024x508.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/with_and_without_guardrails-1536x761.png 1536w" sizes="auto, (max-width: 1862px) 100vw, 1862px" /></a></figure>



<p></p>



<p>Input &amp; output guardrails &#8211; bron: <a href="https://github.com/guardrails-ai/guardrails">https://github.com/guardrails-ai/guardrails</a></p>



<p>In grote lijnen bestaan er vier technieken om guardrails concreet te implementeren.</p>



<ul class="wp-block-list">
<li><strong>LLM-native guardrails</strong> zijn ingebouwde veiligheidsmechanismen die modelproviders zelf voorzien, zoals het vermijden van schadelijke outputs of beperkingen bij het volgen van bepaalde instructies. Ze bieden een eerste verdedigingslinie, maar moeten doorgaans aangevuld worden met één of meerdere van de technieken hieronder.</li>



<li>Bij<strong> prompt-gebaseerde guardrails</strong> worden specifieke instructies toegevoegd aan de prompt om het gedrag van het model te beïnvloeden. Een typisch voorbeeld is om het model te verplichten om uitsluitend te antwoorden op basis van aangeleverde contextinformatie (via RAG) zodat het geen ongecontroleerde of ongewenste output genereert. Een ander voorbeeld is het toevoegen van instructies om te vermijden dat het AI-systeem medisch advies geeft. In het voorbeeld hieronder zijn instructies te zien die toegevoegd worden aan de prompt om te vermijden dat de toepassing medisch advies geeft, samen met een voorbeeld van een conversatie waarbij de toepassing het gewenste antwoord geeft.<br><figure><a href="/wp-content/uploads/2025/11/prompt-engineering.png"><img loading="lazy" decoding="async" width="1017" height="417" class="size-full wp-image-24457" src="/wp-content/uploads/2025/11/prompt-engineering.png" alt="Prompt hardening" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/prompt-engineering.png 1017w, https://www.smalsresearch.be/wp-content/uploads/2025/11/prompt-engineering-300x123.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/prompt-engineering-768x315.png 768w" sizes="auto, (max-width: 1017px) 100vw, 1017px" /></a></figure><br></li>



<li><strong>Regelgebaseerde guardrails</strong> werken deterministisch met filters op basis van exacte woorden of reguliere expressies. Op die manier kan gescreend worden op bepaalde woorden of onderwerpen, en kunnen eenvoudige vormen van vertrouwelijke informatie gefilterd worden, zoals ID’s, telefoonnummers of e-mailadressen.</li>



<li><strong>LLM/ML-gebaseerde guardrails</strong> maken gebruik van machine learning modellen of zogenaamde <em>LLM-judges</em> die veel beter overweg kunnen met nuance, intentie en context. Ze kunnen zowel input als output beoordelen en kunnen deze classificeren, bijvoorbeeld om schadelijke inhoud of <em>prompt injections</em> te detecteren (dit zijn pogingen van gebruikers om het gedrag van de toepassing te manipuleren via de prompt). Daarnaast kunnen ze gevoelige informatie filteren en fact-checking uitvoeren door na te gaan of alle uitspraken in de output effectief worden ondersteund door de aangeleverde context, zoals bij RAG.</li>
</ul>



<p>Elke techniek heeft een eigen nut, complexiteit en kost. Het is daarom aangeraden om eerst de specifieke risico’s voor een bepaalde usecase te evalueren en daarna te bepalen welke guardrails echt nodig zijn. Begin met de eenvoudigste methodes (prompt-gebaseerd en regelgebaseerd) en schakel pas over op complexere technieken (LLM/ML gebaseerd) wanneer dat noodzakelijk is. Deze laatste brengen namelijk extra latency en kosten met zich mee.</p>



<h1 class="wp-block-heading">Guardrail tools</h1>



<p>Er bestaan heel wat tools die deze technieken ondersteunen en het eenvoudiger maken om guardrails in een toepassing te integreren. <strong>Frameworks</strong> bieden een volledige omgeving om guardrails te definiëren, combineren en orkestreren. Ze laten je regels, workflows en validatiestappen configureren zonder alles zelf te moeten bouwen. Voorbeelden zijn <a href="https://github.com/guardrails-ai/guardrails">Guardrails AI</a>, <a href="https://github.com/protectai/llm-guard/">LLM Guard</a> en <a href="https://docs.nvidia.com/nemo/guardrails">NVIDIA NeMo Guardrails</a>.</p>



<p>Daarnaast zijn er <strong>API’s en services</strong> die specifieke functionaliteiten aanbieden, zoals het detecteren van schadelijke inhoud, het filteren van gevoelige gegevens of het opsporen van jailbreaks. Deze kun je rechtstreeks vanuit je toepassing aanroepen. Denk hierbij aan <a href="https://learn.microsoft.com/en-us/azure/ai-services/content-safety/overview">Azure AI Content Safety</a> of <a href="https://platform.openai.com/docs/guides/moderation">OpenAI Moderation API</a>.</p>



<p>Onder de motorkap maken deze tools gebruik van een mix van ML-modellen, LLM-judges en regelgebaseerde technieken. Voorbeelden van ML-modellen zijn <a href="https://www.llama.com/docs/model-cards-and-prompt-formats/llama-guard-3/">Llama Guard</a> en <a href="https://www.llama.com/docs/model-cards-and-prompt-formats/prompt-guard/">Prompt Guard</a>.</p>



<p>Uit onze eigen ervaringen blijkt dat bepaalde guardrailtools merkbaar minder nauwkeurig presteren in het Nederlands en Frans ten opzichte van het Engels. We zien daarbij soms ook false positives, bijvoorbeeld wanneer selfharm-detectie onschadelijke zinnen foutief als risicovol markeert. Voor eenvoudige toepassingen met een laag risicoprofiel en uitsluitend publieke data lijkt de meerwaarde van extra guardrailtools beperkt. In zulke gevallen volstaan doorgaans de ingebouwde veiligheidsmechanismen van de LLM in combinatie met een goed ontworpen RAG-prompt.</p>



<h1 class="wp-block-heading">Conclusie</h1>



<p>Samengevat is het belangrijk om guardrails steeds risicogestuurd en gelaagd in te zetten. Begin met het identificeren van de risico’s binnen de specifieke usecase en kies vervolgens de passende technieken, waarbij eenvoudige methodes de voorkeur krijgen en complexere oplossingen pas worden toegevoegd wanneer dat echt nodig is. Hoewel een combinatie van LLM-native, prompt-gebaseerde, regelgebaseerde en ML/LLM-gebaseerde guardrails een robuustere bescherming biedt, blijft het essentieel om te beseffen dat geen enkel systeem volledige veiligheid garandeert. Input- en outputfilters kunnen zowel false positives als false negatives opleveren. ML/LLM-gebaseerde guardrails brengen bovendien extra kosten en latency met zich mee. Een continue monitoring van de AI-toepassing is aangeraden om nieuwe kwetsbaarheden tijdig op te sporen en aan te pakken.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Expériences pratiques avec l&#8217;évaluation automatique de la RAG</title>
		<link>https://www.smalsresearch.be/experiences-pratiques-avec-levaluation-automatique-de-la-rag/</link>
		
		<dc:creator><![CDATA[Bert Vanhalst]]></dc:creator>
		<pubDate>Fri, 18 Jul 2025 07:09:03 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=23140</guid>

					<description><![CDATA[La qualité est le principal obstacle à la mise en production d'applications LLM. Dans cet article de blog, nous examinerons dans quelle mesure la qualité des applications RAG peut être mesurée automatiquement.]]></description>
										<content:encoded><![CDATA[
<p><em>Dit artikel is ook beschikbaar in het <a href="/praktische-ervaringen-met-automatische-rag-evaluatie/">Nederlands</a>.</em></p>
<p>De nombreuses organisations expérimentent actuellement l&#8217;IA générative. Dans ce cadre, elles utilisent souvent des applications qui fonctionnent sur des LLM (<em>Large Language Models</em>), soutenues par une architecture RAG (<em>Retrieval-Augmented Generation</em>). Cela signifie que le système extrait d&#8217;abord les informations pertinentes d&#8217;une source de connaissances pour les transmettre au modèle de langage en guise de contexte. Il en résulte un output solidement ancré dans le domaine de connaissances concerné. Dans le jargon, on parle de <em>grounding</em>. Cette approche est surtout populaire dans les applications de questions-réponses et les chatbots.</p>
<figure id="attachment_19945" aria-describedby="caption-attachment-19945" style="width: 1270px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png"><img loading="lazy" decoding="async" class="size-full wp-image-19945" src="/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png" alt="Uitvoeringsfase van een RAG pipeline" width="1270" height="530" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png 1270w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-300x125.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-768x321.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-1024x427.png 1024w" sizes="auto, (max-width: 1270px) 100vw, 1270px" /></a><figcaption id="caption-attachment-19945" class="wp-caption-text">Illustration 1: RAG (Retrieval Augmented Generation)</figcaption></figure>
<p>Malgré le grand potentiel de ces applications basées sur des LLM, l&#8217;output généré n&#8217;est pas toujours fiable dans la pratique. Des problèmes peuvent déjà survenir au niveau de l&#8217;extraction, si les informations pertinentes ne sont pas trouvées ou ne le sont que partiellement. Mais même si le bon contexte est fourni, un modèle de langage peut commettre des erreurs. Le modèle peut mal interpréter les informations, établir des liens incorrects ou générer des hallucinations, c&#8217;est-à-dire des réponses qui semblent convaincantes, mais qui sont en fait erronées. Cette incertitude quant à la qualité constitue l&#8217;un des principaux obstacles à la mise en production de telles applications, en particulier dans les domaines où la fiabilité est essentielle.</p>
<p>Dans cet article, nous nous pencherons sur les méthodes d&#8217;évaluation de la qualité des applications basées sur la RAG.</p>



<h1>Évaluations manuelles et automatiques</h1>
<p>Évaluer des applications d&#8217;IA générative est tout sauf simple. Cela s&#8217;explique principalement par le fait que l&#8217;output est souvent non structuré et non déterministe, à savoir qu&#8217;un même input peut chaque fois produire un output différent. De plus, il existe rarement une seule bonne réponse, de sorte qu&#8217;il est difficile d&#8217;évaluer objectivement la qualité de l&#8217;output généré. Beaucoup dépend de critères subjectifs comme la pertinence ou la précision, qui peuvent varier d&#8217;un évaluateur à l&#8217;autre. </p>
<p>La manière la plus évidente de contrôler la qualité est manuelle. Elle consiste à exécuter manuellement un certain nombre de tests, à mesurer le résultat et éventuellement à ajouter un commentaire indiquant la cause d&#8217;une qualité moindre. Une personne disposant des connaissances nécessaires dans le domaine peut correctement effectuer une telle évaluation, mais celle-ci est chronophage et peu extensible.</p>
<p>Pour ces raisons, il peut être intéressant de se tourner vers des systèmes d&#8217;évaluation automatique, appelés &#8220;<em>auto-evals</em>&#8220;. Comme ces évaluations s&#8217;effectuent automatiquement, elles sont aisément extensibles. Des techniques telles que &#8220;<em>exact-string matching</em>&#8221; et &#8220;<em>regular expressions&#8221;</em> peuvent être mises en œuvre pour le matching exact d&#8217;un texte ou d&#8217;un schéma. Mais si l&#8217;output d&#8217;un LLM peut varier en termes de choix de mots, de séquence ou de longueur, par exemple lorsque plusieurs formulations sont correctes, ces méthodes échouent. Dans ces cas, une évaluation sémantique ou basée sur un modèle s&#8217;impose. Une technique qui suscite actuellement beaucoup d&#8217;intérêt s&#8217;appelle &#8220;<em>LLM-as-judge</em>&#8220;. Elle consiste à faire évaluer l&#8217;output par un (second) modèle de langage selon certains critères.</p>



<h1>LLM-as-judge : un LLM évalué par un LLM</h1>
<p>À première vue, l&#8217;intervention d&#8217;un modèle de langage pour évaluer l&#8217;output d&#8217;un autre modèle de langage peut sembler étrange. Cependant, il s&#8217;avère plus facile de critiquer un output que de générer l&#8217;output original : même pour les LLM, il est plus facile de détecter les erreurs a posteriori que de les éviter.</p>
<p>Un LLM désigné comme juge peut évaluer plusieurs aspects, tels que l&#8217;exactitude factuelle, l&#8217;exhaustivité, les hallucinations et la pertinence de l&#8217;output par rapport à la question. Cette évaluation peut se faire par rapport à une référence (basée sur une référence) ou non (sans référence). Ainsi, pendant la phase de développement, une batterie de tests peut être prévue avec des questions, complétées de réponses de référence : un expert du domaine peut fournir des réponses correctes à titre de référence. Dans un environnement de production, il est toutefois impossible de prévoir une réponse de référence pour chaque question possible. Dans la pratique, il faut dès lors se rabattre sur des évaluations sans référence.</p>
<p>Nous avons concrètement mis en œuvre quelques métriques LLM-as-judge issues de la boîte à outils <a href="https://github.com/langchain-ai/openevals">OpenEvals</a> de LangChain, appliquées à un <a href="/un-propre-systeme-de-questions-reponses-base-sur-des-modeles-de-langue/">système de questions-réponses</a> basé sur des LLM. L&#8217;approche est la suivante :</p>
<ul>
<li>Élaboration d&#8217;une batterie de tests – Dans un premier temps, une batterie de tests est élaborée avec des questions représentatives de la base de connaissances concernée. Une réponse de référence est prévue pour chacune des questions.</li>
<li>Génération des réponses – Ensuite, le système de questions-réponses génère une réponse pour chacune des questions de la batterie de tests.</li>
<li>Évaluation manuelle – Afin de vérifier l&#8217;efficacité d&#8217;un LLM-as-judge automatique, on procède d&#8217;abord à une évaluation manuelle : chaque réponse générée se voit attribuer un score de 0 (réponse incorrecte), 1 (réponse partiellement correcte / incomplète) ou 2 (réponse correcte et complète).</li>
<li>Exécution des évaluations – Au cours de cette étape, on produit un script qui évalue tous les cas de test au regard d&#8217;une certaine métrique. On utilise comme métrique l&#8217;évaluateur de <em>correctness</em> (&#8220;exactitude&#8221; en français) proposé par défaut dans la bibliothèque OpenEvals. <br />Celui-ci mesure le degré d&#8217;exactitude d&#8217;une réponse générée par rapport à la réponse de référence. En output, on obtient pour chaque réponse générée un score binaire (true = correct ; false = incorrect) et une motivation textuelle du score, par exemple :
<blockquote><strong>Question :</strong><em> À partir de quel âge puis-je travailler comme étudiant?</em><br /><strong>Réponse générée :</strong><em> Tu peux t’engager comme jobiste dès que tu as 15 ans et que tu as suivi le premier degré de l’enseignement secondaire, ou dès que tu as 16 ans.</em><br /><strong>Réponse de référence : </strong><em>Vous pouvez travailler comme étudiant dès que vous avez 16 ans ou si vous avez 15 ans et avez suivi les deux premières années de l’enseignement secondaire.</em><br /><strong>Score :</strong><em> true</em><br /><strong>Motivation :</strong><em> The provided answer states that a student can work at 15 years old if they have completed the first cycle (“premier degré”) of secondary education, equivalent to the two first years of secondary education mentioned in the reference. It also notes that one can work at 16 years old. This information is factually accurate, complete, and addresses the question using precise terminology. Thus, the score should be:</em> true.</blockquote>
</li>
</ul>
<h1>Alignement des évaluations automatiques et manuelles</h1>
<p>Si l&#8217;on compare les résultats de cet évaluateur d&#8217;exactitude avec les scores manuels, on constate dans notre test que le score LLM-as-judge est identique au score manuel dans 70 % des cas. Cela veut donc dire que les deux scores ne correspondent pas dans de nombreux cas. Cela s&#8217;explique par plusieurs raisons :</p>
<ul>
<li>Évaluations subjectives – Les évaluations manuelles sont subjectives. Ainsi, les réponses incomplètes sont évaluées de manière plus ou moins stricte selon l&#8217;évaluateur.</li>
<li>Qualité des réponses de référence – La qualité des réponses de référence livrées par un expert du domaine joue un rôle important, car elle sert de référence. Elles doivent être complètes et clairement formulées.</li>
<li>Méthode d&#8217;évaluation&nbsp;: l&#8217;évaluation manuelle repose sur trois scores (2 = correct, 1 = incomplet, 0 = incorrect). L&#8217;évaluateur d&#8217;exactitude testé utilise deux scores par défaut (true ou false). Il lui manque la nuance nécessaire pour attribuer, à une réponse correcte mais incomplète, un score qui soit tout de même positif dans une certaine mesure.</li>
<li>Modèle de langage – Enfin, le modèle de langage utilisé par le LLM-as-judge joue également un rôle. Un <a href="https://en.wikipedia.org/wiki/Reasoning_language_model">reasoning model</a> sera mieux à même de procéder à une bonne évaluation qu&#8217;un modèle de chat moins performant.</li>
</ul>
<p>Dans le cas idéal, un évaluateur automatique juge de la même manière qu&#8217;un évaluateur humain, mais dans la pratique, il s&#8217;avère difficile d&#8217;aligner correctement les scores des évaluations automatiques sur ceux des évaluations manuelles.</p>
<p><span style="font-size: revert; color: initial;">Pour améliorer cet alignement, le LLM-as-judge peut être amélioré de manière itérative, par exemple par l&#8217;adaptation du prompt (instructions, méthode d&#8217;évaluation). En fait, le recours à un LLM en tant qu&#8217;évaluateur est en soi également un projet LLM dont la qualité doit être évaluée et peut être améliorée de manière itérative. Tout l&#8217;art consistera à commencer simplement et à améliorer progressivement la qualité de l&#8217;évaluateur. Dans tous les cas, la motivation textuelle de l&#8217;évaluateur d&#8217;exactitude peut être précieuse pour évaluer les réponses générées.</span></p>
<h1>Quelles métriques utiliser&nbsp;?</h1>
<p>Dans la phase de développement, on dispose souvent de réponses de référence, ce qui nous permet de recourir à un évaluateur de <strong><em>correctness</em></strong> qui détermine simplement dans quelle mesure la réponse générée correspond à la réponse de référence. Des métriques complémentaires peuvent fournir des informations sur d&#8217;autres aspects de la RAG, comme la <strong><em>context precision</em></strong>, qui détermine quelle partie des chunks est pertinente, et le <strong><em>context recall</em></strong>, qui détermine combien de chunks pertinents ont été fournis. Dans l&#8217;illustration ci-dessous, ces métriques basées sur des références sont indiquées en jaune.</p>
<figure id="attachment_23013" aria-describedby="caption-attachment-23013" style="width: 1102px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2025/07/metrics.png"><img loading="lazy" decoding="async" class="size-full wp-image-23013" src="/wp-content/uploads/2025/07/metrics.png" alt="RAG metrics" width="1102" height="503" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/07/metrics.png 1102w, https://www.smalsresearch.be/wp-content/uploads/2025/07/metrics-300x137.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/07/metrics-768x351.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/07/metrics-1024x467.png 1024w" sizes="auto, (max-width: 1102px) 100vw, 1102px" /></a><figcaption id="caption-attachment-23013" class="wp-caption-text">RAG metrics</figcaption></figure>
<p>Lorsque de telles métriques sont nécessaires mais qu&#8217;aucune référence explicite n&#8217;est disponible, on peut recourir à des variantes approximatives (voir les métriques indiquées en bleu dans l&#8217;illustration ci-dessus) : par exemple, un LLM-as-judge qui compare la réponse générée au contexte extrait et restitue un score sémantique &#8220;close-enough&#8221;. Dans un environnement de production, les réponses de référence font presque toujours défaut ; l&#8217;accent est alors mis sur des métriques telles que l&#8217;<strong><em>hallucination detection</em></strong> ou la <strong><em>groundedness</em></strong>, qui déterminent si chaque affirmation dans l&#8217;output est réellement étayée par le contexte fourni. La qualité reste ainsi mesurable, même sans référence absolue. D&#8217;autres métriques approximatives sont la <strong><em>context relevance</em></strong>, qui évalue la correspondance sémantique des passages extraits à la question et peuvent donc servir de base à la génération, et l&#8217;<strong><em>answer relevance (helpfulness)</em></strong>, qui évalue la correspondance de la réponse finale à la question.</p>
<h1>Conclusion</h1>
<p>L&#8217;IA générative est aujourd&#8217;hui en pleine effervescence, mais pour les organisations, la fiabilité de l&#8217;output figure parmi les critères majeurs pour pouvoir utiliser cette technologie en toute confiance. Dans un pipeline RAG, l&#8217;output généré est basé sur des connaissances du domaine, mais sans cadre d&#8217;évaluation robuste, sa qualité n&#8217;est pas suffisamment garantie. Il est donc important de miser sur la mesurabilité.</p>
<p>Commencez la phase de développement avec une batterie de tests compacte et représentative et des réponses de référence claires. Des métriques basées sur des références peuvent ensuite être appliquées, telles que la <em>correctness</em>, afin d&#8217;identifier rapidement les points sensibles. Une fois en production, vous pouvez passer à des métriques sans référence, telles que la <em>groundedness</em> et l&#8217;<em>hallucination detection</em>, afin de pouvoir également monitorer les questions inconnues.</p>
<p data-pm-slice="1 1 []">Les évaluations automatiques basées sur le <em>LLM‑as‑judge</em> ne sont pas une solution miracle. Leur principal défi réside dans l&#8217;alignement : s&#8217;assurer que les scores automatiques correspondent autant que possible à l&#8217;avis des experts du domaine. Elles offrent néanmoins échelle et continuité : elles peuvent passer en revue de grands volumes d&#8217;output, signaler d&#8217;éventuels problèmes de qualité et procurer des points de référence objectifs pour ajuster de manière ciblée une application LLM ou RAG. La comparaison systématique de leur évaluation avec les évaluations manuelles et l&#8217;ajustement des prompts de l&#8217;évaluateur permettent d&#8217;améliorer continuellement l&#8217;application et l&#8217;évaluateur grâce à un processus itératif.</p>
<hr />
<p data-pm-slice="1 1 []"><em data-rich-text-format-boundary="true">Ce post est une contribution individuelle de Bert Vanhalst, IT consultant chez Smals Research. Cet article est écrit en son nom propre et n’impacte en rien le point de vue de Smals.</em></p>




]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Praktische ervaringen met automatische RAG-evaluatie</title>
		<link>https://www.smalsresearch.be/praktische-ervaringen-met-automatische-rag-evaluatie/</link>
		
		<dc:creator><![CDATA[Bert Vanhalst]]></dc:creator>
		<pubDate>Thu, 10 Jul 2025 10:08:39 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=22958</guid>

					<description><![CDATA[Kwaliteit is dé bottleneck om LLM-toepassingen in productie te brengen. In deze blogpost onderzoeken we in hoeverre de kwaliteit van RAG-toepassingen automatisch kan gemeten worden.]]></description>
										<content:encoded><![CDATA[
<p><em>Cet article est aussi disponible <a href="/experiences-pratiques-avec-levaluation-automatique-de-la-rag/">en français</a>.</em></p>
<p>Heel wat organisaties zijn druk aan het experimenteren met generatieve AI. Vaak maken ze daarbij gebruik van toepassingen die draaien op LLM’s <em>(Large Language Models)</em>, ondersteund door een RAG-architectuur <em>(Retrieval-Augmented Generation)</em>. Dit betekent dat het systeem eerst relevante informatie uit een kennisbron ophaalt en die als context meegeeft aan het taalmodel. Zo ontstaat een output die stevig verankerd is in de juiste domeinkennis. In het jargon spreken we van <em>grounding</em>. Deze aanpak is vooral populair in vraag-en-antwoordtoepassingen en chatbots.</p>
<figure id="attachment_19945" aria-describedby="caption-attachment-19945" style="width: 1270px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png"><img loading="lazy" decoding="async" class="size-full wp-image-19945" src="/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png" alt="Uitvoeringsfase van een RAG pipeline" width="1270" height="530" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png 1270w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-300x125.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-768x321.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-1024x427.png 1024w" sizes="auto, (max-width: 1270px) 100vw, 1270px" /></a><figcaption id="caption-attachment-19945" class="wp-caption-text">Figuur 1: RAG (Retrieval Augmented Generation)</figcaption></figure>
<p>Hoewel het potentieel van dergelijke LLM-gebaseerde toepassingen groot is, blijkt de kwaliteit van de gegenereerde output in de praktijk niet altijd even betrouwbaar. Het kan al mislopen op niveau van de retrieval-stap, als de relevante informatie niet teruggevonden wordt of slechts gedeeltelijk. Maar zelfs als de juiste context wél wordt aangeleverd, kan een taalmodel alsnog fouten maken. Het model kan de informatie verkeerd interpreteren, onnauwkeurige verbanden leggen of hallucinaties genereren — antwoorden die overtuigend klinken, maar feitelijk onjuist zijn. Deze onzekerheid over de kwaliteit is één van de belangrijkste belemmeringen voor het in productie nemen van zulke toepassingen, zeker in domeinen waar betrouwbaarheid essentieel is.</p>
<p>In dit artikel gaan we dieper in op de methodes voor het evalueren van de kwaliteit van RAG-gebaseerde toepassingen.</p>



<h1>Manuele &amp; automatische evaluaties</h1>
<p>Het evalueren van generatieve AI-toepassingen is allesbehalve eenvoudig. Dat komt vooral doordat de output vaak ongestructureerd is en niet-deterministisch: eenzelfde input kan telkens een andere output opleveren. Daarbovenop bestaat er zelden één juist antwoord, wat het moeilijk maakt om objectief te beoordelen of een gegenereerde output “goed” is. Veel hangt af van subjectieve criteria zoals relevantie of nauwkeurigheid, die per evaluator kunnen verschillen. </p>
<p>De meest voor de hand liggende manier om de kwaliteit te controleren is manueel: handmatig een aantal testen uitvoeren, het resultaat inschalen en eventueel commentaar toevoegen met een indicatie van de oorzaak van minder goede kwaliteit. Iemand met de nodige domeinkennis kan zo&#8217;n evaluatie goed uitvoeren, maar het is tijdrovend en schaalt niet goed.</p>
<p>Om die redenen kan het interessant zijn om te kijken naar systemen voor automatische evaluaties, zogeheten <em>&#8220;auto-evals&#8221;</em>. Aangezien ze automatisch uitgevoerd worden, zijn ze goed te schalen. Technieken zoals <em>exact-string matching</em> en <em>regular expressions</em> kunnen gebruikt worden voor het exact matchen van tekst of het matchen van een patroon. Maar als de output van een LLM kan variëren in woordkeuze, volgorde of lengte, bijvoorbeeld in het geval van meerdere juiste formuleringen, lopen zo’n methodes vast. In die gevallen heb je semantische of model-gebaseerde evaluatie nodig. Een techniek die momenteel in de belangstelling staat is <em>“LLM-as-judge”</em>, waarbij een (tweede) taalmodel de gegenereerde output beoordeelt op bepaalde criteria.</p>



<h1>LLM-as-judge: LLM beoordeelt LLM</h1>
<p>Op het eerste zicht is het wat vreemd dat een taalmodel wordt ingeschakeld om de output van een taalmodel te beoordelen. Maar het blijkt eenvoudiger om kritiek te geven op een output dan om de originele output te genereren: zelfs voor LLM&#8217;s is het eenvoudiger om fouten achteraf te detecteren dan ze te voorkomen.</p>
<p>Er zijn een aantal aspecten die door een LLM-rechter kunnen beoordeeld worden, zoals feitelijke correctheid, volledigheid, hallucinaties en relevantie van de output ten opzichte van de vraag. Die beoordeling kan gebeuren ten opzichte van een referentie (referentie-gebaseerd) of niet (referentievrij). Zo kan in de ontwikkelfase een vaste testset voorzien worden van vragen, aangevuld met referentie-antwoorden: een domeinexpert kan correcte antwoorden aanleveren die gelden als een gouden standaard. Het is echter onmogelijk om in een productie-omgeving voor elke mogelijke vraag een referentie-antwoord te voorzien, waardoor je in de praktijk moet terugvallen op referentievrije evaluaties.</p>
<p>We gingen concreet aan de slag met enkele LLM-as-judge metrieken uit de <a href="https://github.com/langchain-ai/openevals">OpenEvals</a> toolbox van LangChain, toegepast op een LLM-gebaseerd <a href="/een-eigen-vraag-en-antwoordsysteem-op-basis-van-taalmodellen/">vraag- en antwoordsysteem</a>. Dit is de gevolgde aanpak:</p>
<ul>
<li>Opstellen testset &#8211; In een eerste stap wordt een testset opgesteld met vragen die representatief zijn voor de betrokken knowledge base. Voor elk van de vragen wordt een referentie-antwoord voorzien.</li>
<li>Antwoordgeneratie &#8211; Vervolgens laten we voor elk van de vragen uit de testset een antwoord genereren door het vraag-antwoordsysteem.</li>
<li>Manuele beoordeling &#8211; Om te kunnen nagaan hoe goed een automatische LLM-as-judge evaluator presteert, doen we eerst een manuele beoordeling: elk gegeneerd antwoord krijgt een score van 0 (fout antwoord), 1 (deels correct / onvolledig) of 2 (correct en volledig).</li>
<li>Uitvoeren evaluaties &#8211; In deze stap voorzien we een script dat alle testcases beoordeelt op vlak van een bepaalde metriek. Als metriek gebruiken we de <em>correctness</em> evaluator die de OpenEvals library standaard aanbiedt. Deze meet hoe correct een gegenereerd antwoord is ten opzichte van het referentie-antwoord. Als output krijgen we voor elk gegenereerd antwoord een binaire score (true = correct; false = niet correct) en een tekstuele motivatie van de score, bijvoorbeeld:
<blockquote><em><strong>Vraag:</strong></em> A partir de quel âge puis-je travailler comme étudiant? <em><br /><strong>Gegenereerd antwoord:</strong></em> Tu peux t’engager comme jobiste dès que tu as 15 ans et que tu as suivi le premier degré de l’enseignement secondaire, ou dès que tu as 16 ans.<em><br /><strong>Referentie-antwoord: </strong></em>Vous pouvez travailler comme étudiant dès que vous avez 16 ans ou si vous avez 15 ans et avez suivi les deux premières années de l&#8217;enseignement secondaire.<em><br /><strong>Score:</strong></em> true<em><br /><strong>Motivatie:</strong></em> The provided answer states that a student can work at 15 years old if they have completed the first cycle (“premier degré”) of secondary education, equivalent to the two first years of secondary education mentioned in the reference. It also notes that one can work at 16 years old. This information is factually accurate, complete, and addresses the question using precise terminology. Thus, the score should be: true.</blockquote>
</li>
</ul>
<h1>Alignering van automatische en manuele beoordeling</h1>
<p>Als we de resultaten van deze correctness evaluator vergelijken met de manuele scores, dan zien we in onze test dat de LLM-as-judge score in 70% van de gevallen gelijk is aan de manuele score. Er zijn dus heel wat gevallen waar beide scores niet overeenkomen. Daar zijn diverse redenen voor:</p>
<ul>
<li>Subjectieve beoordelingen &#8211; Manuele beoordelingen zijn subjectief, zo worden onvolledige antwoorden al dan niet streng beoordeeld naargelang de persoon die de evaluatie uitvoert.</li>
<li>Kwaliteit referentie-antwoorden &#8211; De kwaliteit van de referentie-antwoorden die opgesteld worden door een domein-expert spelen een belangrijke rol omdat dit de maatstaf is. Ze moeten compleet zijn en duidelijk geformuleerd.</li>
<li>Beoordelingsmethode: Bij de manuele beoordeling wordt gebruik gemaakt van een driedelige score (2 = correct, 1 = onvolledig, 0 = fout).  De geteste correctness evaluator maakt standaard gebruikt van een tweedelige score (true of false). Deze mist de nodige nuance om een correct maar onvolledig antwoord toch enigszins positief te scoren.</li>
<li>Taalmodel &#8211; Tenslotte speelt ook het taalmodel dat door de LLM-as-judge gebruikt wordt een rol.  Een <a href="https://en.wikipedia.org/wiki/Reasoning_language_model">reasoning model</a> zal beter in staat zijn om een goede beoordeling te doen dan een minder performant chat model.</li>
</ul>
<p><span style="color: #000000;">In het ideale geval oordeelt een automatische evaluator op dezelfde manier als een menselijke evaluator, maar in de praktijk blijkt het dus moeilijk om de scores van automatische evaluaties goed te aligneren met de manuele scores.</span></p>
<p>Om deze alignering te verbeteren kan de LLM-as-judge iteratief verbeterd worden door bijvoorbeeld de prompt aan te passen (instructies, beoordelingsmethode). In feite is het inschakelen van een LLM als evaluator op zich ook een LLM-project waarvan de kwaliteit moet geëvalueerd worden en iteratief verbeterd kan worden. De kunst zal erin bestaan om eenvoudig te starten en de kwaliteit van de evaluator geleidelijk aan te verbeteren. Sowieso kan de tekstuele motivatie van de correctness evaluator nuttige input leveren voor het beoordelen van gegenereerde antwoorden.</p>
<h1>Welke metrieken gebruiken?</h1>
<p>In de ontwikkelfase beschikken we vaak over referentie-antwoorden; daardoor kunnen we een <strong><em>correctness</em> </strong>evaluator inzetten die simpelweg meet in hoeverre het gegenereerde antwoord overeenkomt met het referentie-antwoord. Aanvullende metrieken kunnen zicht bieden op andere RAG-aspecten, zoals <strong><em>context precision</em></strong><em>, </em>die meet welk deel van de aangeleverde chunks relevant zijn, en <strong><em>context recall,</em></strong> die meet hoeveel van de relevante chunks werden aangeleverd. In de figuur hieronder zijn deze referentie-gebaseerde metrieken aangeduid in geel.</p>
<figure id="attachment_23013" aria-describedby="caption-attachment-23013" style="width: 1102px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2025/07/metrics.png"><img loading="lazy" decoding="async" class="size-full wp-image-23013" src="/wp-content/uploads/2025/07/metrics.png" alt="RAG metrics" width="1102" height="503" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/07/metrics.png 1102w, https://www.smalsresearch.be/wp-content/uploads/2025/07/metrics-300x137.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/07/metrics-768x351.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/07/metrics-1024x467.png 1024w" sizes="auto, (max-width: 1102px) 100vw, 1102px" /></a><figcaption id="caption-attachment-23013" class="wp-caption-text">RAG metrics</figcaption></figure>
<p>Wanneer zulke metrieken nodig zijn maar er geen expliciete referentie beschikbaar is, kan men teruggrijpen naar benaderende varianten (zie metrieken aangeduid in blauw in de figuur hierboven): bijvoorbeeld een LLM-as-judge die het gegenereerde antwoord vergelijkt met de opgehaalde context en een semantische “close-enough” score teruggeeft. In een productie-omgeving ontbreken referentie-antwoorden vrijwel altijd; daar verschuift de focus naar metrieken als <strong><em>hallucination detection</em></strong> of <strong><em>groundedness</em></strong>, die beoordelen of elke bewering in de output daadwerkelijk ondersteund wordt door de aangeleverde context. Zo blijft de kwaliteit toch meetbaar, ook zonder gouden standaard. Andere benaderende metrieken zijn <em><strong data-start="34" data-end="55">context relevance</strong></em>, die meet hoe sterk de opgehaalde passages semantisch aansluiten bij de vraag en dus bruikbaar zijn als basis voor generatie, en <em><strong data-start="185" data-end="205">answer relevance (helpfulness)</strong></em>, die beoordeelt in welke mate het uiteindelijke antwoord daadwerkelijk de vraag beantwoordt.</p>
<h1>Conclusie</h1>
<p lang="en-US">Generatieve AI zit vandaag in een hypefase, maar voor organisaties is betrouwbare kwaliteit van de output één van de belangrijkste criteria om dergelijke technologie met vertrouwen te kunnen inzetten. Bij een RAG-pipeline is de gegenereerde output gebaseerd op domeinkennis, maar zonder een robuust evaluatiekader is er onvoldoende zicht op de kwaliteit. Daarom is het belangrijk om in te zetten op meetbaarheid.</p>
<p data-pm-slice="1 1 []">Begin in de ontwikkelfase met een compacte, representatieve testset en duidelijke gouden standaard‑antwoorden. Daarop kunnen referentie‑gebaseerde metrieken toegepast worden zoals <em>correctness</em> om snel pijnpunten bloot te leggen. Eens je naar productie opschuift, kan je overschakelen op referentievrije metrieken zoals <em>groundedness</em> en <em>hallucination detection</em>, zodat je ook onbekende vragen kunt monitoren.</p>
<p data-pm-slice="1 1 []">Automatische evaluaties op basis van <em>LLM‑as‑judge</em> zijn geen wondermiddel. Hun grootste uitdaging is alignering: ervoor zorgen dat de automatische scores zo dicht mogelijk aansluiten bij het oordeel van domeinexperts. Toch leveren ze schaal en continuïteit: ze kunnen grote volumes outputs screenen, kunnen potentiële kwaliteitsproblemen aanduiden en bieden objectieve meetpunten om een LLM- of RAG-toepassing gericht bij te sturen. Door hun oordeel systematisch te vergelijken met manuele beoordelingen en de prompts van de evaluator bij te sturen, worden zowel de toepassing als de evaluator steeds beter via een iteratief proces.</p>
<hr />
<p data-pm-slice="1 1 []"><em data-rich-text-format-boundary="true">Dit is een ingezonden bijdrage van Bert Vanhalst, IT consultant bij Smals Research. Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>




]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AI Agents</title>
		<link>https://www.smalsresearch.be/talk-ai-agents/</link>
		
		<dc:creator><![CDATA[Smals Research]]></dc:creator>
		<pubDate>Tue, 27 May 2025 15:14:43 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Research talks]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=22792</guid>

					<description><![CDATA[De tweede Research Talk is live!   
Interview met Bert Vanhalst, researcher bij Smals Research, over AI Agents.]]></description>
										<content:encoded><![CDATA[
<p><strong>(NL)</strong> Interview met <a href="/author/vanhalst/" target="_blank" rel="noopener">Bert Vanhalst</a> van Smals Research over AI Agents. Interessant gesprek over de laatste evolutie in artificiële intelligentie, maar met de voeten op de grond, los van de hype.   Tweede gesprek in een reeks van Research talks, met de medewerking van Smals Academy.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>(FR)</strong> Entretien en Néerlandais (sous-titres disponibles) avec <a href="/author/vanhalst/" target="_blank" rel="noreferrer noopener">Bert Vanhalst</a> de Smals Research sur les agents IA. Conversation intéressante sur la dernière évolution de l&#8217;intelligence artificielle, mais avec les deux pieds sur terre, loin du battage médiatique. Deuxième entretien d&#8217;une série de Research talks, avec la coopération de Smals Academy.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>(EN)</strong> Interview in Dutch (subtitles available) with <a href="/author/vanhalst/" target="_blank" rel="noreferrer noopener">Bert Vanhalst</a> from Smals Research about AI Agents. Interesting conversation about the latest evolution in artificial intelligence, but with both feet on the ground, away from the hype. Second conversation in a series of Research talks, with the cooperation of Smals Academy.</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="ResearchTalk - AI Agents" width="500" height="281" src="https://www.youtube.com/embed/ber0aoci8oM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>&#8220;Vibe Coding&#8221; avec les IDE agentiques</title>
		<link>https://www.smalsresearch.be/vibe-coding-avec-les-ides-agentique/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Tue, 13 May 2025 11:35:51 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=22652</guid>

					<description><![CDATA[Les environnements de développement intégrés (IDE) agentiques font presque tout à votre place, comme si vous regardiez par-dessus l'épaule d'un programmeur tout en lui donnant des instructions. Bienvenue dans le monde du "Vibe Coding".]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<p><em><em>Dit artikel is ook beschikbaar in het&nbsp;<a href="/vibe-coding-met-agentic-ides/" data-type="post" data-id="22499">Nederlands</a>.</em></em></p>



<figure class="wp-block-image alignleft size-thumbnail is-resized is-style-default"><a href="/wp-content/uploads/2025/05/android.png"><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2025/05/android-150x150.png" alt="" class="wp-image-22544" style="width:213px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/android-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2025/05/android.png 268w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a></figure>



<p class="justify-text">Avez-vous déjà entendu parler du &#8220;Vibe Coding&#8221;&nbsp;? Il s&#8217;agit de programmer sans avoir à taper le code source. Un outil d&#8217;IA dans votre éditeur le fera pour vous ; il vous suffit de lui donner des instructions en langage naturel.</p>



<span id="more-22652"></span>



<p class="justify-text">Cela semble trop beau pour être vrai&nbsp;? La vérité est actuellement quelque part entre les deux. Créer une application spécifique et complexe en partant de zéro est en effet encore un peu ambitieux. Il existe cependant des exemples d&#8217;applications web simples qui ont été construites à l&#8217;aide de simples descriptions textuelles soumises à un moteur d’IA générative et qui font ce qu&#8217;elles doivent faire. Dans cet article, nous explorons les &#8220;IDE agentiques&#8221;, l&#8217;outil d&#8217;IA qui permet de faire cela, et nous nous intéressons de plus près à un produit que j&#8217;ai récemment testé&nbsp;: WindSurf.</p>
</div>
</div>



<h2 class="wp-block-heading justify-text">Le buzz du moment&nbsp;: agentiques</h2>



<p class="justify-text">À mon avis, les agents sont actuellement le principal moyen de faire progresser l&#8217;IA. La construction d&#8217;une couche d&#8217;outils et de processus de réflexion utiles autour d&#8217;un <a href="/les-modeles-de-langue-open-source-une-alternative-a-chatgpt/" data-type="post" data-id="19808">LLM</a> (Large Language Model ou grand modèle de langage) offre encore beaucoup de potentiel, là où les modèles de langage purs commencent à se heurter à <a href="https://thenewstack.io/entering-ai-autumn-why-llms-are-nearing-their-limit/">certaines limites</a>.</p>



<p class="justify-text">Dans un <a href="/agents-ia-avantages-defis-et-cas-utilisation/" data-type="post" data-id="22578">précédent article de blog sur les agents</a>, mon collègue Bert a déjà brièvement expliqué ce qu&#8217;est un IDE agentique. En bref, un agent est un fragment d&#8217;IA qui peut effectuer toutes sortes de tâches de manière (semi-)autonome (comme éditer des fichiers texte, par exemple, ce qui est l&#8217;activité principale en programmation). Nous connaissons déjà les environnements de développement intégrés&nbsp;: il s&#8217;agit des logiciels que nous utilisons pour écrire du code, composés d&#8217;un éditeur de texte et de tous les outils supplémentaires possibles pour compiler, exécuter, refactoriser le code, etc. Mon IDE préféré, par exemple, est <a href="https://www.jetbrains.com/idea/">Intellij IDEA</a>.</p>



<p class="justify-text">Le terme <em>IDE agentique</em> désigne un IDE qui, parmi ses outils supplémentaires intégrés, comprend une fonctionnalité permettant à l&#8217;IA d&#8217;exécuter toutes sortes de tâches à votre place. En général, l&#8217;IDE affiche une fenêtre dans laquelle vous pouvez dialoguer avec l&#8217;IA, qui se met au travail dès que vous lui demandez quelque chose. La grande différence avec les assistants IA plus basiques réside dans le fait que l&#8217;agent peut utiliser pratiquement toutes les fonctionnalités de l&#8217;IDE&nbsp;: éditer toutes sortes de fichiers (pas nécessairement celui sur lequel vous travaillez à ce moment-là), compiler et exécuter le code, voire le déployer sur un serveur, exécuter des commandes dans le terminal, etc. Travailler de cette manière, en conversant simplement dans la fenêtre de dialogue et en laissant l&#8217;agent faire le reste, est ce que l&#8217;on appelle le &#8220;vibe coding&#8221;.</p>



<h2 class="wp-block-heading">Quelques Exemples</h2>



<p class="justify-text">Une petite recherche sur Internet nous permet de trouver rapidement plusieurs exemples d&#8217;IDE agentiques.</p>



<ul class="wp-block-list">
<li class="justify-text"><a href="https://bolt.new/">https://bolt.new/</a> fonctionne entièrement sur le web et permet de créer des applications web complètes à partir d&#8217;une invite. La plateforme est très populaire, même si plusieurs tentatives sont parfois nécessaires (et donc plutôt une conversation entière qu&#8217;une seule invite) pour obtenir le résultat souhaité. Ce site de commerce en ligne (qui n&#8217;est pas entièrement fonctionnel) a par exemple été construit après une conversation avec 5 invites de plus en plus complexes: <a href="https://starlit-melba-287efe.netlify.app/products">https://starlit-melba-287efe.netlify.app/products</a> .</li>



<li class="justify-text"><a href="https://github.com/features/copilot">GitHub CoPilot</a> est sans doute l&#8217;un des plus connus. Il donne un nouvel élan à l&#8217;IDE Visual Studio Code (VS Code) grâce à une IA qui travaille pour vous, un peu comme la programmation en binôme.</li>



<li class="justify-text"><a href="https://windsurf.com/editor">Codeium WindSurf</a>, un autre IDE agentique basé sur VS Code, sera présenté plus en détail ci-dessous. WindSurf est actuellement en cours d&#8217;acquisition par OpenAI.</li>



<li class="justify-text"><a href="https://www.cursor.com/">Cursor</a> est également un IDE basé sur VS Code et l&#8217;un des IDE agentique les plus connus et les plus populaires.</li>



<li class="justify-text"><a href="https://cline.bot/">https://cline.bot/</a> . Également basé sur VS Code, et open source.</li>



<li class="justify-text">La liste continue&nbsp;: Lovable, V0, Replit Agent, Devin, Trae, …</li>



<li class="justify-text">Le petit nouveau (disponible depuis quelques semaines seulement)&nbsp;:  <a href="https://www.jetbrains.com/junie/">IntelliJ Junie</a>. Il sera certainement intéressant pour nous de le tester plus en détail à l&#8217;avenir, car il est basé sur IntelliJ IDEA.</li>
</ul>



<h2 class="wp-block-heading">Testé&nbsp;: Codeium WindSurf</h2>



<p class="justify-text">Avant de commencer à tester WindSurf (anciennement Codeium), je n&#8217;avais pratiquement aucune expérience avec VS Code, l&#8217;IDE sur lequel Windsurf est basé, mais cela s&#8217;est avéré ne pas poser de problème&nbsp;! Une fois l&#8217;installation terminée, j&#8217;ai eu l&#8217;idée d&#8217;un test très simple&nbsp;: j&#8217;ai demandé à l&#8217;IDE de m&#8217;écrire un petit outil en Java, qui se connecterait à Confluence et lirait les données d&#8217;un tableau sur une page spécifique. L&#8217;outil devait ensuite transférer ces données dans un nouveau fichier Excel et l&#8217;enregistrer sur mon PC..</p>



<p class="justify-text">L&#8217;outil a bien démarré, mais il y avait quelques problèmes à surmonter. À titre d&#8217;exemple, la connexion à Confluence ne fonctionnait pas avec les identifiants que Windsurf m&#8217;avait demandés lors de notre conversation initiale. Après une petite recherche sur Confluence, j&#8217;ai compris comment la connexion au site devait fonctionner pour les outils programmés, et j&#8217;ai pu en informer WindSurf. L&#8217;IDE a rapidement apporté les modifications nécessaires et tout a fonctionné. Après une brève conversation pour obtenir quelques détails supplémentaires sur l&#8217;application afin qu&#8217;elle réponde à mes besoins, j&#8217;ai obtenu, en une heure environ, une version fonctionnelle de l&#8217;outil demandé.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/05/windsurf.png"><img loading="lazy" decoding="async" width="1024" height="603" src="/wp-content/uploads/2025/05/windsurf-1024x603.png" alt="" class="wp-image-22550" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-1024x603.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-300x177.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-768x452.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf.png 1229w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">L&#8217;IDE WindSurf en action</figcaption></figure>



<p class="justify-text">Un deuxième test, dans lequel j&#8217;ai demandé une application plus importante en plusieurs composants (serveur API + interface web, etc.), a été interrompu en raison d&#8217;un manque de crédits dans la version gratuite. Il s&#8217;est avéré qu&#8217;un IDE agentique perd ici un peu de sa vue d&#8217;ensemble et commet des erreurs en raison de la taille du projet.</p>



<p class="justify-text">Pour le troisième test, armé d&#8217;une licence commerciale et soutenu par un architecte compétent, je me suis mis au travail sur le code existant d&#8217;un projet Java assez ancien, avec une structure monolithique et des dépendances et méthodes obsolètes. Du moins, c&#8217;était une partie de l&#8217;équation. L&#8217;application est en cours de réécriture chez Smals, et une partie du nouveau code était déjà disponible. L&#8217;objectif du test était de permettre à WindSurf d&#8217;ajouter une fonctionnalité complète dans le nouveau code source, sur la base de tout le code existant (hérité + nouveau).</p>



<p class="justify-text">La nouvelle architecture de cette application était extrêmement modulaire (une architecture dite &#8220;oignon&#8221;) et nous avons dû ajuster régulièrement l&#8217;IDE, car il ne fournissait pas les ajouts et modifications appropriés dans tous les modules en même temps. À un moment donné, nous avons également dû l&#8217;aider manuellement à rechercher une fonctionnalité dans l&#8217;ancienne version du projet, afin de pouvoir la reprogrammer dans la nouvelle version. Finalement, après deux heures de &#8220;vibe coding&#8221;, nous avons ajouté la fonctionnalité, ce qui aurait autrement été une tâche fastidieuse et répétitive (mais impossible à automatiser de manière traditionnelle) pour un programmeur.</p>



<h2 class="wp-block-heading">Comment peut-on faire encore mieux&nbsp;?</h2>



<p class="justify-text">Comme nous avons pu le voir dans la section précédente, les IDE agentiques offrent de nombreuses possibilités pour raccourcir et automatiser en partie le travail de programmation, mais tout ne se passe pas toujours sans accroc, car l&#8217;agent se trompe, ne fait pas exactement ce que nous voulons ou oublie de faire certaines choses. Un peu comme un programmeur inexpérimenté, peut-être&nbsp;? Le problème se pose d&#8217;autant plus que le projet prend de l&#8217;ampleur.</p>



<p class="justify-text">Nous nous posons alors naturellement la question suivante&nbsp;: comment pouvons-nous améliorer cela&nbsp;? Nous ne sommes toutefois pas les seuls ; d&#8217;autres <a href="https://nmn.gl/blog/ai-understand-senior-developer">sur le web</a> ont déjà réfléchi à cette question et confirment ce que nous soupçonnions déjà&nbsp;: il faut fournir davantage de contexte et de meilleure qualité pour aider l&#8217;agent à comprendre ce que nous voulons réellement. Cela peut se faire de différentes manières&nbsp;: vous pouvez ajouter une liste de tâches à l’invite, et/ou vous pouvez fournir un fichier dans le projet, avec une liste d&#8217;instructions supplémentaires, et/ou vous pouvez ajouter dans chaque dossier d&#8217;un projet existant un fichier contenant des informations utiles sur ce dossier, et vous pouvez le faire de manière hiérarchique pour les sous-dossiers. Il s&#8217;agit en fait d&#8217;une sorte de signalisation de votre projet, adaptée à l&#8217;IA.</p>



<p class="justify-text">Bien sûr, fournir tout ce contexte représente beaucoup de travail. Mais ne vous inquiétez pas&nbsp;: il est probablement possible de laisser l&#8217;IA le faire elle-même dans une étape préparatoire. Il existe même déjà <a href="https://gigamind.dev/context">des outils commerciaux</a> à cet effet, qui agissent également comme des agents et utilisent également un LLM en arrière-plan.</p>



<p class="justify-text">Documenter le code existant et le rendre plus compréhensible de cette manière est utile pour un IDE agentique, mais aussi pour les développeurs humains&nbsp;! Ce sera la prochaine piste de recherche sur ce que l&#8217;IA peut apporter à la programmation…</p>



<h2 class="wp-block-heading">Conclusion</h2>



<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2025/05/computers.png"><img loading="lazy" decoding="async" width="576" height="864" src="/wp-content/uploads/2025/05/computers.png" alt="" class="wp-image-22553" style="width:239px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/computers.png 576w, https://www.smalsresearch.be/wp-content/uploads/2025/05/computers-200x300.png 200w" sizes="auto, (max-width: 576px) 100vw, 576px" /></a></figure>



<p class="justify-text">Les IDE agentiques sont actuellement l&#8217;incarnation ultime de la programmation assistée par l&#8217;IA. Ils vont bien au-delà de la simple assistance et peuvent coder à votre place, comme si vous parliez à un développeur (inexpérimenté) qui effectue le travail à votre place. Le &#8220;Vibe Coding&#8221; pourrait bien prendre en charge une grande partie de notre travail dans un avenir proche&nbsp;!<br>La seule nuance, que nous devons toujours apporter à l&#8217;IA, c&#8217;est qu&#8217;il ne s&#8217;agit pas de magie&nbsp;: elle ne sait pas automatiquement ce qui doit être fait, et vous devrez l&#8217;ajuster et lui fournir un contexte. <em>Garbage in – Garbage out.</em><br>Il y a donc certainement encore matière à amélioration, mais vu la vitesse à laquelle la technologie évolue, cela pourrait bien arriver rapidement…</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"></div>
</div>
</div>
</div>


]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
