La grosse nouvelle de la fin mars dans le monde du développement d’agent IA vient de Google avec les releases de la version 2.0 Alpha d’ADK Python et la 1.0 des versions java et Go !
✨ ADK
Agent Development Kit est un framework créé par Google permettant de facilement créer et déployer des agents IA. L’interface fournie permet de les débugger et de suivre l’orchestration des applications multi agents.
ADK a été conçu au départ pour les applications Python, c’est pour cela que la version 2.0 est uniquement présente pour ce langage.
👉 https://adk.dev/
🙌 Les apports de la v2
La version 2.0 arrive pour le moment en mode “Alpha”, il est donc (fortement) recommandé de ne pas utiliser cette version en production. Cette version est compatible avec les agents créés avec ADK 1.0 mais attention, il est impératif de ne pas partager les stockages entre vos projets ADK 1.0 et 2.0.
Cette release apporte 3 principales fonctionnalités :
- les Graph-based workflows
- la coordination de sous agents
- les workflow dynamiques
Les Graph-based workflows permettent de chainer des actions ou requêtes Le root_agent est un agent qui exécute le workflow qui est défini par un nom, et un tableau de noeuds avec la possibilité de diriger des traitement en fonction d’un résultat précédent.
Cela permet par exemple de chaîner un ensemble de traitements ou bien de définir un ensemble d’actions exécutées en parallèle. Et quand je dis traitement, ce sont des appels à des LLM ou bien du code.
Image provenant de https://adk.dev/workflows/
La seconde nouveauté intervient au niveau des agents et de leur mode d'interaction. Des sous-agents peuvent désormais être créés et orchestrés par un agent “coordinateur”. Ces sous agents disposent de trois modes de fonctionnement :
- Chat, le comportement actuel où le retour est fait à l’agent parent de manière manuelle
- Task, permet une interaction avec l’utilisateur pour avoir des compléments d’informations
- Simple échange (Single turn), l’agent travaille et renvoie son résultat. Peut-être exécuté en parallèle.
Les workflow dynamiques d’ADK sont la dernière nouveauté de cette release et permettent de s’affranchir de la structure rigide du graph-based vu précédemment. Avec l’annotation @node **ou le wrapper **FunctionNode, les workflow dynamiques permettent de supporter les exécutions parallèles, les boucles itératives et les compléments d’information de la part des utilisateurs (Human-in-the-loop) à l’aide de lignes de code.
👉 https://adk.dev/2.0/
🎉 Versions 1.0 des SDK Java et Go
Dans le même temps que la nouvelle version majeure d’ADK Python, les SDK Java et Go voient arriver leur première version majeure, le signe d’une maturité et stabilité validée.
La version 1.0 du SDK Go inclut l’arrivée native d’OpenTelemetry via le TraceProvider. De plus, un nouveau système de plugin va permettre d’inclure des fonctionnalités transverses (logs, sécurité, etc.). Un plugin intéressant, “Retry and Reflect”, permet d’intercepter les erreurs et de les renvoyer au modèle pour les corriger et les prendre en compte.
Cette version supporte aussi la définition d’agent directement via des fichiers YAML. \
👉 https://developers.googleblog.com/adk-go-10-arrives/
Du côté de Java, les releases 1.0 et 1.1 créées quelques jours plus tard incluent l’arrivée de nouveaux outils comme :
-
GoogleMapsToolpour récupérer des informations sur Google Maps. -
UrlContextToolpour de récupérer les urls fournies. Cela vous permet par exemple de faire un résumé d’une page web. -
ContainerCodeExecutoretVertexAiCodeExecutorpour exécuter du code locallement dans des containeurs Docker ou sur Vertex AI. -
ComputerUseToolpour piloter un navigateur web.
App est la nouvelle classe de plus haut niveau pour créer une application agentique. Elle va pouvoir recevoir une liste de plugins qui sont appliqués à tous les sous-agents. Pratique pour harmoniser les logs par exemple avec LoggingPlugin ou bien donner des instructions globales à l’application avec le plugin GlobalInstructionPlugin.
Une stratégie de compression est également applicable sur la classe App et réduit notamment la taille de votre contexte et donc la taille de vos tokens.
L’outil ToolConfirmation permet de mettre en pause le traitement le temps d’avoir un complément d’information pour l’utilisateur·trice.
De nouveaux services permettent de sauvegarder le cycle de vie d’une conversation, en fonction de votre besoin, vos données en mémoire, dans VertexAI ou bien dans une collection Firestore (avec InMemorySessionService, VertexAiSessionService et FirestoreSessionService).
Pour conserver vos informations Ă travers plusieurs sessions, cela peut se faire localement ou bien dans Firestore (avec InMemoryMemoryService et FirestoreMemoryService).
🚀 Démo
Je me suis prêté l’exercice de migrer ce projet me servant de démo avec les nouvelles fonctionnalités :
public static final App APP = App.builder()
.name("trip-planner-app")
.rootAgent(ROOT_AGENT)
.plugins(
new LoggingPlugin(),
new GlobalInstructionPlugin(
"Please add related emojis to your responses to make them more engaging."))
.eventsCompactionConfig(EventsCompactionConfig.builder()
.compactionInterval(10)
.overlapSize(2)
.build())
.build();
Conclusion
L'effet "Wow 🤩, une version majeure arrive" est bien là , et je me rends compte que les évolutions apportées sont importantes et vont permettre d'accroître les possibilités de nos agents.
J’avais mis à jour quelques uns de mes projets utilisant la version d'ADK 1.1 sans avoir d'impact dans le code. En lisant les release notes, il y a bien des ajustements à faire dans la conception des agents pour notamment se poser des questions sur la gestion de la mémoire, la compression des informations et l’utilisation des plugins amène un gros plus pour optimiser les traitements et le code.
A suivre 🚀

Top comments (0)