IA agentique : le prompt engineering, une discipline clé pour les développeurs
Alors que l’IA agentique est sur le point de transformer en profondeur le travail quotidien des ingénieurs logiciels, des bonnes pratiques émergent dans des entreprises comme LinkedIn, Oracle et AWS.
Le prompt engineering est à la mode depuis l’apparition de l’IA générative. Une mode amenée à gagner en importance.
Le prompt engineering fait référence à un ensemble de techniques qui optimisent les résultats générés par les grands modèles de langage. Les LLM tels que GPT-3.5 (à travers ChatGPT) ont constitué la première vague de technologies d’IA générative à pénétrer le marché de l’IT d’entreprise à la fin de l’année 2022. Au cours des 18 derniers mois, l’IA agentique – dans laquelle des composants logiciels autonomes soutenus par des LLM exécutent indépendamment des flux de travail à plusieurs étapes – est apparue comme la prochaine évolution de la GenAI.
Si le prompt engineering peut contribuer à rendre les réponses de la GenAI plus utiles et plus précises, il devient critique lorsque les LLM commencent à agir. C’est d’autant plus vrai dans le développement et le déploiement d’applications.
L’IA agentique place une nouvelle couche d’abstraction entre les développeurs et le code. Bien que la programmation manuelle ne soit pas exclue, elle associe d’autres disciplines, notamment la logique et le langage naturel. Cela ouvre le développement d’applications à un plus grand nombre de personnes. Tout en donnant naissance à une nouvelle spécialisation en ingénierie de l’IA.
Selon des praticiens expérimentés, la plupart des développeurs de logiciels devront toutefois trouver un équilibre entre leurs compétences en matière de programmation et leurs prouesses d’ingénierie, pour rester pertinents dans un monde où les agents IA pullulent.
« S’il est question de nouvelles applications (greenfield), il est tout à fait possible de demander à un agent de les développer », déclare Krishnan Sridhar, vice-président de l’ingénierie, de l’expérience des développeurs et des plateformes du réseau social d’entreprise LinkedIn. « En revanche, pour les grands systèmes logiciels d’entreprise, je pense toujours qu’il faudra un humain pour mettre en place les aspects essentiels ».
« Cela signifie qu’un développeur de logiciels, à l’avenir, devra être capable de naviguer entre ces mondes de manière transparente. Vous devez être bon dans l’exploitation de l’IA, mais en même temps, capable d’aller plus loin. »
Bâtir les fondations d’une automatisation propulsée par l’IA
L’IA agentique représente un pas en avant dans l’automatisation informatique. Ces systèmes sont voués à déterminer leurs propres flux de travail, mais un vieil axiome de l’informatique s’applique toujours : « Garbage in, garbage out ».
« Ce que nous constatons avec certains de nos premiers efforts [en matière d’IA agentique], c’est que l’automatisation fonctionne mieux lorsque votre système est rationnel et prévisible ».
Krishnan SridharVice-président de l'ingénierie, LinkedIn
« Ce que nous constatons avec certains de nos premiers efforts [en matière d’IA agentique], c’est que l’automatisation fonctionne mieux lorsque votre système est rationnel et prévisible », observe Krishnan Sridhar. « En fin de compte, tous les LLM sont entraînés au langage naturel. Ils essaient de “parler” le code comme si c’était de l’anglais. Donc, plus vous pouvez être descriptif dans l’architecture de votre système, dans l’étiquetage [des ressources], plus cela fait une différence dans la façon dont un agent est capable d’extrapoler et de prendre des décisions éclairées », explique-t-il.
Une fois que LinkedIn a posé les bases, les développeurs ont commencé à se familiariser avec le prompt engineering en travaillant avec des LLM individuels, continue Karthik Ramgopal, ingénieur distingué chez LinkedIn. De ces premières expériences, les bonnes pratiques ont commencé à émerger.
« Il existe actuellement une abondante littérature sur les limites cognitives des modèles », poursuit Karthik Ramgopal. « Certains documents fournissent beaucoup de conseils sur la manière de décomposer les tâches afin de ne pas donner trop d’informations à un modèle. Il s’agit de décomposer les choses en éléments plus petits et d’enchaîner les prompts pour obtenir une meilleure qualité », évoque-t-il. « Cela améliore aussi considérablement la “testabilité”, car vous pouvez alors commencer à tester chacun de ces éléments individuels, plutôt que de tester un flux de travail complexe et agrégé ».
Les LLM les plus récents peuvent générer des sorties structurées formatées selon les attentes des applications en aval, telles que JSON ou XML. Selon M. Ramgopal, l’utilisation de ces sorties structurées est également en train de devenir une bonne pratique.
« Par opposition aux techniques antérieures, qui impliquaient de multiples cycles ou une analyse minutieuse de la sortie, aujourd’hui, tout cela peut être évité », considère-t-il.
Karthik Ramgopal recommande aux développeurs de se familiariser avec les techniques qui modifient la manière dont les données sont transmises aux LLM. L’objectif est d’optimiser les résultats. Par exemple, une architecture RAG (Retrieval Augmented Generation) fournit des données contextuelles au LLM, tandis que le few-shot learning fournit des exemples représentatifs d’une réponse souhaitée à partir desquels un modèle peut apprendre.
« Toutes ces décisions sont encore prises par les développeurs », signale l’ingénieur distingué chez LinkedIn. « Il s’agit de répondre aux questions suivantes : “Quelle technique dois-je utiliser ? Dois-je utiliser une approche ‘chain of thought’ (ou un arbre de pensées), par exemple, pour réduire les hallucinations au détriment de la latence ? Est-ce que j’utilise l’apprentissage few-shot ? Comment est-ce que je génère des exemples pour cet apprentissage ? Sont-ils codés en dur, ou, proviennent-ils dynamiquement d’une base de données vectorielle ?” », liste-t-il.
Le bon outil pour le bon usage
Le discernement humain et l’expertise des développeurs restent essentiels pour orchestrer les systèmes d’IA et évaluer leurs résultats, selon Antje Barth, principal developer advocate pour l’IA générative chez AWS.
« L’IA générative agentique n’est pas toujours déterministe. Elle peut proposer plusieurs suggestions différentes », indique Antje Barth. « Là encore, l’expérience d’un développeur intervient pour signifier que la deuxième suggestion pourrait être une meilleure voie, ou peut-être que la première suggestion n’a pas fonctionné en raison d’autres contraintes. »
Les outils d’IA générative et agentique les plus avancés ont un coût important en matière de ressources de calcul, d’énergie et de consommation de services en cloud. Cela signifie que les développeurs doivent savoir quand utiliser les outils d’IA les plus avancés et quand s’en passer, souligne Sudha Raghavan, vice-présidente senior de la plateforme de développement chez Oracle.
« Le processus de réflexion d’un développeur aujourd’hui est passé de “J’ai un problème, je fais un design, j’écris du code” à “j’ai un problème” ».
Sudha RaghavanVice-présidente senior, plateforme de développement, Oracle
« Vous n’avez pas besoin d’un cluster de GPU de mille nœuds pour résoudre un petit problème d’inférence de chatbot », par exemple, insiste Sudha Raghavan. « Le processus de réflexion d’un développeur aujourd’hui est passé de “J’ai un problème, je fais un design, j’écris du code” à “j’ai un problème”. Quelle est la manière la plus rapide de concevoir, et cette conception est-elle non seulement optimale en termes de performance, mais aussi financièrement ? Puis-je obtenir cette information sur le coût à l’avance ? Quel niveau de preuve de concept dois-je réaliser avant de dire que cela peut être déployé dans un système et un service distribué à grande échelle ? ».
Selon Karthik Ramgopal de LinkedIn, un bon prompt engineering est également crucial pour contrôler les coûts des ressources. Par exemple, les développeurs doivent concevoir les prompts correctement pour tirer parti de la mise en cache des préfixes. Cette fonction de mise en cache des préfixes stocke et réutilise les requêtes d’inférence précédentes pour améliorer les performances et l’efficacité des LLM.
« Si vous êtes en mesure de placer les parties fixes ou partagées d’un prompt à son début, plutôt qu’au milieu, vous pouvez profiter de la mise en cache des préfixes. De la sorte, vous pouvez obtenir beaucoup d’avantages en matière de coût et de latence lorsque vous travaillez avec des LLM », témoigne-t-il. « Il existe également des techniques d’encodage compact des informations, en particulier dans le cas d’une architecture RAG, ainsi que des techniques permettant d’obtenir des résultats de manière compacte. Une grande partie du temps de calcul est également consacrée à l’encodage et au décodage des tokens ».
Les LLM sont voués à tenir un rôle plus important dans la pile logicielle
Une fois que les développeurs ont acquis une base de connaissances solide dans le prompt engineering et qu’ils ont une idée du fonctionnement des différents outils d’IA, l’IA agentique naît de cette expérience. Elle nécessite toutefois un autre changement d’approche.
Selon Antje Barth d’AWS, les développeurs peuvent orchestrer des agents d’IA en utilisant la même spécificité et les mêmes décompositions logiques de tâches que celles qu’ils utiliseraient dans les prompts ciblant un seul LLM.
« Amazon Q Developer comporte différents composants », explique-t-elle. « Il y a un composant qui aide aux tests unitaires. Il y a un composant qui aide à la phase de planification, [et ensuite] il y a la création de ligne de code. Il s’agit donc d’intégrer ces tâches agentiques ciblées dans un outil global plus puissant ».
À mesure que les premiers LLM cèdent la place à des modèles plus capables de raisonner et que les systèmes d’IA agentique prennent en charge davantage de tâches décisionnelles, ces compétences liées à l’agentique seront moins nécessaires. À long terme, les développeurs doivent réorienter leur expertise technique vers une vision plus large de l’architecture globale du système.
« En élevant le LLM à un niveau supérieur de la pile, le code d’orchestration traditionnellement écrit par des humains est désormais remplacé par un ensemble de descriptions de tâches et d’outils », observe Ian Beaver. Ian est le chief data scientist chez Verint, éditeur d’une solution CCaaS. « La compétence prompt engineering ne fera que continuer à se développer puisque c’est la façon dont les tâches et les ressources sont décrites pour construire un système agentique ».
À long terme, les développeurs disposeront de ce qu’un analyste du secteur appelle des « travailleurs numériques » disponibles à la demande.
« L’IA agentique consiste à compléter les humains par des agents. Un développeur peut avoir besoin d’assistance en matière de data science ou de suivi des pratiques SRE (Site Reliability Engineering) », déclare Andy Thurai, analyste chez Constellation Research. « Un développeur peut confier ce travail à un agent d’IA et poursuivre son travail de développement d’applications. »
À ce stade, le développement de logiciels mettra davantage l’accent sur la compréhension de la manière de fournir des capacités d’IA agentique, avance Antje Barth. Par exemple, il s’agit de faciliter la création d’expériences client hautement personnalisées, en toute sécurité et de manière crédible pour les clients.
« Il faut s’assurer que les réponses [de l’IA agentique] sont basées sur des données pertinentes pour l’entreprise, y compris les mesures de protection nécessaires dans cette application », souligne-t-elle. « C’est l’ensemble des compétences, à un niveau plus architectural, qui devra être mis en place ».
Fournir des bacs à sable sécurisés pour le prompt engineering
Il semble que les travailleurs numériques remplacent déjà leurs homologues humains dans certaines grandes entreprises. Les systèmes d’IA agentique ouvrent le développement d’applications à un plus grand nombre de métiers. Cependant, Ian Beaver de Verint souligne que l’expertise des développeurs sera toujours nécessaire pour garantir une utilisation sûre de ces systèmes.
« Les outils de construction et les interfaces agentiques abaissent la barrière à l’entrée de la GenAI, certes. Ce n’est pourtant pas une bonne idée de permettre à des personnes non formées à la livraison de logiciels et aux pratiques de qualité de les utiliser », rappelle-t-il. « Le processus standard d’assurance qualité doit toujours être appliqué et, d’une certaine manière, doit être plus rigoureux avec l’IA agentique. Elle implique de vérifier davantage de comportements applicatifs », insiste-t-il.
« Le processus standard d’assurance qualité doit toujours être appliqué et, d’une certaine manière, doit être plus rigoureux avec l’IA agentique ».
Ian BeaverChief data scientist, Verint
Le choix des LLM sous-jacents par un utilisateur peut entraîner des comportements très différents dans une application en aval. Les développeurs d’IA agentique non techniques peuvent l’ignorer ou ne pas savoir comment réagir dans ce cas, selon Ian Beaver. Ils peuvent ne pas effectuer les tests nécessaires pour prouver que le système agentique se comporte de manière prévisible en production. Ils peuvent ne pas être conscients de l’étendue des actions fournies par une API accessible à un LLM.
« Si cette API expose des opérations CRUD [création, lecture, mise à jour et suppression de données], le LLM peut modifier les données de l’entreprise de manière inattendue », illustre-t-il.
La nature imprévisible de l’IA agentique a conduit les ingénieurs de LinkedIn à créer des bacs à sable dédiés au prompt engineering. Des notebooks Jupyter sont mis à disposition des développeurs, des data scientists et des chefs de produit pour qu’ils puissent expérimenter en toute sécurité.
« Avec les produits d’IA agentique, vous ne faites que définir les garde-fous [pour l’automatisation de l’IA] », affirme Karthik Ramgopal. « Le chef de produit doit élaborer ces directives de qualité, que nous appelons le cadre d’évaluation. Ce bac à sable est un moyen facile de jouer avec l’expérience du produit et de voir ce qui se passe sans avoir à installer un environnement de développement complet sur leurs machines ».
Pour approfondir sur IA appliquée, GenAI, IA infusée