Ceci est une soumission pour le Google AI Agents Writing Challenge : Learning Reflections.
L'écart entre un agent « Hello World » exécuté dans un ordinateur portable Jupyter et un système fiable de niveau production n'est pas une étape : c'est un gouffre (et ce n'est pas facile à franchir).
J'ai récemment eu le privilège de participer au cours intensif de 5 jours sur les agents IA avec Google et Kaggle. Après avoir terminé les cours et finalisé le projet de synthèse, j'ai réalisé qu'au-delà des nombreuses choses précieuses que nous avons appréciées dans ce cours (livres blancs très précieux, cahiers soigneusement conçus et panels d'experts exceptionnels lors des sessions en direct), le véritable trésor n'était pas seulement l'apprentissage de la syntaxe ADK : il s'agissait des modèles architecturaux subtilement intégrés dans les leçons.
En tant qu'architecte de systèmes de production depuis plus de 20 ans, y compris des flux de travail multi-agents et des intégrations d'entreprise, j'ai pu constater par moi-même où les agents théoriques s'effondrent sous les contraintes du monde réel.
Nous passons d’une ère de « l’ingénierie rapide » à une « architecture d’agents » où « l’ingénierie contextuelle » est la clé. Comme pour tout autre paradigme architectural émergent, ce changement exige des plans garantissant la fiabilité, l’efficacité et la sécurité éthique. Sans eux, nous risquons d’avoir des agents qui se dégradent silencieusement, violent la vie privée des utilisateurs ou exécutent des actions irréversibles sans surveillance.
S'appuyant sur le cours et sur ma propre expérience en tant qu'architecte IA, j'ai distillé le programme en quatre modèles essentiels qui transforment des prototypes fragiles en systèmes de production robustes :
Tout au long de cette analyse, j'appliquerai un cadre en 6 points fondé sur les principes des Principia Agentica, garantissant que ces modèles respectent la souveraineté humaine, la responsabilité fiduciaire et un contrôle humain significatif.
Faisons ça !
Dans les logiciels traditionnels, si le résultat est correct, le test réussit. Dans l’IA agentique, une réponse correcte dérivée d’une hallucination ou d’un chemin logique dangereux est une bombe à retardement.
Les stratégies d'évaluation naïves échouent souvent en production en raison de la nature non déterministe des LLM. Nous sommes confrontés à deux pièges spécifiques :
affirmer le résultat == attendules tests réussissent. Cela cache un échec critique de la logique qui se brisera dès que le temps changera.Le quatrième jour du cours a introduit le concept d'évaluation en boîte de verre. Nous passons d’une simple vérification des résultats à une approche hiérarchique :
Ce déplacement traite la trajectoire (Pensée → Action → Observation) comme l'unité de vérité. En évaluant la trajectoire, nous nous assurons que l'agent n'a pas seulement de la chance, mais qu'il raisonne correctement.
L'ADK fournit des primitives spécifiques pour capturer et évaluer ces trajectoires sans écrire d'analyseurs personnalisés pour chaque test.
Depuisadk webàevalset.jsonAu lieu d'écrire manuellement des cas de test, l'ADK encourage un flux de travail « Capturer et rejouer ». Pendant le développement (en utilisantadk web), lorsque vous repérez une interaction réussie, vous pouvez conserver cet état de session. Cela génère unevalset.jsonqui capture non seulement les entrées/sorties, mais aussi les appels d'outils attendus.
// Structure conceptuelle d'une entrée d'un ensemble d'évaluation ADK // Test traditionnel : juste entrée/sortie // L'ensemble d'évaluation ADK contient des cas d'évaluation avec des invocations : entrée (requêtes) + Expected_tool_use + référence (sortie) { "name": "ask_GOOGLE_price", // un nom donné de l'ensemble d'évaluation "data": [ // les cas d'évaluation sont inclus ici "query": "Quel est le cours de l'action GOOG?", // saisie utilisateur "reference": "Le prix est $175...", // sortie sémantique attendue "expected_tool_use": [ // trajectoire attendue { "tool_name": "get_stock_price", "tool_input": { // arguments passés à l'outil "symbol": "GOOG" } } ], // autres cas d'évaluation ... ], "initial_session": { "state": {}, "app_name": "hello_world", "user_id": "user_..." // l'identifiant spécifique de l'utilisateur } }Ce JSON représente unEnsemble d'évaluationcontenant unEvalCase. ChaqueEvalCasea unnom,données(qui est une liste d'invocations) et un facultatifsession_initiale. Chaque invocation dans ledonnéesla liste comprend unrequête,attendu_tool_use,attendu_intermediate_agent_responses, et unréférenceréponse.
LeEnsemble d'évaluationl'objet lui-même comprend égalementeval_set_id,nom,description,eval_cases, etcréation_timestampchamps.
Configuration du juge
Dans letest_config.json, nous pouvons aller au-delà de la simple correspondance de chaînes. Le cours a démontré la configuration des évaluateurs LLM-as-a-Judge.
Évaluation de la trajectoireaux côtésSimilitude sémantique. L'ADK nous permet de définir des « Golden Sets » où le chemin de raisonnement est la norme, permettant au juge LLM de pénaliser les agents qui sautent des étapes ou hallucinent des données, même si le texte final semble plausible.Composants de configuration de base
Pour configurer efficacement un LLM-as-a-Judge, vous devez construire une charge utile d'entrée spécifique avec quatre composants :
Évaluateurs par défaut ADK
Le cadre d'évaluation ADK comprend plusieurs évaluateurs par défaut, accessibles via leMetricEvaluatorRegistre:
RougeÉvaluateur: utilise la métrique ROUGE-1 pour évaluer la similarité entre la réponse finale d'un agent et une réponse idéale.FinalResponseMatchV2Evaluateur: Utilise une approche LLM en tant que juge pour déterminer si la réponse d'un agent est valide.Évaluation de la trajectoire: évalue l'exactitude des trajectoires d'utilisation des outils d'un agent en comparant la séquence d'appels d'outils aux appels attendus. Il prend en charge différents types de correspondance (EXACT,EN ORDRE,ANY_ORDER).Évaluateur de sécuritéV1 : évalue la sécurité (innocuité) de la réponse d'un agent, en déléguant au SDK Vertex Gen AI Eval.HallucinationsV1Évaluateur: Vérifie si une répons...