
Comment créer des garde-fous pour des agents efficaces
de plus en plus répandu dans de nombreuses applications. Cependant, intégrer des agents dans votre application va bien au-delà de simplement donner à un LLM un accès à toutes les données et fonctions. Vous devez également créer des garde-fous efficaces qui garantissent que l’agent n’a accès qu’aux données pertinentes et empêchent toute utilisation abusive des fonctions. Vous devez le faire, tout en vous assurant que le modèle peut fonctionner efficacement avec un accès aux données nécessaires et utiliser autant de fonctions que possible, sans avoir besoin d’un humain dans la boucle.
Mon objectif pour cet article est de mettre en évidence, à un niveau élevé, comment créer des garde-fous agentiques efficaces pour garantir que votre agent n’a accès qu’aux données et fonctions nécessaires tout en conservant une bonne expérience utilisateur, par exemple en minimisant le nombre de fois qu’un humain doit approuver l’accès d’un agent. Je vais d’abord expliquer pourquoi les garde-corps sont si importants, avant de passer à un élément crucial des garde-corps : l’autorisation fine. Ensuite, je discuterai de la création de garde-corps pour vos données et je continuerai à aborder les garde-corps pour les fonctions.

Pourquoi vous avez besoin de garde-corps pour vos agents
Tout d’abord, je souhaite décrire pourquoi nous avons besoin de garde-fous pour les agents d’IA. En théorie, vous pourriez simplement donner à l’agent l’accès à toutes les bases de données et fonctions de vos applications, n’est-ce pas ?
Il existe plusieurs raisons pour lesquelles des garde-corps sont nécessaires. La raison principale est d’empêcher l’agent d’effectuer des actions indésirables, telles que la suppression de tables de base de données. En outre, vous devez également vous assurer que les agents n’ont accès qu’aux données d’un périmètre donné, par exemple en vous assurant qu’un agent utilisé par un client ne peut pas utiliser les données d’un autre client.
Certains garde-corps peuvent être installés automatiquement et ne nécessitent aucune intervention humaine. L’accès à la base de données se fait selon une telle barrière de sécurité, dans laquelle vous définissez la portée dans laquelle un agent opère (par exemple, au sein d’un client) et autorisez uniquement l’agent à accéder aux données de ce client. Cependant, d’autres garde-corps nécessitent une interaction humaine. Imaginez si un agent souhaite exécuter une commande, comment pouvons-nous nous assurer que l’agent n’effectue pas d’action destructrice (comme la suppression d’une table de base de données) et que l’utilisateur autorise la commande ?
Dans ces scénarios, nous avons un humain dans la boucle, où l’agent demande la permission d’effectuer une action spécifique. Si l’utilisateur le permet, l’agent peut continuer, et si ce n’est pas autorisé, l’agent doit décider d’une autre ligne de conduite.
Autorisations précises
Une exigence probable pour travailler avec des agents est de disposer d’autorisations précises. Cela signifie que vous pouvez facilement vérifier si une fonction, ou certaines données, sont disponibles dans une certaine étendue, comme :
- Ce client 1 a-t-il accès à la table A de la base de données ?
- L’utilisateur 2 a-t-il accès à la fonction B ?
- L’organisation 3 a-t-elle accès à la fonction C ?
Il est essentiel que vous disposiez d’une autorisation précise implémentée dans votre application. Il existe de nombreux fournisseurs proposant cette fonctionnalité.
Lorsque vous avez implémenté une autorisation précise, vous devez l’implémenter dans toutes les fonctions de vos applications et gérer à la fois le scénario dans lequel l’accès est accordé et celui dans lequel l’accès est refusé. Si l’accès est refusé, par exemple, vous pouvez envisager d’ajouter un message indiquant que vous devez demander à un administrateur un niveau d’accès spécifique pour pouvoir effectuer une certaine action.
Garde-corps agent pour les données
Une fois que vous avez mis en œuvre des autorisations précises, nous pouvons commencer à discuter des garde-fous autour de vos données. Il est important que votre agent ait accès à autant de données que possible pour répondre efficacement aux questions des utilisateurs. Vous devez ensuite équilibrer cela avec le fait que l’agent ne doit pas accéder aux données restreintes ni récupérer les informations inutiles dont il n’a pas besoin pour répondre à la requête de l’utilisateur.
Accès aux données restreintes
Restreindre l’accès aux données pour vos agents dépend principalement de l’autorisation fine. Dans vos fonctions qui effectuent des recherches de données (recherche dans une base de données, récupération de compartiments,…), vous devez d’abord vérifier la portée d’accès de l’utilisateur.
De plus, vous devriez également envisager d’informer votre agent dans l’invite de ce qu’il est autorisé à faire. Demander à l’agent d’essayer d’accéder aux données, puis de se voir refuser l’accès pour une raison quelconque, sera coûteux, à la fois en termes d’utilisation des jetons et en termes de temps.
Évitez de récupérer des informations inutiles
Si vous accordez à votre agent l’accès à toutes les tables de base de données et compartiments de données, vous pourriez rencontrer des problèmes lorsque les agents disposent de trop d’options, et il sera difficile pour l’agent de sélectionner la table et les champs de document appropriés. C’est également un sujet que j’ai abordé récemment dans mon article sur la création d’outils pour des agents efficaces.
Pour résoudre ce problème, je me concentrerais uniquement sur l’information de l’agent des sources d’informations pertinentes. Si l’agent travaille sur une tâche dont vous savez qu’elle ne peut être résolue qu’à l’aide de la base de données A, vous devez envisager d’informer l’agent uniquement sur la base de données A et de laisser toutes les autres bases de données en dehors de l’invite de l’agent. Cela suppose bien sûr que vous sachiez quelles données sont potentiellement pertinentes pour que l’agent réponde aux requêtes.
Garde-corps agent pour fonctions
Je pense que le sujet de la construction de garde-fous agentiques pour les fonctions est encore plus intéressant. La raison en est qu’il y a de nombreux éléments à prendre en compte lors de la construction de ces garde-corps :
- Comment prévenir les actions destructrices ?
- Comment minimiser les interactions humaines ?
Comment prévenir les actions destructrices
Le sous-thème le plus important des garde-fous fonctionnels est la prévention des actions destructrices. Pour résoudre ce problème, vous devez marquer toutes les fonctions pour savoir si elles fonctionnent actions irréversibles. Par exemple
- La suppression d’une table de base de données est irréversible (vous pouvez bien sûr charger une sauvegarde, mais cela nécessite un certain travail)
- Lire sur une table n’a aucun impact destructeur
Si l’agent effectue une action facilement réversible (elle peut être inversée en cliquant sur un bouton d’annulation) ou une action qui n’a aucun impact destructeur, vous pouvez probablement simplement autoriser l’agent à exécuter la fonction.
Toutefois, si une fonction effectue une action irréversible, vous devez en informer l’agent et probablement demander à l’utilisateur humain si l’agent peut effectuer cette action.
Comment minimiser les interactions humaines dans la boucle
Naturellement, vous souhaitez éviter les actions destructrices. Cependant, vous ne voulez pas non plus trop déranger l’utilisateur en lui demandant si l’agent peut effectuer une action ou non.
Une excellente approche pour minimiser les interactions humaines consiste à effectuer une liste blanche de fonctions, comme ce que fait Cursor pour exécuter des commandes de terminal : La première fois que Cursor souhaite exécuter une commande, telle que :
- cd dans un dossier
- Courir tests pytest
- déplacer un fichier d’un emplacement à un autre
Le curseur demandera à l’utilisateur s’il est autorisé à exécuter une commande. Vous pouvez alors choisir l’une des trois options ci-dessous :
- Refuser la demande
- Accepter la demande (une fois)
- Mettez la commande sur liste blanche (acceptez la demande maintenant et à l’avenir)
La liste blanche fonctionne bien car vous vous assurez que l’utilisateur autorise l’agent à exécuter une fonction ou une commande, mais vous n’avez plus à le déranger à propos de cette fonction exacte à l’avenir. Néanmoins, la liste blanche présente l’inconvénient que certaines commandes ne peuvent pas être ajoutées à la liste blanche, étant donné qu’un utilisateur doit revoir le contexte chaque fois que l’agent suggère d’exécuter certaines fonctions (telles que la suppression d’une table de base de données).
Conclusion
Dans cet article de haut niveau, j’ai expliqué comment aborder la création d’applications agentiques en ce qui concerne les garde-corps. Des garde-fous sont nécessaires car vous devez vous assurer que l’agent agit selon le comportement souhaité et n’est pas autorisé à effectuer des actions telles que récupérer des informations hors de portée d’accès ou effectuer des actions destructrices sans l’autorisation explicite de l’utilisateur. J’ai discuté de la construction de garde-fous pour vos données et pour les fonctions que vous mettez à la disposition de votre agent. Je pense que les garde-fous sont un élément important de la création d’applications agentiques, qu’il convient de toujours garder à l’esprit lors de la création d’applications agentiques. S’assurer que des garde-fous appropriés sont en place rendra l’utilisation de vos agents plus sûre, ce qui est essentiel, étant donné que si la confiance d’un utilisateur dans l’agent est brisée, il sera difficile de récupérer la confiance de l’utilisateur.
👉 Retrouvez-moi sur les réseaux sociaux :
✍️ Moyen
Vous pouvez également lire certains de mes autres articles :



