Après avoir terminé l'architecture d'orchestration multi-agents pour LINE Bot, la fonction d'analyse d'image d'origine a directement envoyé l'image àgemini-2.5-flashpour la reconnaissance. Cependant, Google a publié Agentic Vision of Gemini 3 Flash en janvier 2026, qui permet au modèle non seulement de « voir » l'image, mais également d'écrire activement du code Python pour agrandir, recadrer et annoter l'image.
Cela m'a fait penser à un cas d'utilisation intéressant :
Un utilisateur envoie une photo et dit : « Aidez-moi à marquer le café », et l'IA répond non seulement avec une description textuelle, mais dessine également un cadre de délimitation et l'annote sur l'image, puis renvoie l'image annotée à LINE.
Cet article documente le processus complet de mise en œuvre de cette fonction, y compris les pièges et les solutions.
L'analyse d'image traditionnelle est statique : vous donnez une image au modèle et le modèle renvoie une description textuelle.
Agentic Vision transforme la compréhension des images en un processus d'investigation actif, en utilisant un cycle Réfléchir → Agir → Observer :
┌────────────────────────────── ───────────────────────────────┐ │ Processus de vision agentique │ │ │ │ 1. Réfléchir - Analyser l'image et planifier comment enquêter plus en profondeur │ │ 2. Agir - Écrire du code Python (recadrer, agrandir, annoter, calculer) │ │ 3. Observer - Observer les résultats de l'exécution du code (y compris l'image annotée générée) │ │ 4. Répétez les étapes ci-dessus jusqu'à ce que l'analyse soit terminée │ └────────────────────────────── ───────────────────────────────┘gemini-3-flash-aperçucode_exécutionoutil - permet au modèle d'écrire et d'exécuter du code Python# Activer la réponse à l'appel de l'API Agentic Vision = client.models.generate_content( model="gemini-3-flash-preview", contents=[image_part, "Aidez-moi à marquer le café"], config=types.GenerateContentConfig( tools=[types.Tool(code_execution=types.ToolCodeExecution)], thinking_config=types.ThinkingConfig(thinkingBudget=2048), ) ) # Réponse contient plusieurs parties : texte, code, résultats d'exécution, images annotées pour la partie dans response.candidates[0].content.parts : if part.text : # Analyse de texte if part.executable_code : # Code Python écrit par le modèle if part.code_execution_result : # Résultats d'exécution du code si part.as_image() : # Image annotée générée !Au lieu d'analyser directement l'image dès sa réception, elle a été modifiée pour permettre à l'utilisateur de choisir d'abord un mode :
L'utilisateur envoie une image │ ▼ ┌─────────────────────────────────────┐ │ 📷 Image reçue, veuillez sélectionner une méthode d'analyse : │ │ │ │ ┌──────────┐ ┌─────────────────┐ │ │ │ Reconnaître l'image │ │ Vision agentique │ │ │ └──────────┘ └─────────────────┘ │ │ (Boutons de réponse rapide) │ └─────────────────────────────────────┘ │ │ ▼ ▼ gemini-2.5-flash Instructions de saisie utilisateur Renvoie directement une description textuelle "Aidez-moi à marquer le café" │ ▼ gemini-3-flash-preview + code_execution │ ┌────┴───...
[Courte citation de 8% de l'article original]