Bacs à sable pour agents d’apprentissage par renforcement : essais sécurisés, état et réinitialisabilité

Bacs à sable pour agents d’apprentissage par renforcement : essais sécurisés, état et réinitialisabilité

Les bacs à sable pour agents RL doivent rendre les expériences reproductibles en isolant l’état, en contrôlant les ressources, en enregistrant les actions et les sorties, et en réinitialisant les environnements entre les essais. Cela est important pour l’apprentissage par renforcement, les boucles d’évaluation, les agents de codage, les agents navigateurs et tout système d’essai-erreur où un agent peut exécuter des commandes, modifier des fichiers, appeler des outils ou changer l’environnement dans lequel il apprend.

Pourquoi les agents RL ont besoin d’un bac à sable

L’apprentissage par renforcement repose sur l’interaction. Un agent observe un environnement, choisit une action, reçoit un retour et met à jour sa politique ou son processus de décision. Dans un simulateur jouet, cette boucle peut simplement déplacer un jeton sur une grille. Dans un système d’agent moderne, l’action peut exécuter du Python, installer un paquet, modifier un dépôt, cliquer dans une application web, appeler un outil ou produire un fichier qu’un correcteur évalue.

Cela fait de l’environnement d’exécution une partie de l’expérience. Si deux essais partagent un système de fichiers, un cache, une session de navigateur, un processus en arrière-plan ou un dépôt partiellement modifié, le second essai ne démarre pas dans le même état que le premier. La récompense peut s’améliorer parce que l’agent a appris, ou parce que l’environnement a accidentellement conservé une dépendance, un identifiant, un binaire compilé, un cookie de navigateur ou un fichier d’aide généré. Sans confinement et sans capacité de réinitialisation, il est difficile de faire la différence.

Un bac à sable donne à chaque essai une limite d’exécution définie. Ce n’est pas une stratégie de sécurité complète en soi, et cela ne supprime pas la nécessité de concevoir des récompenses, de réviser les politiques, de contrôler les accès ou d’obtenir une approbation humaine. Cela offre aux concepteurs un lieu contrôlé pour exécuter les actions de l’agent, observer les effets secondaires, capturer les artefacts et réinitialiser l’environnement avant la tentative suivante.

Pour le travail des agents de type RL, la question utile n’est pas simplement « ce bac à sable est-il sécurisé ? ». Une meilleure question est : cet environnement d’exécution peut-il prendre en charge des expériences reproductibles sans qu’un essai ne contamine silencieusement le suivant ?

Ce que la réinitialisabilité signifie pour les essais d’agents RL

La réinitialisabilité est la capacité de ramener l’environnement à une référence connue avant un nouvel épisode, une évaluation ou un lot d’entraînement. En pratique, cette référence inclut plus qu’un répertoire propre.

Un bac à sable pour agent RL peut devoir réinitialiser :

  • Les fichiers créés, modifiés, supprimés ou téléchargés pendant l’essai.
  • Les paquets installés, les caches de construction, les artefacts compilés et les fichiers temporaires.
  • Les processus en cours, les ports, les sockets, les sessions de navigateur et les tâches en arrière-plan.
  • Les variables d’environnement et les identifiants limités.
  • Les jeux de données de base de données, les services locaux, les files d’attente ou les API simulées.
  • La politique réseau, la configuration du registre de paquets et les autorisations des outils.
  • L’état d’évaluation, les journaux de récompense et les entrées du correcteur.

Le mécanisme de réinitialisation dépend de la charge de travail. Un benchmark de codage peut restaurer un checkout de dépôt et une fixture de test. Une tâche de navigateur peut effacer les cookies, le stockage local, les téléchargements et le profil du navigateur. Un agent d’analyse de données peut réinitialiser les ensembles de données d’entrée tout en ne conservant que les artefacts de sortie approuvés. Une évaluation multi-étapes peut nécessiter de mettre en pause, d’inspecter, puis de reprendre ou de jeter le bac à sable.

L’erreur est de traiter la réinitialisation comme un script de nettoyage exécuté à la fin. Les scripts de nettoyage échouent. Les agents peuvent les tuer, les bloquer avant leur exécution, remplir les disques, laisser des processus en arrière-plan ou créer des chemins que le script ne connaît pas. Une conception plus solide démarre chaque essai à partir d’un modèle ou d’un instantané connu, enregistre ce qui a changé, puis démantèle ou réinitialise la totalité de la frontière d’exécution.

