Une nouvelle technique pour planifier et faire exécuter des actions par un Agent en utilisant uniquement du code Python.
Plutôt que de fournir des outils virtuels que l'Agent peut utiliser en répondant un certain format JSON par exemple, CodeAct propose plutôt de permettre à l'Agent d'utiliser directement ces actions dans du code sous la forme de fonctions.
Déjà c'est assez malin car le code est beaucoup plus facile à générer pour un LLM qu'un DSL custom représentant des fonctions.
Aussi, le LLM peut maintenant utiliser directement les primitives de programmation comme les boucles ou les conditions pour arriver à ses fins plus rapidement.
Par contre, il y a du gros travail sur la génération de code pour éviter de faire n'importe quoi (malicious inputs) ou des choses imprévues comme utiliser des paquets externes non disponibles.
Ce benchmark est constitué de questions avec des descriptions de fonctions à utiliser récupérer des informations extérieures comme la météo par exemple.
Plusieurs capacités sont évaluées:
- appels de fonctions Python, Java et Javascript pour résoudre des problèmes
- utilisation d'API REST depuis une documentation
- création de requêtes SQL
- capacité à répondre "je ne sais pas" si aucune des fonctions ne convient
GPT-4 Turbo et Claude 3 sont au coude à coude dans le benchmark mais GPT-4 est 2x moins cher
Claude 3 Haiku est meilleur que GPT-4 Turbo sur certains benchmark (BFCL) sur le cas d'usage d'appel de fonctions.
Pour comparer les résultats, ils comparent les AST (Abtract Syntax Tree) avec celui du résultat attendu.
Une solution clé en main complète autour des LLMs:
- Assistant IA en NoCode
- Génération de documents
- Traduction
- Ingestion de sources externes (fichier, web, Notion)
- RAG intégré
Il y a aussi une version Open Source.
Ça fait un peu usine à gaz mais ça à le mérite d'être complet et rapide à mettre en place.
OpenAI a sorti une mise à jour de son API pour créer des Assistants.
On peut notamment utiliser jusqu'à 10000 fichiers dans leur RAG intégré et streamer les réponses.
Les Assistants permettent de développer très rapidement des POC d'Agents spécialisés en entreprise mais le côté boîte noir finit par se payer comme pour tout produit complètement fermé.
Un Agent semi autonome capable de réaliser des tâches sur des codebases complexes.
Ses capacités d'adaptation à de nouvelles technologies semblent impressionnante, à voir si ça se confirme autrement que dans des vidéos.
Il obtient plus de 13% sur le SWE benchmark qui évalue les Agents sur des tâches de programmation. C'est moi devant le Claude 2 qui était devant jusqu'ici avec 4%
Un projet d'assistant IA capable de réaliser des tâches en manipulant les interfaces des sites web.
Une awesome liste autour des Agents LLM
Un framework un Python qui permet de définir plusieurs Agents puis de leur demander de se coordonner pour résoudre une tâche.
Ils ont notamment une démo assez avancée de génération de landing page avec GPT4 https://github.com/joaomdmoura/crewAI-examples/tree/main/landing_page_generator
Un Agent capable de manipuler les interfaces graphiques d'un smartphone Android.
Ils utilisent GPT4 pour la réflexion et GPT4V pour la reconnaissance d'image. En connectant l'Agent à un smartphone avec ADB, ils sont capable d'exécuter des actions de clique ou de swipe.
L'Agent inclue un mode "exploration" ou il va interagir en autonomie avec l'application afin de découvrir les fonctionnalités.
Cela ouvre beaucoup de nouvelles possibilités, notamment autour du testing des applications Android.
Une technique pour l'orchestration d'Agent qui obtient de bien meilleurs résultats de ReAct. (0.97 vs 0.76 sur HotPotQA)
Leur technique se base sur la réflexion autour du résultat obtenu par un premier LLM. Cette réflexion permet d'itérer sur la tâche à réaliser en corrigeant les erreurs.
L'étape de réflexion prend en compte la génération et un feedback sur cette génération. Le feedback dépend du type de problème:
- question/réponse: évaluation par un LLM
- génération de code: exécution du code et message d'erreur
- prise de décision: vérification avec l'arbre des "bonnes" décisions
Une mémoire est également analysée pendant la phase de réflexion afin d'éviter le bouclage sur des solutions déjà essayées.
Cela me fait beaucoup pensé à cet article sur les Agent autonomes dans un jeu vidéo https://links.aschen.tech/shaare/a0Krew
Un article sur un modèle d'agent capable de se fine-tuner à l'aide de ses propres itérations sur les tâches à résoudre.
C'est potentiellement intéressant pour générer des dataset d'entrainement sur des tâches à plusieurs étapes.
Ce papier propose un framework à base d'agents pour générer des requêtes SQL à partir d'une simple demande. La question de l'utilisateur est envoyée a un agent qui sélectionne les tables et leur schéma associés pour les transmettre à un agent chargé de décomposer la demande utilisateur. Ce deuxième agent la découpe en requêtes, puis propose une requête finale. Enfin, un agent permet de rafiner la requête en l'éxécutant dans une base SQLite et en corrigeant d'éventuelles erreurs.
LLMCompiler est une alternative à la méthode ReAct pour la planification et l'exécution de tâches.
2 composants:
- LLM Planer: découpe les tâches dans un Directed Acyclic Graph (DAG) pour une exécution en parallèle et un respect des dépendances
- Executor: un Agent qui exécute les différentes tâches avec les outils à sa disposition
Le LLM Planer est capable de recréer le DAG avec le résultat de chaque tâche pour une planification dynamique (e.g. embranchement if/else)
Concrètement ils ont mesuré des améliorations dans le processus de raisonnement sur certains benchmark comme HotspotQA mais c'est surtout la latence qui est réduite grâce à la parallélisation des tâches
Une méthode pour évaluer les performances des Agents LLM.
Pour chaque tâche, l'Agent doit utiliser un ou plusieurs outils comme un navigateur web, de l'exécution de code, une API custom, etc.
Les tâches sont réparties en 3 niveaux:
- Niveau 1: entre 0 et 1 outil nécessaire, maximum 5 étapes
- Niveau 2: entre 5 et 10 outils, plus de 5 étapes
- Niveau 3: grand nombre d'outils et beaucoup d'étapes
Ils ont évalué GPT-4, AutoGPT et GPT-4 avec plugins et aucun n'arrive à réaliser des tâches de niveau 3
Zappier propose quasiment toutes ses intégrations sous la forme d'outils LLM en langage naturel.
Ça permet à un Agent d'interagir avec des milliers de services directement via Zappier.
Les Agents qui jouent à Minecraft sont parmi les projets les plus avancés en terme de LLMs.
Typiquement ici l'Agent est capable d'écrire du code pour réaliser différentes actions mais aussi de faire évoluer le code écrit en fonction du feedback du monde ("il manque 2 bois pour faire une hache") ou des erreurs de programmation.
Un outil d'observabilité et de debug pour les applications à base de LLMs.
Outre les coûts et les prompts, ça permet de débuguer des chaines complexes qui inclues des conversations, du RAG, etc
Un modèle entrainé depuis LlaMa 2 qui est spécialisé dans l'utilisation d'outils, notamment d'API tierces.
C'est une alternative Open Source à OpenAI et ses assistants
Microsoft lance aussi son service de création d'assistant à la "GPT" avec une intégration avec tous les outils Office 365.