Lorsque nous parlons des « performances » d'un agent IA, nous avons tendance à nous focaliser sur un seul aspect : la vitesse. Si la latence brute est un indicateur essentiel, elle ne représente qu'une pièce d'un puzzle beaucoup plus vaste. Une véritable haute performance est un mélange de vitesse technique, de qualité et de fiabilité des résultats, et de fluidité de l'expérience utilisateur. Un agent qui donne rapidement une mauvaise réponse n'est pas performant. Il en va de même pour un agent qui donne la bonne réponse, mais dont l'interaction est confuse.
Chez SnapLogic, alors que nous développions et perfectionnions un agent IA pour un client important du secteur de la santé, nous nous sommes lancés dans une démarche d'optimisation globale des performances. Nous ne voulions pas seulement le rendre plus rapide. Nous avons essayé de l'améliorer à tous les niveaux. Cette démarche nous a appris que l'on peut obtenir des gains significatifs en examinant l'ensemble du système, depuis les sources de données back-end jusqu'aux pixels sur l'écran de l'utilisateur.
Voici notre guide pour créer un agent IA vraiment performant, étayé par des mesures concrètes.
La Fondation : données et architecture
Avant de pouvoir régler un moteur, il faut le monter sur un châssis solide. Pour un agent IA, ce châssis correspond à son architecture centrale et à sa relation avec les données.
- Choisissez le bon cerveau pour la tâche : tous les LLM ne sont pas créés égaux. Le « meilleur » modèle dépend entièrement de la nature des tâches que votre agent doit accomplir. Un agent simple disposant d'un ou deux outils a des exigences très différentes de celles d'un agent complexe qui doit raisonner, planifier et exécuter des opérations dynamiques. Il est essentiel d'adapter le modèle à la complexité de la tâche afin d'équilibrer le coût, la vitesse et les capacités.
| Complexité des tâches | Type de modèle | Caractéristiques et utilisations recommandées |
|---|---|---|
Tâches simples, réalisables à l'aide d'un seul outil | Rapide et économique | Objectif :exécuter une tâche bien définie avec un ensemble d'outils limité (par exemple, recherche simple de données, classification). Ces modèles sont rapides et peu coûteux, parfaits pour les actions à volume élevé et à faible complexité. |
Orchestration multi-outils | Équilibré | Objectif :choisir de manière fiablel'outil approprié parmi plusieurs options et traiter des demandes utilisateur modérément complexes. Ces modèles offrent un excellent compromis entre vitesse, coût et amélioration du suivi des instructions pour une bonne expérience utilisateur. |
Raisonnement complexe et tâches dynamiques | Haute performance / Sophistiqué | Objectif :traiter les requêtes ambiguës qui nécessitent un raisonnement en plusieurs étapes, une planification et l'utilisation d'outils avancés tels quela génération dynamique de requêtes SQL. Il s'agit des modèles les plus puissants (et les plus coûteux), indispensables pour les tâches où une compréhension approfondie et une grande précision sont essentielles. |
- Déconstruire la complexité grâce à une approche multi-agents : Un agent unique et monolithique conçu pour tout faire peut devenir lent et difficile à manier. Une approche plus avancée consiste à diviser un agent très complexe en une équipe d'agents plus petits et spécialisés. Cette stratégie offre deux avantages considérables :
- Cela permet d'utiliser des modèles plus rapides et moins coûteux. Chaque agent spécialisé a une tâche plus précise et mieux définie, ce qui signifie souvent que vous pouvez utiliser un LLM moins puissant (et plus rapide) pour cette tâche spécifique, en réservant votre modèle le plus sophistiqué à l'agent « gestionnaire » qui coordonne les autres.
- Cela augmente considérablement la réutilisabilité. Ces agents plus petits, spécifiques à une fonction, et leurs outils sous-jacents sont modulaires. Ils peuvent être facilement réutilisés dans le prochain agent IA que vous créerez, ce qui accélérera les cycles de développement futurs.
- Préparez le terrain pour réussir grâce aux données : La qualité d'un agent IA dépend entièrement des données auxquelles il a accès. Nous avons appris que l'optimisation de l'accès aux données est une première étape cruciale. Cela impliquait :
- Mise en œuvre du texte dynamique vers SQL : au lieu de nous appuyer sur des requêtes rigides et prédéfinies, nous avons donné à l'agent la possibilité de créer ses propres requêtes SQL de manière dynamique à partir du langage naturel. Cette flexibilité a nécessité un investissement initial important dans l'analyse et la compréhension des colonnes et des formats de données critiques dont notre agent aurait besoin à partir de sources telles que Snowflake.
- Génération de vues de base de données dédiées : pour prendre en charge l'agent, nous avons généré des vues dédiées au-dessus de nos tables sources. Cette stratégie remplit deux objectifs clés : elle réduit considérablement les temps de requête en pré-joignant et en simplifiant les données complexes, et elle nous permet de supprimer les données sensibles ou inutiles de la source, garantissant ainsi que l'agent n'a accès qu'à ce dont il a besoin.
- Préchargement du schéma pour plus d'agilité : il est essentiel de mettre le schéma de base de données à la disposition de l'agent pour garantir la précision de la génération dynamique de SQL. Pour optimiser ce processus, nous préchargeons les schémas pertinents au démarrage. Cette étape simple permet de gagner un temps précieux sur chaque requête générée par l'agent, ce qui contribue de manière significative à la réactivité globale.
Le moteur : réglage de la logique et de la récupération de l'agent
Notre boîte à outils de diagnostic : utiliser l'IA pour analyser l'IA
Avant de pouvoir optimiser le moteur, nous devions savoir exactement où se situait le frottement. Notre processus de diagnostic s'est déroulé en deux étapes :
- Analyse de haut niveau : nous avons commencé dans SnapLogic Monitor, qui fournit une vue tabulaire de haut niveau de toutes les exécutions de pipeline. Ce tableau de bord est le point de départ de toute analyse des performances. Comme vous pouvez le voir ci-dessous, il fournit une liste de toutes les exécutions, leur statut et leur durée totale. En cliquant sur le bouton « Télécharger le tableau », vous pouvez exporter ces données récapitulatives au format CSV. Cela permet une analyse rapide et de haut niveau pour repérer les valeurs aberrantes et les tendances sans avoir à se plonger immédiatement dans des fichiers journaux détaillés.
- Analyse approfondie grâce à l'IA : une fois que nous avons identifié un goulot d'étranglement à partir du tableau de bord (un pipeline qui prenait plus de temps que prévu), nous avons téléchargé les fichiers journaux détaillés et exhaustifs pour ces exécutions spécifiques du pipeline. Nous avons ensuite saisi ces journaux complexes dans un outil d'IA de notre choix. Cette approche « IA analysant l'IA » nous a aidés à identifier instantanément les problèmes clés qui auraient pris des heures à trouver manuellement.
Par exemple, ce processus a permis de découvrir une boucle d'erreur inutile causée par des versions du pilote JDBC en double, qui allongeait considérablement le temps d'exécution de nos Snowflake Snaps. La résolution de ce seul problème a été un facteur clé dans l'amélioration de 68 % des performances que nous avons constatée lors de l'interrogation de notre base de connaissances techniques.
Une fois le diagnostic précis établi, nous avons concentré notre attention sur le processus de « réflexion » de l'agent. C'est là que nous avons constaté certaines des améliorations les plus spectaculaires en termes de performances.
Comment nous y sommes parvenus :
- Élaboration d'instructions parfaites (invites système) : nous sommes passés d'invites génériques à des invites système hautement personnalisées, optimisées à la fois pour la tâche spécifique et le LLM choisi. Un modèle plus simple reçoit une invite plus simple et plus directe, tandis qu'un modèle sophistiqué peut recevoir l'instruction de « réfléchir étape par étape » afin d'améliorer son raisonnement.
- Un simple changement pour accélérer la production : l'une des optimisations les plus efficaces et les moins coûteuses en termes d'efforts a été apportée grâce à l'utilisation d'un outil de développement clé : le Snap Record Replay. Lors de la création et du test des pipelines de notre agent, ce Snap est indispensable pour capturer et rejouer les données, mais il ajoute environ 2,5 secondes de surcharge à chaque exécution. Pour une simple exécution d'agent impliquant un pilote, un travailleur et un outil, cela ajoute jusqu'à 7,5 secondes de latence inutile dans un environnement de production. Une fois nos pipelines testés avec succès, nous avons basculé ces Snaps en mode « Replay Only » (relecture uniquement). Ce simple changement a instantanément supprimé la surcharge d'enregistrement, ce qui a permis d'augmenter considérablement la vitesse de toutes les interactions des agents.
- Récupération plus intelligente et plus rapide des données (optimisation RAG): Pour nos outils de génération augmentée par la récupération (RAG), nous nous sommes concentrés sur deux leviers clés :
- Trouver le juste équilibre ( valeur k ) : nous avons ajusté la valeur k, c'est-à-dire le nombre de documents récupérés pour le contexte. Dans le cas de notre utilisation pour la recherche d'informations sur les produits, l'ajustement de cette valeur a été la clé de notre amélioration de 63 % en termes de vitesse. Il s'agit de l'art d'obtenir juste assez de contexte pour obtenir une réponse précise sans créer de travail inutile pour le LLM.
- Précision chirurgicale grâce aux métadonnées : au lieu d'effectuer systématiquement une recherche vectorielle large, nous avons permis à l'agent d'utiliser des métadonnées. S'il connaîtl'identifiant unique d'un document, il peut récupérer exactement ce document. C'est la différence entre parcourir une bibliothèque et utiliser une cote. C'est rapide et précis.
- Assurer la cohérence : nous réglons la température à une valeur basse pendant le processus d'extraction et d'indexation des données. Cela garantit la cohérence de la création des blocs de données, ce qui se traduit par des résultats de recherche plus fiables et reproductibles.
Les résultats : une transformation axée sur les données
Nos efforts d'optimisation ont permis d'obtenir des améliorations significatives et mesurables dans plusieurs cas d'utilisation clés de l'agent IA.
| Cas d'utilisation | Avant l'optimisation | Après optimisation | Amélioration de la vitesse |
|---|---|---|---|
| Requête dans la base de connaissances techniques | 92 secondes | 29 secondes | ~68 % plus rapide |
| Traitement des données relatives aux commandes clients | 32 secondes | 10,7 secondes | ~66 % plus rapide |
| Récupération RAG | 5,8 secondes | 2,1 secondes | ~63 % plus rapide |
| Optimisation de la production (relecture uniquement) | 20 secondes | 17,5 secondes | ~12 % plus rapide* |
(*Cette amélioration est le résultat du passage des Snaps de développement à un mode « Replay Only » prêt pour la production, éliminant ainsi la latence inhérente à la phase de test.)
L'expérience : se concentrer sur l'utilisateur
En fin de compte, toutes les optimisations back-end du monde ne servent à rien si l'expérience utilisateur est médiocre. La dernière étape de notre stratégie consistait à nous concentrer sur l'application front-end.
- Interagissez, n'attendez pas passivement : un simple message « en cours... » peut inquiéter l'utilisateur et lui donner l'impression que l'attente est plus longue. Notre prochaine version fournira un statut en temps réel du processus de réflexion de l'agent (par exemple, « Consultation de la base de données des produits... », « Synthèse de la réponse... »). Cette transparence permet de maintenir l'intérêt de l'utilisateur et de renforcer sa confiance.
- Guider l'utilisateur vers la réussite : nous avons appris qu'une zone de texte vide peut être intimidante. En fournissant des exemples prédéfinis et en expliquant clairement les capacités de l'agent, nous guidons l'utilisateur vers des interactions fructueuses.
- Fournir un résultat clair : le résultat final doit être facile à comprendre. Nous présentons nos résultats de manière claire, à l'aide de tableaux, de listes et d'un langage simple, afin que l'utilisateur puisse comprendre et exploiter immédiatement les informations.
En adoptant cette approche holistique, nous avons optimisé la base, le moteur et l'expérience utilisateur afin de créer un agent IA qui ne se contente pas d'être rapide. Il est intelligent, fiable et véritablement utile.