Environnements reproductibles et instantanés d’état

Des essais RL reproductibles nécessitent une référence claire. Cette référence doit définir l’image du système d’exploitation, les environnements d’exécution, les paquets, les versions des ensembles de données, les variables d’environnement, les fichiers, la politique réseau, les limites de ressources et les commandes d’entrée.

Il existe trois modèles de référence courants :

Modèle Meilleur pour Attention
Bac à sable frais à partir d’un modèle Épisodes indépendants, évaluations par lots, tâches de codage, tâches de navigateur Le temps de démarrage et d’installation des paquets peut dominer les essais courts
Instantané et restauration Tâches multi-étapes nécessitant un environnement préparé avant chaque tentative La dérive des instantanés peut cacher les changements si l’instantané n’est pas versionné
Bac à sable longue durée avec points de contrôle contrôlés Débogage interactif, tâches curriculaires, correction avec intervention humaine L’état peut fuiter entre les essais sauf si les points de contrôle sont explicites

Les modèles sont utiles lorsque la plupart des essais démarrent à partir de la même image connue. Les instantanés sont utiles après une configuration coûteuse : installation des dépendances, téléchargement des fixtures publiques, compilation d’un projet ou ouverture d’un espace de travail prêt pour le navigateur. Les sessions longue durée peuvent aider pour les workflows d’agents qui ont réellement besoin de mémoire et d’état, mais elles ne devraient pas devenir la valeur par défaut pour l’évaluation à moins que le modèle d’état ne fasse partie de l’expérience.

Une règle pratique : définissez ce qui est autorisé à persister avant le début de l’essai. Si la réponse est « rien sauf les artefacts approuvés », utilisez des bacs à sable frais ou une restauration d’instantané. Si la réponse est « l’agent doit s’appuyer sur les tentatives précédentes », traitez cette persistance comme faisant partie de l’expérience et enregistrez-la comme telle.

Exécutions déterministes et non déterministes

Tous les essais d’agents ne peuvent pas être parfaitement déterministes. L’échantillonnage des modèles de langage, les API externes, le timing du navigateur, la disponibilité des registres de paquets, les processus parallèles et la latence réseau peuvent tous varier. Néanmoins, un bac à sable peut réduire les sources évitables de variation.

Pour des exécutions plus reproductibles, contrôlez ce que vous pouvez :

  • Fixez les versions des paquets, les images de conteneurs, les ensembles de données, les prompts, le code de l’évaluateur et la configuration du modèle.
  • Enregistrez les graines aléatoires lorsque le modèle, l’environnement ou l’évaluateur les prend en charge.
  • Figez les fixtures de benchmark et les sorties attendues.
  • Acheminez les installations de paquets via des registres ou caches approuvés.
  • Évitez les systèmes de production en direct comme sources de récompense, sauf si la tâche porte explicitement sur l’intégration en direct.
  • Capturez les commandes exactes, les appels d’outils, les fichiers et les destinations réseau utilisés pendant l’exécution.

Séparez ensuite les échecs déterministes du comportement stochastique. Si l’essai 7 échoue parce que l’agent a choisi un plan différent, c’est une information utile. Si l’essai 7 échoue parce que l’essai précédent a laissé un processus sur le même port, c’est une contamination de l’environnement. Si l’essai 7 échoue parce qu’un registre de paquets a renvoyé une version différente, c’est une dérive de dépendance.

Le bac à sable doit rendre ces différences visibles. Le but n’est pas de faire croire que chaque exécution d’agent RL est déterministe. Le but est de supprimer l’état caché et de préserver suffisamment de preuves pour expliquer pourquoi une exécution a changé.

Limites de ressources et de temps pour les boucles d’essai

Les boucles RL et d’évaluation peuvent exécuter de nombreux essais. Un seul bogue d’agent peut se multiplier rapidement : boucles infinies, installations de paquets incontrôlées, processus forkés, téléchargements volumineux, journaux illimités ou sessions de navigateur répétées. Les contrôles de ressources empêchent un mauvais essai de consommer tout le budget d’évaluation.

