Bienvenue dans cette série d’exercices pratiques dédiée à l’art et la science du prompting multimodal avec la famille de modèles Gemini de Google. Si les modèles de langage ont révolutionné le traitement du texte, la véritable frontière de l’intelligence artificielle se situe désormais dans leur capacité à comprendre et à raisonner simultanément sur plusieurs types de données.
Au-delà de la simple interaction textuelle, la capacité à fusionner des informations issues de textes, d’images et de vidéos est au cœur des applications d’IA les plus innovantes aujourd’hui. C’est une compétence essentielle pour tout futur ingénieur ou chercheur dans notre domaine.
Cet ensemble de 17 exercices a été conçu pour vous guider à travers une progression logique. Nous commencerons par les concepts fondamentaux – comme la sélection du bon modèle et le contrôle de ses paramètres – pour ensuite aborder des cas d’usage concrets et des techniques avancées, telles que le raisonnement sur plusieurs images, l’analyse vidéo et l’intégration de données en temps réel via le Function Calling.
Exercice 1 : Sélection du Modèle Gemini Approprié (Théorique)
Exercice
Un développeur souhaite créer trois applications distinctes :
Une application mobile Android qui résume des conversations en temps réel, fonctionnant entièrement sur l’appareil pour des raisons de latence et de confidentialité.
Un chatbot web à usage général, capable de comprendre des requêtes complexes en texte et en image, nécessitant un excellent équilibre entre coût et performance.
Un système de recherche de pointe pour une institution scientifique, devant analyser des articles de recherche complexes (texte, diagrammes, vidéos) et effectuer des raisonnements profonds.
Pour chaque application, quel modèle de la famille Gemini (Nano, Pro/Flash, Ultra) serait le plus approprié ? Justifiez votre choix en fonction des critères de capacité, latence et coût.
Solution
Application mobile : Gemini Nano.
Chatbot web : Gemini Pro ou Gemini Flash.
Système de recherche scientifique : Gemini Ultra.
Explication
La sélection du modèle est une étape cruciale qui dépend du cas d’usage spécifique.
Gemini Nano est conçu pour fonctionner nativement sur les appareils (“on-device”). C’est le choix idéal pour des tâches nécessitant une faible latence et un traitement local des données, comme la retranscription en temps réel sur un smartphone, sans dépendre d’une connexion serveur.
Gemini Pro offre un excellent équilibre entre performance, coût et vitesse, ce qui en fait le modèle de choix pour la plupart des applications grand public comme les chatbots. Gemini Flash est une alternative encore plus rapide et moins coûteuse, idéale lorsque la vitesse est la priorité absolue pour des tâches à haut volume.
Gemini Ultra est le modèle le plus puissant et le plus grand, conçu pour des tâches de raisonnement extrêmement complexes qui requièrent une compréhension multimodale profonde. Son coût et sa latence plus élevés sont justifiés par ses capacités de pointe, nécessaires pour l’analyse scientifique avancée.
Exercice 2 : Contrôle de la Créativité vs Déterminisme (Pratique)
Exercice
Vous souhaitez utiliser Gemini pour générer une description d’une image d’un paysage surréaliste. Vous voulez deux types de réponses :
a) Une description très créative, poétique et inattendue.
b) Une description factuelle, précise et littérale de ce qui est visible.
Quel paramètre principal de l’API ajusteriez-vous pour obtenir ces deux résultats ? Donnez une valeur approximative pour chaque cas.
Solution
Le paramètre principal à ajuster est la temperature.
a) Pour une description créative : temperature: 0.9 (ou une valeur élevée, proche de 1.0).
b) Pour une description factuelle : temperature: 0.1 (ou une valeur basse, proche de 0.0).
Explication
Le paramètre temperature contrôle le caractère aléatoire des prédictions du modèle.
Une température élevée (ex: 0.9) augmente la probabilité des mots moins probables, ce qui pousse le modèle à explorer des associations d’idées plus originales et à générer des textes plus créatifs et diversifiés. C’est idéal pour la poésie, la fiction ou le brainstorming.
Une température basse (ex: 0.1) favorise les mots les plus probables, rendant la sortie du modèle plus déterministe, focalisée et factuelle. C’est le réglage parfait pour des tâches comme l’extraction d’informations, la classification ou la description littérale.
Exercice 3 : Premier Prompt Multimodal Simple
Exercice
Vous disposez d’une image d’une pomme rouge sur une table en bois. Rédigez un prompt simple pour Gemini Pro Vision demandant d’identifier l’objet principal et sa couleur.
Solution
Prompt: "Décris l'objet principal visible dans cette image, ainsi que sa couleur." [Image d'une pomme rouge sur une table]
Explication
Ceci est la forme la plus fondamentale d’un prompt multimodal. Il se compose de deux parties :
L’instruction textuelle : “Décris l’objet principal visible dans cette image, ainsi que sa couleur.” Cette phrase guide le modèle sur la tâche spécifique à accomplir. Elle est claire, directe et non ambiguë.
L’entrée visuelle : [Image d’une pomme rouge sur une table]. Le modèle traite cette image en conjonction avec le texte pour formuler sa réponse. Gemini est capable de fusionner ces deux modalités pour comprendre que la question textuelle porte sur le contenu de l’image.
Exercice 4 : L'Importance de l'Assignation d'un Rôle
Exercice
Analysez la différence entre ces deux prompts destinés à analyser une image d’un graphique financier. Lequel est susceptible de donner une réponse de meilleure qualité et pourquoi ?
Prompt A : “Explique ce graphique.”
Prompt B : “Tu es un analyste financier expert. Analyse ce graphique boursier et résume les tendances clés, les points de support et de résistance pour un investisseur débutant.”
Solution
Le Prompt B est largement supérieur.
Explication
L’assignation d’un rôle (“Tu es un analyste financier expert”) est une technique de prompt engineering fondamentale.
Prompt A est vague. Le modèle pourrait donner une description visuelle (“c’est un graphique avec une ligne verte qui monte”), une explication mathématique des axes, ou une analyse de base. Le résultat est imprévisible.
Prompt B contextualise la tâche. En demandant au modèle d’adopter la persona d’un “analyste financier expert”, nous l’incitons à utiliser le vocabulaire, le cadre de raisonnement et la profondeur d’analyse associés à ce rôle. De plus, la tâche est décomposée (“résume les tendances”, “points de support et de résistance”) et l’audience est précisée (“pour un investisseur débutant”), ce qui guide le modèle vers une réponse plus structurée, pertinente et utile.
Exercice 5 : Impact de l'Ordre des Éléments
Exercice
Vous avez une image et un texte long et complexe. Votre objectif est que le modèle résume le texte en tenant compte du contexte fourni par l’image. Expérimentez mentalement avec deux structures de prompt :
[Image] [Long texte] “Résume le texte ci-dessus en te basant sur l’image.”
“En te basant sur l’image ci-dessous, résume le texte suivant : ” [Long texte] [Image]
Quelle structure est généralement plus efficace pour les modèles comme Gemini et pourquoi ?
Solution
La structure 2 est généralement plus efficace.
Explication
Les modèles de langage traitent les informations de manière séquentielle. Il est recommandé de placer les instructions et le contexte principal au début du prompt.
Dans la structure 1, le modèle doit d’abord traiter l’image puis le long texte avant de finalement découvrir sa tâche (“Résume…”). Il y a un risque que l’instruction finale soit moins prise en compte après le traitement d’un long volume de données.
Dans la structure 2, l’instruction principale (“En te basant sur l’image…, résume le texte suivant…”) est donnée en premier. Le modèle sait immédiatement quelle tâche il doit accomplir. Il traite ensuite le texte et l’image en ayant déjà l’objectif final en tête, ce qui conduit souvent à une meilleure focalisation et à des résultats plus pertinents. C’est une bonne pratique de donner les instructions avant les données à traiter.
Exercice 6 : Cas d'Usage - Assistant de Design d'Intérieur (Pratique)
Exercice
Un utilisateur envoie une photo de son salon vide et fournit le texte suivant : “J’aime le style scandinave, minimaliste, avec des couleurs claires et des touches de bois naturel. Je veux un espace cosy et lumineux.”
Rédigez un prompt pour Gemini qui génère trois suggestions de design concrètes basées sur l’image et les préférences de l’utilisateur.
Solution
Prompt:
"Tu es un décorateur d'intérieur expert spécialisé dans le design scandinave.
En te basant sur l'image de ce salon et les préférences de l'utilisateur ('style scandinave, minimaliste, couleurs claires, bois naturel, cosy, lumineux'), propose trois suggestions concrètes d'aménagement. Pour chaque suggestion, inclus un type de meuble, un choix de couleur et un accessoire.
[Image du salon vide]
"
Explication
Cet exercice combine plusieurs bonnes pratiques :
Assignation de Rôle : “Tu es un décorateur d’intérieur expert…” pour obtenir une réponse de haute qualité.
Fusion Multimodale : Le prompt demande explicitement de se baser à la fois sur l’image (pour l’espace) et le texte (pour les préférences).
Instructions Spécifiques : Au lieu de demander une vague “idée”, le prompt requiert “trois suggestions concrètes”.
Structuration de la Sortie : Il précise les éléments attendus pour chaque suggestion (“un type de meuble, un choix de couleur et un accessoire”), ce qui garantit une réponse utile et bien organisée.
Exercice 7 : Cas d'Usage - Extraction d'Informations sur un Ticket de Caisse
Exercice
Vous avez une image d’un ticket de caisse. Votre tâche est de créer un prompt pour Gemini Pro Vision qui extrait le nom du marchand, la date de la transaction et le montant total, et qui structure ces informations au format JSON.
Solution
from pydantic import BaseModel, EmailStr from typing import Optionalclass ParsedContact(BaseModel): nom: Optional[str] = None adresse_email: Optional[EmailStr] = None
Explication
C’est un excellent exemple de “raisonnement visuel structuré”.
Tâche Claire : “Analyse… Extrais…”. Le verbe d’action est précis.
Spécification du Format de Sortie : Demander un format JSON est crucial pour l’intégration de la sortie du modèle dans une application. Le modèle comprend cette instruction et formate sa réponse en conséquence, la rendant directement utilisable par un autre programme.
Instruction Négative : “Ne fournis aucune explication…”. Cette contrainte est importante pour éviter que le modèle n’ajoute du texte conversationnel (“Bien sûr, voici le JSON que vous avez demandé…”) qui pourrait perturber un parsing automatique.
Exercice 8 : Raisonnement sur Plusieurs Images
Exercice
Vous avez deux images : l’une montrant les ingrédients d’une recette (farine, œufs, sucre, chocolat) et l’autre montrant le gâteau fini. Rédigez un prompt qui demande à Gemini d’identifier la transformation qui a eu lieu entre les deux images.
Solution
from pydantic import BaseModel from enum import Enumclass Sentiment(str, Enum): POSITIF = “POSITIF” NEGATIF = “NÉGATIF” NEUTRE = “NEUTRE” class AnalyseSentiment(BaseModel): sentiment: Sentiment # Simulation de sorties LLM llm_output1 = “POSITIF” llm_output2 = “INCONNU” analyse1 = AnalyseSentiment(sentiment=llm_output1) print(analyse1) # > sentiment=<Sentiment.POSITIF: ‘POSITIF’> try: AnalyseSentiment(sentiment=llm_output2) except ValueError as e: print(e)
Explication
Cet exercice met en évidence la capacité de Gemini à effectuer un raisonnement “cross-modal” sur plusieurs entrées visuelles.
Le modèle doit d’abord identifier les objets dans chaque image (OCR visuel).
Ensuite, il doit faire appel à sa connaissance du monde (connaissances culinaires) pour inférer la relation entre les deux ensembles d’objets.
Le prompt le guide explicitement à décrire un “processus” et à “nommer la recette”, ce qui pousse le modèle au-delà de la simple description pour effectuer une véritable inférence causale.
Exercice 9 : Cas d'Usage Vidéo - Recherche Sémantique
Exercice
Vous avez une longue vidéo (30 minutes) d’une conférence sur l’écologie. Vous voulez trouver le moment précis où l’orateur parle de “l’impact des microplastiques sur les océans”. Rédigez un prompt pour Gemini, en supposant que la vidéo a été fournie en entrée.
Solution
Prompt: "Analyse cette vidéo de conférence. Identifie et fournis le timestamp (horodatage) exact du début du segment où l'orateur commence à discuter de 'l'impact des microplastiques sur les océans'." [Vidéo de la conférence]
Explication
Cet exercice illustre la capacité de Gemini à traiter de longues fenêtres de contexte, y compris des vidéos. C’est le cas d’usage “needle in a haystack” (une aiguille dans une botte de foin).
Le prompt est très spécifique dans sa demande : il ne veut pas un résumé, mais un “timestamp exact”.
Le modèle doit analyser les images (l’orateur, les diapositives) et potentiellement la transcription audio pour localiser sémantiquement le concept demandé.
Cela démontre une compréhension qui va au-delà des mots-clés, car le modèle peut trouver le segment même si la phrase exacte “impact des microplastiques sur les océans” n’est pas prononcée, mais que le sujet est abordé.
Exercice 10 : Parser une Liste d'Objets Structurés
Exercice
Un LLM a extrait une liste de livres d’un texte et l’a formatée en JSON. Créez les modèles Pydantic nécessaires pour valider la structure suivante : une liste de livres, où chaque livre a un titre et un auteur.
Solution
from pydantic import BaseModel, TypeAdapter
from typing import List
class Livre(BaseModel):
titre: str
auteur: str
# Simulation de la sortie JSON du LLM
llm_json_output = """
[
{"titre": "Dune", "auteur": "Frank Herbert"},
{"titre": "1984", "auteur": "George Orwell"}
]
"""
import json
data = json.loads(llm_json_output)
# Utilisation de TypeAdapter pour valider une liste à la racine
LivresListAdapter = TypeAdapter(List[Livre])
liste_livres_validee = LivresListAdapter.validate_python(data)
print(liste_livres_validee)
Explication
Cet exercice illustre la capacité de Gemini à traiter de longues fenêtres de contexte, y compris des vidéos. C’est le cas d’usage “needle in a haystack” (une aiguille dans une botte de foin).
Le prompt est très spécifique dans sa demande : il ne veut pas un résumé, mais un “timestamp exact”.
Le modèle doit analyser les images (l’orateur, les diapositives) et potentiellement la transcription audio pour localiser sémantiquement le concept demandé.
Cela démontre une compréhension qui va au-delà des mots-clés, car le modèle peut trouver le segment même si la phrase exacte “impact des microplastiques sur les océans” n’est pas prononcée, mais que le sujet est abordé.
Exercice 10 : Cas d'Usage Vidéo - Résumé et QA
Exercice
En utilisant la même vidéo de conférence de 30 minutes, rédigez un prompt qui demande deux choses : un résumé en 5 points clés et la réponse à une question précise qui nécessite de synthétiser des informations de différentes parties de la vidéo.
Solution
Prompt: "À partir de la vidéo de cette conférence sur l'écologie, effectue les deux tâches suivantes : 1. Génère un résumé concis en 5 points clés. 2. Réponds à la question suivante : 'Selon l'orateur, quelles sont les trois principales solutions proposées pour réduire la pollution plastique à la source ?' [Vidéo de la conférence] "
Explication
Ce prompt est plus complexe que le précédent car il demande au modèle de traiter l’intégralité du contenu et de le synthétiser.
Tâche de Résumé : “5 points clés” structure la sortie et oblige le modèle à identifier les idées les plus importantes de toute la vidéo.
Tâche de Question/Réponse (QA) : La question spécifique force le modèle à localiser, extraire et agréger des informations qui peuvent être mentionnées à différents moments de la vidéo, démontrant ainsi une compréhension globale du contenu.
Exercice 11 : Introduction au "Function Calling"
Exercice
Qu’est-ce que le “Function Calling” dans le contexte des LLMs comme Gemini ? Pourquoi est-ce une fonctionnalité si puissante pour créer des applications intelligentes ?
Solution
Le “Function Calling” est la capacité d’un LLM à interagir avec des outils et des API externes. Le modèle ne peut pas exécuter le code lui-même, mais il peut générer un objet JSON contenant le nom d’une fonction à appeler et les arguments nécessaires, en se basant sur la requête de l’utilisateur.
C’est une fonctionnalité puissante car elle permet de surmonter deux limitations fondamentales des LLMs :
Accès à l’Information en Temps Réel : Les LLMs sont entraînés sur des données statiques. Le “Function Calling” leur permet d’interroger des API pour obtenir des informations à jour (météo, cours de la bourse, actualités).
Exécution d’Actions : Les LLMs ne peuvent que générer du texte. Le “Function Calling” leur permet d’interagir avec le monde réel en déclenchant des actions via des API (envoyer un email, réserver un billet, contrôler un objet connecté).
Explication
Le “Function Calling” transforme le LLM d’un simple générateur de texte en un “cerveau” ou un “orchestrateur” capable de raisonner et de décider quel outil utiliser pour accomplir une tâche. Le développeur fournit au modèle une liste de “fonctions” disponibles (avec leurs descriptions et paramètres), et le modèle détermine intelligemment quand et comment les utiliser en réponse à une conversation.
Exercice 12 : "Function Calling" - Exemple Simple
Exercice
Un utilisateur demande : “Quel temps fait-il à Paris ?”. Vous avez une fonction Python get_weather(city: str) disponible. Comment structureriez-vous l’appel à l’API Gemini pour qu’il utilise cette fonction ? Décrivez les 3 étapes principales du processus.
Solution
Les 3 étapes sont :
Premier appel à Gemini : On envoie le prompt de l’utilisateur (“Quel temps fait-il à Paris ?”) ainsi que la définition de la fonction get_weather au modèle.
// Déclaration de la fonction pour le modèle
tools = [
{
"function_declarations": [
{
"name": "get_weather",
"description": "Obtient la météo actuelle pour une ville donnée.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "La ville pour laquelle obtenir la météo."
}
},
"required": ["city"]
}
}
]
}
]
// Envoi du prompt de l'utilisateur avec les outils
model.generate_content("Quel temps fait-il à Paris ?", tools=tools)
Réponse de Gemini et Appel de la Fonction : Le modèle ne répond pas avec la météo, mais avec un appel de fonction structuré.
// Réponse attendue de Gemini
{
"functionCall": {
"name": "get_weather",
"args": { "city": "Paris" }
}
}
Votre code applicatif doit alors parser cette réponse et exécuter get_weather(“Paris”). Supposons que cela retourne : {“temperature”: “19°C”, “condition”: “Ensoleillé”}.
Second appel à Gemini : On renvoie le résultat de la fonction au modèle pour qu’il formule une réponse finale en langage naturel.
// Envoi du résultat au modèle
model.generate_content(
[
tool_result_from_api_call, // Contient le résultat {"temperature": ...}
user_prompt // On peut redonner le contexte initial
]
)
Gemini génère alors la réponse finale : “Il fait actuellement 19°C et le temps est ensoleillé à Paris.”
Explication
Ce processus en trois temps est fondamental. L’application agit comme un intermédiaire :
Elle présente les outils disponibles au LLM.
Elle intercepte la “décision” du LLM d’utiliser un outil.
Elle exécute l’outil de manière sécurisée dans son propre environnement.
Elle renvoie le résultat au LLM pour qu’il l’intègre dans la conversation.
Exercice 13 : Décomposition de Tâche
Exercice
Un utilisateur demande : “Rédige un rapport sur l’impact de l’annonce des résultats trimestriels de la société X sur le cours de son action, en te basant sur une image du cours de l’action de la semaine passée.”
Comment décomposeriez-vous ce prompt complexe en sous-tâches plus simples pour guider Gemini vers un meilleur résultat ?
Solution
La décomposition pourrait suivre ces étapes dans le prompt :
Analyse Visuelle : “Premièrement, analyse l’image fournie du cours de l’action de la société X. Identifie la date de l’annonce des résultats et décris la réaction immédiate du marché (hausse, baisse, volume).”
Raisonnement Causal : “Deuxièmement, établis un lien de causalité entre l’événement (annonce des résultats) et la réaction du marché que tu as observée.”
Synthèse et Structuration : “Enfin, synthétise tes observations dans un rapport structuré avec les sections suivantes : a) Contexte, b) Analyse du Graphique, c) Impact et Conclusion.”
Explication
Plutôt que de poser une seule question complexe, la décomposition de la tâche en étapes logiques guide le raisonnement du modèle. C’est une technique de “chaîne de pensée” (Chain of Thought). En lui demandant d’expliciter son raisonnement étape par étape (“Premièrement…”, “Deuxièmement…”), on l’oblige à construire une analyse plus robuste et on réduit le risque d’hallucination ou de conclusion hâtive. Cette méthode améliore considérablement la qualité et la fiabilité des réponses pour les problèmes complexes.
Exercice 14 : Prompting "Few-Shot" en Multimodal
Exercice
Vous voulez que Gemini identifie le style architectural d’un bâtiment à partir d’une image. Pour améliorer la précision, vous décidez d’utiliser une approche “few-shot”. Rédigez un prompt qui inclut deux exemples avant de poser la question sur une nouvelle image.
Solution
Prompt: "Tu es un expert en histoire de l'architecture. Ta tâche est d'identifier le style architectural principal d'un bâtiment à partir d'une image. Voici quelques exemples : Exemple 1 : [Image de la Cathédrale Notre-Dame de Paris] Sortie : Gothique Exemple 2 : [Image du Parthénon à Athènes] Sortie : Grec Classique (Ordre dorique) Maintenant, identifie le style architectural du bâtiment dans l'image suivante : [Image du Colisée de Rome] Sortie : "
Explication
Le “few-shot prompting” consiste à fournir au modèle quelques exemples (les “shots”) de paires entrée/sortie correctes avant de lui soumettre la véritable requête.
Cela aide le modèle à mieux comprendre le format de sortie attendu (un nom de style concis).
Cela “amorce” le modèle en activant les concepts pertinents (ici, l’architecture) et en clarifiant le niveau de détail souhaité.
Pour les tâches de classification ou d’identification spécifiques, le “few-shot prompting” est souvent bien plus efficace qu’un prompt “zero-shot” (sans exemple), car il réduit l’ambiguïté de la tâche.
Exercice 15 : Gestion de l'Ambigüité dans une Image
Exercice
Vous avez une image ambiguë : on y voit une personne tenant un objet qui pourrait être un téléphone ou une petite télécommande. Votre objectif est d’obtenir une description qui reconnaît cette ambiguïté. Rédigez un prompt pour encourager Gemini à exprimer l’incertitude.
Solution
Prompt: "Décris la scène de cette image. Si certains objets ne sont pas clairement identifiables, mentionne les différentes possibilités et indique ton niveau de confiance pour chaque interprétation." [Image ambiguë]
Explication
Par défaut, un LLM peut tenter de donner une réponse définitive même s’il n’est pas sûr (“la personne tient un téléphone”). Ce prompt combat cette tendance de deux manières :
Instruction Explicite : “mentionne les différentes possibilités” demande directement au modèle de ne pas se contenter d’une seule interprétation.
Demande de Confiance : “indique ton niveau de confiance” incite le modèle à effectuer une sorte de méta-raisonnement sur sa propre analyse, ce qui le pousse à reconnaître et verbaliser l’ambiguïté. C’est une technique avancée pour obtenir des réponses plus nuancées et fiables.
Exercice 16 : Évaluation de la Sortie d'un Prompt
Exercice
Vous avez créé un prompt pour que Gemini génère des descriptions de produits à partir d’images pour un site e-commerce. Quels sont les trois critères qualitatifs que vous utiliseriez pour évaluer la qualité des descriptions générées ?
Solution
Précision et Pertinence (Accuracy & Relevance) : La description reflète-t-elle fidèlement les attributs visibles dans l’image (couleur, matériau, forme, caractéristiques clés) ? Omet-elle des détails importants ou, à l’inverse, invente-t-elle des caractéristiques non présentes (hallucination) ?
Ton et Style (Tone & Style) : La description adopte-t-elle le ton de voix de la marque (ex: luxueux, technique, décontracté) ? Est-elle engageante et persuasive pour le public cible ?
Complétude et Utilité (Completeness & Utility) : La description va-t-elle au-delà du visible pour inclure des informations utiles pour l’acheteur (ex: usages potentiels, conseils d’entretien, produits complémentaires) ? Est-elle bien structurée (paragraphes, listes à puces) pour une lecture facile ?
Explication
L’évaluation de la sortie d’un LLM est une compétence essentielle. Il ne suffit pas que le modèle “réponde”. La réponse doit être évaluée par rapport à des objectifs métier clairs. Ces trois critères (Précision, Ton, Utilité) forment une grille d’analyse robuste pour itérer et améliorer un prompt. On pourrait y ajouter des critères techniques comme la longueur, la présence de mots-clés pour le SEO, etc.
Exercice 17 : Scénario de Synthèse Complexe
Exercice
Vous êtes chargé de créer un système d’aide pour un technicien de maintenance. Le technicien envoie une courte vidéo d’une machine en panne qui émet un bruit anormal. Il ajoute le texte : “Modèle A-451. Le voyant rouge clignote. Le bruit a commencé après la dernière mise à jour du firmware.” Vous avez accès à une fonction get_maintenance_manual(model_name: str) qui renvoie le manuel de maintenance du modèle.
Rédigez le pseudo-code et les prompts nécessaires pour un système qui :
Décide d’appeler la fonction pour obtenir le bon manuel.
Analyse la vidéo et le texte de l’utilisateur.
Consulte le manuel retourné par la fonction.
Fournit au technicien une liste d’étapes de diagnostic probables.
Solution
Étape 1 : Définition de l’outil et premier appel
// Pseudo-code de l'application
tools = [
define_function("get_maintenance_manual", "Récupère le manuel de maintenance pour un modèle de machine spécifique.", {"model_name": "string"})
]
user_input = "Modèle A-451. Le voyant rouge clignote. Le bruit a commencé après la dernière mise à jour du firmware."
user_video = [Vidéo de la machine en panne]
// Premier appel à Gemini
response1 = model.generate_content(user_input, user_video, tools=tools)
// La réponse de Gemini sera un appel de fonction :
// {"functionCall": {"name": "get_maintenance_manual", "args": {"model_name": "A-451"}}}
Étape 2 : Exécution de l’outil et deuxième appel
// L'application exécute la fonction
manual_content = get_maintenance_manual("A-451") // Renvoie le texte du manuel
// Deuxième appel à Gemini avec tout le contexte
prompt2 = f"""
Tu es un assistant expert pour technicien de maintenance.
Un technicien a un problème avec une machine 'Modèle A-451'.
Voici ses observations :
- Texte : "{user_input}"
- Vidéo : [Lien vers la vidéo montrant un voyant rouge clignotant et un bruit anormal]
Voici la section 'Dépannage' du manuel de maintenance officiel :
---
{manual_content}
---
En te basant sur TOUTES ces informations (texte, vidéo et manuel), fournis une liste d'étapes de diagnostic claires et ordonnées que le technicien devrait suivre.
"""
final_response = model.generate_content(prompt2, video=user_video)
Explication
Cet exercice final synthétise presque tous les concepts abordés :
Multimodalité : Il prend en entrée du texte et une vidéo.
Function Calling : Il identifie la nécessité de récupérer des informations externes (le manuel) et structure l’appel.
Raisonnement en Plusieurs Étapes : Le processus est décomposé en une phase de collecte d’informations (appel de fonction) et une phase d’analyse et de synthèse.
Fusion de Données : Le prompt final demande explicitement au modèle de raisonner en se basant sur trois sources d’information distinctes : l’observation de l’utilisateur, l’analyse de la vidéo, et le contenu du manuel technique.
C’est un exemple réaliste d’une application avancée et puissante construite avec Gemini.