Les agents d'intelligence artificielle autonomes se distinguent par leur aptitude à décomposer des objectifs complexes en sous-tâches et à les exécuter de manière itérative. Toutefois, en conditions réelles, ces systèmes sont particulièrement sujets à la dérive des tâches (task drift) : une dégradation progressive au cours de laquelle l'agent s'écarte de sa mission principale pour s'enliser dans des boucles de planification infinies, le développement de scripts superflus ou l'exploration d'impasses techniques. Dans l'architecture récursive d'AgentGPT (planification, analyse, exécution et création continue de nouvelles tâches à partir des résultats intermédiaires), la dérive n'est pas un dysfonctionnement exceptionnel, mais la conséquence inévitable de prompts imprécis et de paramètres d'exécution non verrouillés.
Pour y remédier, les développeurs et concepteurs de flux opérationnels doivent mettre en œuvre un modèle de contrôle à deux niveaux : des prompts d'objectifs structurés (Structured Goal Prompts) fixant des limites sémantiques strictes et des critères d'achèvement au niveau du prompt, associés à des contraintes d'exécution déterministes (Execution Constraints) au niveau système et runtime (plafond d'itérations, température minimale, sélection du modèle et cloisonnement des outils).
Pourquoi les Agents Dérivent dans AgentGPT : La Mécanique de la Boucle Récursive
AgentGPT repose sur une architecture découplée associant un backend en FastAPI et une interface en Next.js. L'analyse de son cycle d'exécution met en lumière les points de rupture opérationnels :
- Décomposition Initiale (
/start) : Dès que l'utilisateur saisit unGoal, le backend appellestart_goal_prompt, qui utilise la méthode Plan-and-Solve pour générer de 1 à 5 requêtes de recherche ou sous-tâches initiales. - Analyse et Exécution (
/analyzeet/execute) : L'agent évalue la tâche active viaanalyze_task_promptpour sélectionner l'outil requis (recherche web, exécution de code, etc.) et lance le traitement avecexecute_task_prompt. À cette étape, le prompt par défaut d'AgentGPT prescrit : “When confronted with choices, make a decision yourself with reasoning” (Face à des choix, prenez une décision par vous-même avec un raisonnement). En l'absence de garde-fous explicites, le modèle opte fréquemment pour des voies spéculatives ou divergentes. - Création Récursive de Tâches (
/create) : Il s'agit du foyer principal de dérive. À chaque étape franchie, le système transmet l'objectif global{goal}, les tâches restantes{tasks}, la dernière tâche traitée{lastTask}et son résultat{result}àcreate_tasks_prompt, en ordonnant de générer une nouvelle tâche pour rapprocher l'agent du but. - Dérive Contextuelle Markovienne (Markovian Drift) : Dès que
{result}contient un jargon imprévu, un échec d'accès ou un élément anecdotique, le grand modèle de langage (LLM) focalise son attention sur ce résultat immédiat au détriment du{goal}originel. Après 4 à 6 itérations, chaque nouvelle tâche découle exclusivement de l'étape précédente. L'agent consacre alors toute son énergie à déboguer des scripts de scraping ou à chercher des dépendances logicielles. - Absence de Signal d'Arrêt Déterministe : Bien que le prompt indique de ne rien renvoyer s'il ne reste aucune tâche, les modèles autorégressifs tendent naturellement à poursuivre la génération de contenu. Faute d'une définition claire de l'état final (Definition of Done), le système engendre des tâches jusqu'à atteindre la limite maximale de boucles autorisée.
1. Conception de Prompts d'Objectifs Structurés
L'interface utilisateur d'AgentGPT ne proposant qu'un unique champ de saisie (Goal), le concepteur doit intégrer l'ensemble des règles de cadrage directement dans ce prompt. Un objectif vague tel que "Étudie les prix de la concurrence et génère un rapport de marché" entraîne immanquablement une dérive rapide.
Un prompt robuste et résistant à la dérive doit appliquer un cadre normé en 5 composants :
[RÔLE ET PERSONA / ROLE]
Agis en tant qu'analyste d'intelligence économique spécialisé dans la synthèse factuelle et déterministe.
[OBJECTIF FONDAMENTAL / OBJECTIVE]
Extraire avec exactitude les grilles tarifaires publiques, les seuils minimaux de licences et les règles de remises pour grands comptes de Product A, Product B et Product C.
[PÉRIMÈTRE ET ANTI-OBJECTIFS / SCOPE & ANTI-GOALS]
- DANS LE PÉRIMÈTRE (IN-SCOPE) : Tableaux de prix affichés sur les sites officiels, fonctionnalités associées, périodicités mensuelles/annuelles.
- HORS PÉRIMÈTRE (OUT-OF-SCOPE / STRICTEMENT INTERDIT) :
* Ne crée AUCUNE tâche visant à programmer des scripts de web scraping, des API ou des outils Python.
* N'effectue AUCUNE recherche sur l'historique des fondateurs, les levées de fonds ou les articles de blog.
* N'analyse AUCUN produit en dehors de Product A, B et C.
* Si un site web est inaccessible, consigne "Tarif non disponible" et passe immédiatement au produit suivant, sans diagnostic réseau.
[INSTRUCTIONS SÉQUENTIELLES LINÉAIRES / PHASED EXECUTION]
Exécute la mission strictement en trois phases linéaires consécutives :
- Phase 1 : Collecter et enregistrer les tarifs officiels de Product A.
- Phase 2 : Collecter et enregistrer les tarifs officiels de Product B et C.
- Phase 3 : Synthétiser l'ensemble des données dans la matrice comparative finale.
La création de tâches exploratoires en dehors de ces trois phases est formellement proscrite.
[CRITÈRE D'ACHÈVEMENT / DEFINITION OF DONE]
L'objectif est considéré comme pleinement atteint dès que le tableau comparatif des trois solutions est renseigné. Une fois le document Markdown final produit, ne génère AUCUNE tâche supplémentaire et termine immédiatement l'exécution en renvoyant une chaîne vide.
[FORMAT DU LIVRABLE / DELIVERABLE FORMAT]
Présente les données sous la forme d'un tableau Markdown comprenant les colonnes : [Produit | Niveau d'offre | Prix Mensuel | Prix Annuel Équivalent | Restrictions Majeures], suivi d'une synthèse managériale de 150 mots au maximum.
Mécanismes Clés de Rédaction contre la Dérive
- Énonciation d'Anti-Objectifs (Anti-Goals) : Prescrire ce que l'agent ne doit pas faire s'avère nettement plus restrictif que de lister uniquement ses obligations. Interdire le codage et les digressions techniques préserve l'agent de boucles d'erreurs logicielles.
- Verrouillage Linéaire : Contraindre l'exécution à une progression par étapes linéaires empêche la dispersion en arbres de sous-tâches arborescents.
- Critère d'Arrêt Formel : Assujettir la fin de mission à un livrable tangible (le tableau complété) neutralise la propension de
create_tasks_promptà proposer sans cesse des démarches annexes.
2. Configuration des Contraintes d'Exécution Déterministes
Les prompts constituent des contraintes souples (soft constraints) ; sur des contextes longs, les modèles probabilistes finissent par diluer les consignes. Il est donc indispensable d'y adjoindre des contraintes dures (hard constraints) au sein de la configuration d'AgentGPT.
1. Plafonnement des Boucles (max_loops)
Dans le fichier de configuration .env.example d'AgentGPT, la valeur par défaut est fixée à NEXT_PUBLIC_MAX_LOOPS="100". Donner une marge de 100 itérations à un agent autonome ouvre la porte à des dépenses excessives de tokens et amplifie la dérive.
- Recommandation en Production : Brider le nombre de boucles entre 4 et 8 itérations dans les paramètres avancés ou dans la charge utile de l'API.
- Une tâche bien ciblée doit converger en 5 à 7 étapes. Si 8 boucles ne suffisent pas, la portée du travail est excessive et impose une segmentation en plusieurs agents spécialisés.
2. Réduction Drastique de la Température (Temperature)
AgentGPT permet de régler la température du modèle dans ses options avancées dès lors qu'une clé d'API personnelle est fournie.
- Valeur Standard : Généralement comprise entre 0.7 et 0.9 pour favoriser la créativité textuelle.
- Recommandation en Production : Fixer la température entre 0.0 et 0.2.
- Une température proche de zéro restreint la variance stochastique, contraignant le modèle à respecter rigoureusement les anti-objectifs et le format de restitution exigé.
3. Sélection du Modèle de Fond
AgentGPT supporte différents modèles de langage (par exemple GPT-3.5 versus GPT-4) :
- Famille GPT-3.5 : Vulnérable à l'amnésie des consignes négatives après 2 ou 3 cycles, se laissant facilement distraire par des termes isolés au sein de
{result}. - Famille GPT-4 : Dispose d'une excellente rétention des contraintes négatives sur des chaînes récursives et s'arrête de manière fiable lorsque la condition d'achèvement est satisfaite.
4. Cloisonnement des Outils et Permissions
Dans l'architecture d'AgentGPT, les outils externes sont instanciés dans reworkd_platform/web/api/agent/tools/tools.py (Search, Code, SID, etc.).
- Fournir un outil de code à un agent de recherche conduit fréquemment ce dernier, lors d'un échec de parsing web, à concevoir son propre script et à s'épuiser dans la résolution d'erreurs d'environnement.
- Désactiver les outils superflus ou restreindre le tableau
tool_namesdans les appels d'API garantit que le champ d'action de l'agent reste strictement circonscrit à la recherche et à l'analyse textuelle.
3. Architecture Opérationnelle : Des Agents Monolithiques aux Chaînes de Micro-Agents
Confier la réalisation d'un processus métier de bout en bout à une session unique d'AgentGPT est la cause structurelle majeure de dérive. À mesure que le contexte se charge d'extraits de pages et de réponses partielles, l'impact de l'objectif initial s'estompe.
Les concepteurs doivent privilégier des chaînes de micro-agents (Micro-Agent Pipelines) :
[Besoin Métier Initial]
│
▼
┌──────────────────────────────────────────────┐
│ Agent 1 : Collecte Brute (Outil Recherche) │
│ - Contraintes : Max 4 boucles, Temp. 0.1 │
│ - Mission : Extraire les tarifs bruts A, B, C │
└──────────────────────────────────────────────┘
│ Données Markdown brutes
▼
┌──────────────────────────────────────────────┐
│ Agent 2 : Normalisation (Aucun outil tiers) │
│ - Contraintes : Max 2 boucles, Texte seul │
│ - Mission : Filtrer le bruit et créer un JSON│
└──────────────────────────────────────────────┘
│ Données structurées JSON
▼
┌──────────────────────────────────────────────┐
│ Agent 3 : Rédaction Exécutive │
│ - Contraintes : Exécution unique (/summarize)│
│ - Mission : Générer la matrice et le résumé │
└──────────────────────────────────────────────┘
En spécialisant chaque unité opérationnelle et en limitant son espace d'action, on élimine tout risque d'égarement thématique.
4. Renforcement au Niveau du Code Source (Auto-Hébergement)
Pour les équipes hébergeant AgentGPT en interne via Docker, des barrières infranchissables peuvent être intégrées directement au niveau du backend dans platform/reworkd_platform/web/api/agent/ :
- Durcissement de
create_tasks_prompt(prompts.py) : Intégrer des conditions de terminaison explicites au modèle système :create_tasks_prompt = PromptTemplate( template="""You are an AI task creation agent. Objective: `{goal}`. Incomplete tasks: `{tasks}`. Last task: `{lastTask}`. Result: `{result}`. Strict Rules: 1. If the deliverable described in `{goal}` is already obtained, return NOTHING. 2. Do NOT create tasks involving new software tools, scripting, or off-topic domains. 3. Every new task must have a direct causal link to the completion of `{goal}`. If satisfied, respond with an empty string.""", input_variables=["goal", "language", "tasks", "lastTask", "result"], ) - Filtrage Sémantique au Niveau de l'API (
views.py) : Dans la route/create, calculer la similarité cosinus vectorielle entre la nouvelle tâche générée et le{goal}principal. Si le score est inférieur à un seuil prédéterminé (par exemple 0.65), la tâche est immédiatement rejetée, neutralisant la dérive à la frontière même de l'API.
Matrice de Contrôle et Bonnes Pratiques
| Niveau de Contrôle | Facteur Déclenchant de Dérive | Bonne Pratique Recommandée |
|---|---|---|
| Prompt d'Objectif | Directives imprécises et pollution par le contexte | Appliquer le cadre en 5 points : rôle, but, anti-objectifs, phases, fin. |
| Plafond de Boucles | Absence de borne entraînant des cycles infinis | Restreindre max_loops entre 4 et 8 itérations au lieu des 100 par défaut. |
| Température | Variabilité forte favorisant des sous-tâches imprévues | Régler entre 0.0 et 0.2 pour obtenir des réponses strictement prévisibles. |
| Modèle Sous-Jacent | Oubli des contraintes au fil des itérations | Choisir des modèles éprouvés comme GPT-4 à haute fidélité d'instruction. |
| Gestion des Outils | Utilisation hors propos d'outils techniques | Désactiver les modules de code lors des opérations documentaires. |
| Architecture | Saturation du contexte dans une session unique | Scinder en pipelines de micro-agents séquentiels et indépendants. |
En formalisant les objectifs comme des contrats d'exécution stricts et en verrouillant les paramètres d'environnement, les concepteurs transforment AgentGPT en une solution déterministe, stable et intégrable en production industrielle.