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 :
-
GoogleMapsTool pour récupérer des informations sur Google Maps.
-
UrlContextTool pour de rĂ©cupĂ©rer les urls fournies. Cela vous permet par exemple de faire un rĂ©sumĂ© dâune page web.
-
ContainerCodeExecutor et VertexAiCodeExecutor pour exécuter du code locallement dans des containeurs Docker ou sur Vertex AI.
-
ComputerUseTool pour 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).
đ https://developers.googleblog.com/announcing-adk-for-java-100-building-the-future-of-ai-agents-in-java/
đ 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 đ