Définissez des limites au niveau du bac à sable, pas seulement dans les prompts de l’agent :

Limite Pourquoi c’est important pour les agents RL
Délai d’expiration (temps réel) Empêche les épisodes bloqués de ralentir le lot
Quota CPU et mémoire Empêche un essai d’affamer les essais voisins
Quota disque Contrôle les journaux, les caches, les installations de paquets et les artefacts générés
Limite de processus Réduit les échecs de sous-processus incontrôlés et de tâches en arrière-plan
Politique réseau Empêche les appels inattendus, les téléchargements ou l’accès interne
Limite de taille de sortie Maintient le contexte du modèle et les pipelines de télémétrie utilisables
Plafond de bacs à sable simultanés Protège le budget et l’infrastructure partagée pendant les balayages

Les délais d’expiration nécessitent de la nuance. Un délai d’expiration strict est adapté aux épisodes de benchmark courts. Une tâche de longue durée peut nécessiter une pause, une reprise ou un point de contrôle afin qu’un humain puisse inspecter les progrès avant de décider de continuer. L’important est que la politique d’exécution soit explicite. L’agent ne doit pas disposer de calcul illimité simplement parce que la boucle de récompense ne s’est pas terminée.

Télémétrie pour les récompenses, les évaluations et le débogage

Les signaux de récompense ne sont utiles que si vous pouvez les expliquer. Dans les systèmes d’agents, un score combine souvent de nombreux éléments : succès de la tâche, résultats des tests, codes de sortie des commandes, différences de fichiers, état du navigateur, latence, utilisation des jetons, étiquettes humaines et sortie du correcteur. Un bac à sable doit capturer les preuves nécessaires pour comprendre le score sans stocker inutilement des secrets ou des données privées.

La télémétrie utile comprend :

  • ID du bac à sable, ID de l’essai, ID de la tâche, version du modèle ou de l’instantané, et heure de début.
  • Configuration du modèle et de l’agent utilisée pour l’exécution.
  • Appels d’outils, commandes shell, codes de sortie et durée d’exécution.
  • Fichiers lus, écrits, créés, supprimés ou exportés.
  • Domaines réseau contactés et noms de paquets installés.
  • Actions du navigateur, captures d’écran, téléchargements et état final de la page le cas échéant.
  • Entrées de l’évaluateur, sorties de récompense, résultats des tests et erreurs du correcteur.
  • Artefacts copiés hors du bac à sable pour examen.

Gardez les journaux bruts limités. La sortie complète des commandes, les prompts bruts, les captures d’écran du navigateur et les fichiers générés peuvent contenir des informations sensibles. Pour de nombreux systèmes, la meilleure valeur par défaut est une télémétrie structurée avec des artefacts conservés de manière sélective. Stockez suffisamment pour reproduire et déboguer l’exécution ; évitez de transformer les journaux en un deuxième lac de données rempli d’identifiants, de données clients et de sorties de modèle non révisées.

La conception des récompenses doit également tenir compte des limites du bac à sable. Si l’agent n’est pas autorisé à accéder à l’Internet public, ne le pénalisez pas comme un échec parce qu’un site web en direct était indisponible. Si le bac à sable a un petit quota disque, mesurez si l’agent a géré cette contrainte, et non s’il pourrait forcer le stockage. La politique de l’environnement et la fonction de récompense doivent s’accorder.

Limites des fichiers, du réseau et des actions dangereuses

Le bac à sable est le plus utile lorsqu’il restreint ce qu’un agent peut toucher. Pour les essais de type RL, partez du principe que l’agent peut découvrir des actions surprenantes. Il peut exécuter des commandes que le prompt n’a pas mentionnées, inspecter des fichiers cachés, réessayer un chemin réseau bloqué, installer des paquets ou générer des scripts qui modifient le comportement dans les étapes suivantes.

Utilisez des limites du système de fichiers adaptées à la tâche :

  • Montez les entrées en lecture seule lorsque l’agent n’a besoin que de les inspecter.
  • Placez les sorties générées dans un répertoire d’écriture séparé.
  • Gardez les identifiants, la configuration de l’hôte, les profils de navigateur et les clés de déploiement hors de l’espace de travail.
  • Réinitialisez les répertoires inscriptibles entre les essais.
  • Copiez uniquement les artefacts approuvés, pas tout l’espace de travail par défaut.

