Séparer la logique de l’inférence améliore l’évolutivité des agents d’IA en dissociant les flux de travail principaux des stratégies d’exécution.
La transition des prototypes d’IA générative aux agents de production introduit un obstacle d’ingénierie spécifique : la fiabilité. Les LLM sont stochastiques par nature. Une invite qui fonctionne une fois peut échouer à la deuxième tentative. Pour atténuer ce problème, les équipes de développement enveloppent souvent la logique métier de base dans des boucles, des tentatives et des chemins de branchement complexes de gestion des erreurs.
Cette approche crée un problème de maintenance. Le code définissant ce qu’un agent doit faire se mélange inextricablement avec le code définissant comment gérer l’imprévisibilité du modèle. Un nouveau cadre proposé par des chercheurs d’Asari AI, du MIT CSAIL et de Caltech suggère qu’une norme architecturale différente est nécessaire pour faire évoluer les flux de travail agents dans l’entreprise.
La recherche introduit un modèle de programmation appelé Probabilistic Angelic Nondeterminism (PAN) et une implémentation Python nommée ENCOMPASS. Cette méthode permet aux développeurs d’écrire le « chemin heureux » du flux de travail d’un agent tout en reléguant les stratégies de temps d’inférence (par exemple, recherche de faisceau ou retour en arrière) dans un moteur d’exécution distinct. Cette séparation des préoccupations offre une voie potentielle pour réduire la dette technique tout en améliorant les performances des tâches automatisées.
Le problème de l’intrication dans la conception des agents
Les approches actuelles de la programmation d’agents associent souvent deux aspects distincts de la conception. Le premier est la logique de base du flux de travail, ou la séquence d’étapes requises pour accomplir une tâche métier. La seconde est la stratégie de temps d’inférence, qui dicte la manière dont le système gère l’incertitude, comme la génération de plusieurs brouillons ou la vérification des résultats par rapport à une rubrique.
Lorsque ceux-ci sont combinés, la base de code résultante devient fragile. La mise en œuvre d’une stratégie telle que l’échantillonnage « meilleur de N » nécessite d’envelopper l’intégralité de la fonction d’agent dans une boucle. Le passage à une stratégie plus complexe, telle que la recherche ou le raffinement arborescent, nécessite généralement une réécriture structurelle complète du code de l’agent.
Les chercheurs affirment que cet enchevêtrement limite l’expérimentation. Si une équipe de développement souhaite passer d’un simple échantillonnage à une stratégie de recherche de faisceaux pour améliorer la précision, elle doit souvent repenser le flux de contrôle de l’application. Ce coût élevé de l’expérimentation signifie que les équipes se contentent souvent de stratégies de fiabilité sous-optimales pour éviter les frais généraux d’ingénierie.
Découplage de la logique de la recherche pour améliorer l’évolutivité des agents IA
Le framework ENCOMPASS résout ce problème en permettant aux programmeurs de marquer les « emplacements de non-fiabilité » dans leur code à l’aide d’une primitive appelée point de branchement().
Ces marqueurs indiquent où un appel LLM se produit et où l’exécution peut diverger. Le développeur écrit le code comme si l’opération allait réussir. Au moment de l’exécution, le framework interprète ces points de branchement pour construire un arbre de recherche des chemins d’exécution possibles.
Cette architecture permet ce que les auteurs appellent des agents « programme en contrôle ». Contrairement aux systèmes « LLM-in-control », dans lesquels le modèle décide de l’ensemble de la séquence d’opérations, les agents de programme-in-control opèrent dans le cadre d’un flux de travail défini par le code. Le LLM est invoqué uniquement pour effectuer des sous-tâches spécifiques. Cette structure est généralement préférée dans les environnements d’entreprise en raison de sa prévisibilité et de son auditabilité supérieures à celles des agents entièrement autonomes.
En traitant les stratégies d’inférence comme une recherche sur des chemins d’exécution, le cadre permet aux développeurs d’appliquer différents algorithmes, tels que la recherche en profondeur, la recherche par faisceau ou la recherche arborescente de Monte Carlo, sans altérer la logique métier sous-jacente.
Impact sur la migration héritée et la traduction du code
L’utilité de cette approche est évidente dans les flux de travail complexes tels que la migration de code existant. Les chercheurs ont appliqué le framework à un agent de traduction Java vers Python. Le flux de travail impliquait la traduction d’un référentiel fichier par fichier, la génération d’entrées et la validation de la sortie via l’exécution.
Dans une implémentation Python standard, l’ajout d’une logique de recherche à ce flux de travail nécessitait de définir une machine à états. Ce processus obscurcissait la logique métier et rendait le code difficile à lire ou à pelucher. La mise en œuvre de la recherche par faisceau a obligé le programmeur à diviser le flux de travail en étapes individuelles et à gérer explicitement l’état à travers un dictionnaire de variables.
En utilisant le cadre proposé pour améliorer l’évolutivité des agents d’IA, l’équipe a mis en œuvre les mêmes stratégies de recherche en insérant point de branchement() déclarations avant les appels LLM. La logique de base est restée linéaire et lisible. L’étude a révélé que l’application de la recherche de faisceaux au niveau du fichier et de la méthode donnait de meilleurs résultats que les stratégies d’échantillonnage plus simples.
Les données indiquent que la séparation de ces préoccupations permet d’obtenir de meilleures lois de mise à l’échelle. Les performances se sont améliorées linéairement avec le logarithme du coût d’inférence. La stratégie la plus efficace trouvée – la recherche de faisceaux à granularité fine – était également celle qui aurait été la plus complexe à mettre en œuvre avec les méthodes de codage traditionnelles.
Rentabilité et évolutivité des performances
Le contrôle du coût de l’inférence est une préoccupation majeure des responsables des données qui gèrent le P&L des projets d’IA. La recherche démontre que des algorithmes de recherche sophistiqués peuvent produire de meilleurs résultats à moindre coût par rapport à la simple augmentation du nombre de boucles de rétroaction.
Dans une étude de cas impliquant le modèle d’agent « Réflexion » (dans lequel un LLM critique ses propres résultats), les chercheurs ont comparé l’augmentation du nombre de boucles de raffinement à l’utilisation d’un algorithme de recherche du meilleur premier. L’approche basée sur la recherche a atteint des performances comparables à la méthode de raffinement standard, mais à un coût par tâche réduit.
Ce résultat suggère que le choix de la stratégie d’inférence est un facteur d’optimisation des coûts. En externalisant cette stratégie, les équipes peuvent régler l’équilibre entre le budget de calcul et la précision requise sans réécrire l’application. Un outil interne à faibles enjeux peut utiliser une stratégie de recherche bon marché et gourmande, tandis qu’une application destinée aux clients pourrait utiliser une recherche plus coûteuse et exhaustive, le tout fonctionnant sur la même base de code.
L’adoption de cette architecture nécessite un changement dans la façon dont les équipes de développement perçoivent la construction des agents. Le framework est conçu pour fonctionner en conjonction avec les bibliothèques existantes telles que LangChain, plutôt que de les remplacer. Il se situe à une couche différente de la pile, gérant le flux de contrôle plutôt que les interfaces d’ingénierie ou d’outils rapides.
Cependant, cette approche n’est pas sans défis techniques. Le framework réduit le code requis pour implémenter la recherche, mais il n’automatise pas la conception de l’agent lui-même. Les ingénieurs doivent toujours identifier les emplacements corrects pour les points de branchement et définir des mesures de réussite vérifiables.
L’efficacité de toute fonctionnalité de recherche repose sur la capacité du système à tracer un chemin spécifique. Dans l’exemple de traduction de code, le système pourrait exécuter des tests unitaires pour vérifier l’exactitude. Dans des domaines plus subjectifs, comme la synthèse ou la génération créative, définir une fonction de notation fiable reste un goulot d’étranglement.
De plus, le modèle repose sur la capacité de copier l’état du programme aux points de branchement. Bien que le framework gère la portée des variables et la gestion de la mémoire, les développeurs doivent s’assurer que les effets secondaires externes, tels que les écritures de base de données ou les appels d’API, sont gérés correctement pour éviter les actions en double pendant le processus de recherche.
Implications pour l’évolutivité des agents IA
Le changement représenté par PAN et ENCOMPASS s’aligne sur les principes plus larges de modularité du génie logiciel. À mesure que les flux de travail agents deviennent essentiels aux opérations, leur maintenance nécessitera la même rigueur que celle appliquée aux logiciels traditionnels.
Le codage en dur de la logique probabiliste dans les applications métiers crée une dette technique. Cela rend les systèmes difficiles à tester, à auditer et à mettre à niveau. Le découplage de la stratégie d’inférence de la logique du flux de travail permet une optimisation indépendante des deux.
Cette séparation facilite également une meilleure gouvernance. Si une stratégie de recherche spécifique génère des hallucinations ou des erreurs, elle peut être ajustée globalement sans évaluer la base de code de chaque agent individuel. Il simplifie la gestion des versions des comportements de l’IA, une exigence pour les secteurs réglementés où le « comment » d’une décision est aussi important que le résultat.
La recherche indique qu’à mesure que le calcul du temps d’inférence évolue, la complexité de la gestion des chemins d’exécution va augmenter. Les architectures d’entreprise qui isolent cette complexité s’avéreront probablement plus durables que celles qui lui permettent de pénétrer la couche applicative.