La politique réseau nécessite la même précision. Un benchmark de codage peut ne pas nécessiter d’accès Internet. Une tâche d’installation de paquets peut nécessiter une liste d’autorisation de registre. Une évaluation d’agent navigateur peut nécessiter des sites Web publics spécifiques et des points de terminaison de métadonnées internes bloqués. Un workflow d’agent de données peut nécessiter une API restreinte plutôt qu’une large accessibilité au réseau privé.

Les actions dangereuses doivent rester en dehors de la boucle automatique, sauf si l’expérience les inclut explicitement et que la voie de révision est claire. Il s’agit notamment des déploiements en production, des messages adressés aux clients, des modifications de facturation, des modifications du contrôle d’accès, des exportations volumineuses, des écritures destructrices dans la base de données et des modifications d’infrastructure. Un bac à sable peut contenir les effets secondaires de l’exécution ; il ne peut pas décider quelles actions métier méritent une approbation.

Capture d’artefacts et révision humaine

La fin d’un essai d’agent RL devrait produire un enregistrement vérifiable. Cela ne signifie pas tout conserver. Cela signifie conserver les artefacts nécessaires pour noter, auditer et apprendre de l’essai.

Pour les agents de codage, cela peut être un patch, un journal de test, un rapport généré et une différence finale de l’espace de travail. Pour les agents navigateurs, cela peut être une séquence de captures d’écran, un fichier téléchargé, une URL finale et un résumé DOM. Pour les agents d’analyse de données, cela peut être un notebook, un graphique, un ensemble de données transformé et un score de l’évaluateur. Pour les workflows sensibles à la sécurité, cela peut inclure les actions refusées et les demandes d’approbation.

La révision humaine se situe à la frontière où l’expérimentation en bac à sable affecterait autrement les systèmes externes. Les bons points de révision incluent :

  • Avant d’exporter des fichiers d’un bac à sable vers un espace de travail de production.
  • Avant d’envoyer des messages, d’ouvrir des tickets, de publier des pages ou de déployer du code.
  • Avant d’accorder de nouvelles autorisations réseau, de système de fichiers ou de secrets.
  • Avant d’utiliser une politique apprise sur des utilisateurs en direct ou des données clients.
  • Après des échecs répétés suggérant un détournement de récompense, une injection de prompt ou une mauvaise utilisation de l’environnement.

La révision doit être conçue dans la boucle, et non ajoutée après coup lorsque l’agent dispose d’un large accès. Le bac à sable doit rendre l’action proposée, les artefacts associés et l’historique de l’essai faciles à inspecter.

Où s’insère Novita Agent Sandbox

Novita Agent Sandbox est un environnement d’exécution cloud en bac à sable pour les agents IA qui ont besoin d’environnements isolés pour l’exécution de code, le travail sur le système de fichiers, les workflows de type navigateur et les tâches de longue durée. La documentation actuelle de Novita décrit les capacités du bac à sable telles que l’exécution de commandes, les opérations sur les fichiers, les modèles, les instantanés, la pause et la reprise, l’exécution en arrière-plan et la gestion du cycle de vie via SDK/CLI.

Pour le travail des agents de type RL, ces primitives correspondent aux exigences fondamentales de l’environnement :

Exigence de l’agent RL Primitive du bac à sable à rechercher
Démarrer chaque essai à partir d’une référence connue Création de bac à sable basée sur un modèle ou un instantané
Exécuter les actions de l’agent sans accès à l’hôte Exécution de commandes isolée et système de fichiers limité
Ne conserver que les sorties sélectionnées Opérations sur les fichiers et politique d’exportation des artefacts
Prendre en charge les évaluations de longue durée Exécution en arrière-plan, pause/reprise, politique de délai d’expiration
Déboguer les essais échoués ou surprenants Journaux, résultats de commandes, différences de fichiers et artefacts capturés
Séparer l’évaluation de la logique applicative Contrôles du cycle de vie via SDK/CLI autour de chaque exécution

Gardez la frontière produit claire. Novita Agent Sandbox fournit des primitives d’exécution qui peuvent prendre en charge l’infrastructure d’évaluation et d’agents RL, mais les concepteurs définissent toujours la fonction de récompense, le modèle d’environnement, la politique des outils, les règles réseau, le schéma de télémétrie, la gestion des secrets et le workflow d’approbation humaine. Ne traitez aucun fournisseur de bac à sable comme une couche de sécurité complète pour les agents autonomes.

Liste de vérification pour le bac à sable des agents RL

Utilisez cette liste de vérification avant d’exécuter des essais RL répétés ou des lots d’évaluation importants :

Domaine Questions à répondre
Référence De quel modèle, instantané, ensemble de données, jeu de dépendances et version d’évaluateur chaque essai démarre-t-il ?
Réinitialisation Quel état est effacé entre les essais, et quel état est intentionnellement conservé ?
Déterminisme Quelles graines, versions de paquets, paramètres de modèle et fixtures sont fixés ?
Système de fichiers Quels chemins sont en lecture seule, inscriptibles, cachés ou exportés ?
Réseau Le trafic sortant est-il bloqué, autorisé, proxyé, journalisé ou spécifique à la tâche ?
Ressources Quelles sont les limites CPU, mémoire, disque, processus, délai d’expiration et concurrence ?
Outils Quelles commandes, gestionnaires de paquets, navigateurs et API l’agent peut-il invoquer ?
Récompenses Quelles preuves alimentent la récompense, et le score peut-il être expliqué à partir des artefacts capturés ?
Télémétrie Les commandes, les modifications de fichiers, les appels réseau, les sorties et les résultats de l’évaluateur sont-ils journalisés sans stocker de secrets ?
Artefacts Quelles sorties sont copiées, conservées, caviardées ou jetées ?
Révision humaine Quelles actions nécessitent une approbation avant de quitter le bac à sable ou de toucher des systèmes externes ?

Si une ligne n’est pas claire, corrigez-la avant de passer à l’échelle. Une petite ambiguïté devient coûteuse lorsqu’elle est multipliée par des centaines ou des milliers d’essais.

FAQ

Qu’est-ce qu’un bac à sable pour agent RL ?

Un bac à sable pour agent RL est un environnement d’exécution isolé dans lequel un agent peut effectuer des actions, recevoir des retours et se réinitialiser vers un état d’environnement connu entre les essais. Il est utilisé pour rendre les expériences reproductibles, contenir les effets secondaires et capturer des preuves pour la notation et le débogage.

Pourquoi la réinitialisabilité est-elle importante pour les agents d’apprentissage par renforcement ?

La réinitialisabilité empêche les fichiers, processus, caches, sessions de navigateur ou paquets installés d’un essai d’influencer l’essai suivant. Sans une réinitialisation fiable, les changements de récompense peuvent refléter une dérive cachée de l’environnement plutôt qu’un meilleur comportement de l’agent.

Les bacs à sable pour agents RL rendent-ils les agents autonomes sûrs ?

Non. Un bac à sable peut réduire le rayon d’impact de l’exécution et faciliter l’observation des effets secondaires, mais ce n’est pas une garantie de sécurité complète. Les concepteurs ont toujours besoin d’autorisations limitées, d’une politique réseau, d’une gestion des secrets, d’une conception des récompenses, d’une surveillance et d’une révision humaine pour les actions externes sensibles.

Chaque essai RL doit-il démarrer dans un bac à sable frais ?

Pas toujours. Les bacs à sable frais sont les meilleurs pour les évaluations indépendantes. La restauration d’instantanés peut être plus efficace après une configuration coûteuse. Les bacs à sable longue durée peuvent convenir au travail interactif ou de type curriculum, mais l’état persistant doit être explicite et journalisé.

Que doit journaliser un bac à sable pour agent RL ?

Journalisez l’ID de l’essai, la référence du bac à sable, les commandes, les appels d’outils, les codes de sortie, les modifications de fichiers, les destinations réseau, l’utilisation des ressources, les entrées de l’évaluateur, les sorties de récompense et les artefacts approuvés. Évitez de journaliser les secrets bruts, les données clients inutiles ou le contenu complet des fichiers non révisés par défaut.

Articles recommandés