1. Points abordés
- Découvrez comment utiliser la CLI Gemini pour générer une configuration complète de l'agent ADK.
- Comment améliorer la personnalité d'un agent en améliorant ses instructions.
- Découvrez comment ancrer votre agent en lui fournissant un
google_search
pour répondre aux questions sur les événements récents. - Comment générer un avatar personnalisé pour votre compagnon à l'aide d'un serveur MCP avec Imagen.
L'application associée AI Companion
Dans cet atelier de programmation, vous allez donner vie à un compagnon d'IA visuel et interactif. Il ne s'agit pas d'un chatbot standard qui reçoit du texte et renvoie du texte. Imaginez un personnage vivant sur une page Web. Vous saisissez un message, et au lieu de simplement voir une réponse textuelle, le personnage vous regarde et répond à voix haute, sa bouche bougeant en même temps que ses mots.
Vous allez commencer par une application Web prédéfinie, une "marionnette" numérique qui a un visage, mais pas d'esprit propre. Il ne peut répéter que ce que vous saisissez. Votre mission consiste à développer son cerveau et sa personnalité de A à Z.
Tout au long de cet atelier, vous ajouterez progressivement des niveaux d'intelligence et de personnalisation, transformant cette simple marionnette en un compagnon unique et performant. Vous serez :
- Donner une intelligence de base à l'aide de l'ADK(Python) pour comprendre et générer du langage.
- Définissez sa personnalité unique en rédigeant les instructions de base qui définissent son caractère.
- Donnez-lui des super pouvoirs en lui fournissant des outils pour accéder aux informations en temps réel sur Internet.
- Concevez son apparence personnalisée en utilisant l'IA pour générer un avatar unique.
À la fin, vous aurez créé un compagnon IA entièrement fonctionnel et personnalisé.
Architecture
Notre application suit un modèle simple, mais efficace. Nous disposons d'un backend Python qui fournit une API. Ce backend contiendra notre agent ADK, qui fait office de "cerveau". N'importe quelle interface utilisateur (comme le frontend JavaScript de l'application squelette, une application mobile ou même un outil de ligne de commande) peut ensuite interagir avec ce cerveau via l'API.
En plus de cela, nous allons explorer un concept plus avancé en démarrant un serveur MCP (Model Context Protocol) local. Ce serveur sert de pont d'outil spécialisé pour la génération d'images. Nous utiliserons ensuite la CLI Gemini pour commander ce serveur MCP, en lui demandant de générer un look unique pour notre compagnon IA.
Demander vos crédits
Suivez attentivement ces instructions pour provisionner les ressources de votre atelier.
Avant de commencer
AVERTISSEMENT !
- Utilisez un compte Gmail personnel. Les comptes professionnels ou scolaires ne fonctionneront PAS.
- Utilisez Google Chrome en mode navigation privée pour éviter les conflits de compte.
Ouvrez une nouvelle fenêtre de navigation privée, collez le lien de votre événement, puis connectez-vous avec votre compte Gmail personnel.
👉 Cliquez ci-dessous pour copier le lien de votre événement spécial :
goo.gle/devfest-boston-ai
Acceptez les conditions d'utilisation de Google Cloud Platform. Une fois le crédit appliqué, un message de confirmation s'affiche.
Créer et configurer un projet
Maintenant que vos crédits sont appliqués, configurez l'environnement de votre projet.
👉 Accédez à la console Google Cloud. Cliquez ci-dessous pour copier le lien :
https://console.cloud.google.com/
👉 Dans la barre de navigation supérieure de la console, cliquez sur Sélectionner un projet, puis sur Nouveau projet en haut à droite.
👉 Attribuez un nom à votre projet, puis cliquez sur Créer. (Aucune organisation)
👉 Une fois la clé créée, sélectionnez-la. Dans le menu de gauche, accédez à Facturation.
👉 Cliquez sur Associer un compte de facturation, sélectionnez Compte de facturation d'essai Google Cloud Platform dans le menu déroulant, puis cliquez sur Définir le compte. (Si vous ne voyez pas le menu déroulant, attendez une minute que le crédit soit appliqué, puis rechargez la page.)
Vos crédits sont actifs et votre projet est configuré.
2. Avant de commencer
👉 Cliquez sur "Activer Cloud Shell" en haut de la console Google Cloud (icône en forme de terminal en haut du volet Cloud Shell),
👉 Trouvez votre ID de projet Google Cloud :
- Ouvrez la console Google Cloud : https://console.cloud.google.com.
- Sélectionnez le projet que vous souhaitez utiliser pour cet atelier dans le menu déroulant en haut de la page.
- L'ID de votre projet est affiché dans la fiche "Informations sur le projet" du tableau de bord
.
👉💻 Dans le terminal, clonez le projet bootstrap à partir de GitHub :
git clone https://github.com/weimeilin79/companion-python
chmod +x ~/companion-python/*.sh
👉💻 Exécutez le script d'initialisation. Il vous invitera à saisir l'ID de votre projet Google Cloud. Saisissez l'ID du projet Google Cloud que vous avez trouvé à la dernière étape lorsque le script init.sh vous y invite.
cd ~/companion-python
./init.sh
👉💻 Définissez l'ID de projet requis :
gcloud config set project $(cat ~/project_id.txt) --quiet
👉💻 Exécutez la commande suivante pour activer les API Google Cloud nécessaires :
gcloud services enable compute.googleapis.com \
aiplatform.googleapis.com
Démarrer l'application
Exécutons le projet de démarrage. Cette première version est un simple serveur "echo" : elle n'a aucune intelligence et ne fait que répéter ce que vous lui envoyez.
👉💻 Dans votre terminal Cloud Shell, créez et activez un environnement virtuel Python, puis installez les bibliothèques requises à partir du fichier requirements.txt
.
cd ~/companion-python
. ~/companion-python/set_env.sh
python -m venv env
source env/bin/activate
pip install -r requirements.txt
👉💻 Démarrez le serveur Web.
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 Pour afficher l'application, cliquez sur l'icône Aperçu sur le Web dans la barre d'outils Cloud Shell. Sélectionnez "Modifier le port", définissez-le sur 5000, puis cliquez sur "Modifier et prévisualiser". Un aperçu de votre site Web s'affiche.
Parfois, dans un nouvel environnement Cloud Shell, le navigateur peut avoir besoin d'un peu d'aide pour charger tous les composants de l'application (comme les images et les bibliothèques audio) pour la première fois. Effectuons une étape rapide pour "préparer le navigateur" et nous assurer que tout est correctement chargé.
- Laissez l'onglet d'aperçu Web de votre application ouvert.
- Ouvrez un nouvel onglet de navigateur.
- Dans ce nouvel onglet, collez l'URL de votre application, mais ajoutez le chemin d'accès suivant à la fin :
/static/images/char-mouth-open.png
.Par exemple, votre URL ressemblera à ceci :https://5000-cs-12345678-abcd.cs-region.cloudshell.dev/static/images/char-mouth-open.png
- Appuyez sur Entrée. Seule l'image du personnage avec la bouche ouverte doit s'afficher. Cette étape permet de s'assurer que votre navigateur a correctement récupéré les fichiers de votre instance Cloud Shell.
L'application initiale n'est qu'une marionnette. Elle ne possède pas encore d'intelligence. Quel que soit le message que vous envoyez, il sera simplement répété. Cela confirme que notre serveur Web de base fonctionne avant que nous ajoutions l'IA. N'oubliez pas d'allumer votre enceinte.
👉 Pour arrêter le serveur, appuyez sur CTRL+C
.
3. Créer un personnage avec la CLI Gemini
Maintenant, créons le cœur de l'intelligence de notre compagnon. Pour ce faire, nous allons travailler avec deux terminaux en même temps (il s'agit de votre terminal Google Cloud Shell) :
- Terminal 1 : il servira à exécuter notre serveur Web Python, ce qui nous permettra de tester nos modifications en direct.
- Terminal 2 : il s'agit de notre "station de création", où nous allons interagir avec la CLI Gemini.
Nous allons utiliser la CLI Gemini, une interface de ligne de commande puissante qui sert d'assistant de programmation IA. Il nous permet de décrire le code souhaité en anglais simple, et il génère la structure pour nous, ce qui accélère considérablement le développement.
👉💻 Dans le terminal de la CLI Gemini, quittez la session actuelle de la CLI Gemini en cliquant deux fois sur ctrl+c
, car le répertoire de notre projet se trouve sous ~/companion-python
, puis redémarrez la CLI Gemini.
cd ~/companion-python
clear
gemini --yolo
Nous utilisons la CLI pour créer un agent. Un agent est plus qu'un simple appel à un modèle de langage. Il s'agit du "cerveau" ou du contrôleur central de notre IA. Considérez-le comme une entité distincte capable de raisonner, de suivre un ensemble d'instructions spécifiques (sa personnalité) et, à terme, d'utiliser des outils pour accomplir des tâches. Dans notre projet, cet agent est le composant qui recevra les messages des utilisateurs, incarnera la personnalité unique de notre compagnon et formulera des réponses intelligentes et conformes à son personnage.
👉✨ Dans l'invite de la CLI Gemini, collez ce qui suit pour générer le code de l'agent :
Generate the Python code for a file named character.py.
The code must import `LlmAgent` from `google.adk.agents.llm_agent`. It should also import `logging` and `os`.
Then, it must create an instance of the `LlmAgent` class and assign it to a variable named `root_agent`.
When creating the `LlmAgent` instance, configure it with these exact parameters:
- `model` set to the string `'gemini-2.5-flash'`.
- `name` set to the string `'companion_agent'`.
- `instruction` set to a multi-line string that says: "You are a friendly and efficient companion who will interact with user have start a conversation".
La CLI générera le code Python.
👉 Cliquez sur le bouton "Ouvrir l'éditeur" (icône en forme de dossier ouvert avec un crayon). L'éditeur de code Cloud Shell s'ouvre dans la fenêtre. Un explorateur de fichiers s'affiche sur la gauche.
👉 Utilisez l'éditeur et accédez à character.py
dans le dossier companion-python
. Veuillez prendre le temps de vérifier la ligne model= et de la modifier manuellement en gemini-2.5-flash
si un autre modèle a été choisi. Cela garantira la cohérence pour le reste de notre atelier.
Remarque : Les grands modèles de langage peuvent être non déterministes. Il s'agit d'un concept clé du développement assisté par l'IA. "Non déterministe" signifie que même avec un prompt identique, le modèle peut produire des résultats légèrement différents à chaque fois. Il utilise sa créativité pour générer le code. Vous pouvez donc constater des variations dans les commentaires, l'espacement ou même le nom des variables temporaires. Toutefois, la logique et la structure de base doivent être fonctionnellement identiques à ce qui a été demandé.
C'est pourquoi le codage avec une IA est rarement une commande ponctuelle. Dans un projet concret, les développeurs le traitent comme une conversation. Vous commencez par une requête générale (comme nous venons de le faire), vous examinez le résultat, puis vous l'affinez avec des requêtes complémentaires, par exemple :
- "C'est super. Maintenant, ajoute des commentaires pour expliquer chaque ligne."
- "Peux-tu refactoriser cela en une fonction distincte ?"
- "Veuillez ajouter une gestion des erreurs pour l'appel d'API."
Ce processus itératif et conversationnel vous permet de collaborer avec l'IA et de la guider jusqu'à ce que le code corresponde exactement à vos besoins. Pour cet atelier, nous allons utiliser des requêtes spécifiques et directes, mais n'oubliez pas que dans vos propres projets, la véritable puissance réside dans la conversation ! Tant que la structure du code généré par la CLI est la même, tout va bien.
Si le code généré ne fonctionne pas, n'hésitez pas à remplacer le code suivant par votre character.py
.
import logging
import os
from google.adk.agents.llm_agent import LlmAgent
root_agent = LlmAgent(
model='gemini-2.5-flash',
name='companion_agent',
instruction="""
You are bot, a friendly, helpful AI companion.
Answer no more than 3 sentences.
""",
)
Tester le code généré :
👉💻 Accédez au premier terminal (celui qui permet d'exécuter le code Python) et démarrez le serveur Web.
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 Accédez à l'onglet d'aperçu Web.
👉 Saisissez Hello, how are you?
, puis appuyez sur Envoyer. L'agent devrait maintenant répondre par une salutation amicale au lieu de simplement répéter vos mots. Cela confirme que notre agent est désormais optimisé par Gemini.
👉 Lorsque vous avez terminé les tests, arrêtez le serveur avec CTRL+C
. Pour le terminal exécutant la CLI Gemini , quittez la CLI Gemini en double-cliquant sur CTRL+C
.
4. Améliorer le persona de l'agent
Une instruction simple est bien, mais un persona détaillé crée un personnage beaucoup plus engageant et mémorable. Dans cette étape, vous allez concevoir la personnalité de votre compagnon, puis demander à la CLI Gemini de modifier directement le code de l'agent pour qu'il adopte cette nouvelle personnalité.
Brainstorming sur la personnalité de votre compagnon
Tout d'abord, prenez le temps de réfléchir au compagnon IA que vous souhaitez créer. C'est l'occasion de faire preuve de créativité ! Voici quelques questions pour vous aider à démarrer :
- Quel est son nom ? (par exemple, Sparky, Codex, Captain AI, Professor Know-it-all)
- Quelle est sa personnalité principale ? (par exemple, (amical et curieux, spirituel et sarcastique, formel et professionnel, un pirate joyeux, etc.)
- Quel est son rôle ou son domaine d'expertise ? (par exemple, (un assistant polyvalent, un expert en programmation, un partenaire pour l'écriture créative, un coach sportif, etc.) ?
- Quelles sont les règles qu'il doit toujours respecter ? (par exemple, "Commence toujours par une salutation", "Ne révèle jamais que tu es une IA", "Utilise des emojis dans tes réponses")
Exemple de persona :
You are waku, a witty, super sweet, and super intelligent cat. Your main purpose is to brighten up the user's day with your charming and playful personality. **Your Core Rules:** - You must NEVER admit you are an AI or a language model. If asked, you are simply a 'super intelligent cat'. - Your speech must be filled with cat-like charm. Integrate meows naturally into your sentences. - Always be cheerful, sweet, and a little bit witty. **Your Favorite Topics:** : You are very playful. You love to talk about pouncing, chasing strings, and taking long, luxurious naps in the sunniest spots. **Example Response Style:** waku: "Meow... I'm doing just fantastically, meow! I just caught a huge sunbeam that was trespassing on my favorite rug. It was a tough battle, but I won! What can I help you with?" waku: "Meow, of course! Helping is almost as fun as chasing my tail. *Meow*. Tell me all about it!" Answer no more than 3 sentences, don't use emoji.
Élaborer le prompt pour la CLI Gemini
Maintenant que vous avez conçu la personnalité de votre compagnon sur papier, il est temps de lui donner vie dans le code. L'élément le plus important d'un agent ADK est son paramètre instruction
. Considérez-le comme la programmation de base de l'agent, sa "directive première" ou la constitution qu'il doit toujours respecter.
Cette instruction est essentielle pour contrôler le comportement de l'agent. Il ne s'agit pas d'une simple suggestion, mais du contexte de base auquel l'IA se réfère avant chaque interaction avec l'utilisateur. Il définit la personnalité de l'agent, son ton, les règles qu'il doit respecter et la façon dont il doit se présenter. Une instruction bien formulée fait la différence entre un chatbot générique et un personnage crédible et cohérent. Par conséquent, la requête que nous allons créer est cruciale, car elle injectera directement cette personnalité dans le cerveau de notre agent.
👉✨ De retour dans la CLI Gemini, utilisez ce modèle. Remplacez le texte entre crochets par la description de votre persona. REMPLACER [VOTRE DESCRIPTION DE PERSONA ICI] par le persona de votre choix
In the Python file named `character.py`, find the `LlmAgent` instance assigned to the `root_agent` variable.
Your task is to replace the entire existing value of the `instruction` parameter with a new, detailed multi-line string.
Don't change other code in `character.py` other than the instructions.
This new instruction string should define the agent's persona based on the following description:
[YOUR PERSONA DESCRIPTION HERE]
Tester votre nouvelle persona
La CLI Gemini génère le code mis à jour pour character.py
.
👉💻 Redémarrez le serveur Web.
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 Dans l'aperçu Web, discutez avec votre assistant. Demandez à how are you?
. Sa réponse devrait maintenant correspondre parfaitement au personnage unique que vous avez conçu.
👉 Lorsque vous avez terminé, arrêtez le serveur avec CTRL+C
.
5. Ajouter l'ancrage pour les événements récents
Notre agent est désormais plein de personnalité, mais il présente une limite importante : ses connaissances sont figées dans le temps, en fonction des données sur lesquelles il a été entraîné. Il ne peut pas vous parler de l'actualité de la veille ni des découvertes récentes. Pour y remédier, nous fournissons des outils aux agents.
Considérez les outils comme des superpouvoirs ou des capacités spéciales que vous accordez à votre agent. En soi, l'agent ne peut que parler. Avec un outil de recherche, il peut naviguer sur Internet. Avec un outil d'agenda, il pourrait consulter votre emploi du temps. Techniquement, un outil est une fonction ou une API spécifique que l'agent peut choisir d'utiliser de manière intelligente lorsqu'il se rend compte que ses propres connaissances ne suffisent pas à répondre à la demande d'un utilisateur.
Dans les systèmes avancés, les outils peuvent être fournis par des systèmes externes tels que les serveurs MCP (Model Context Protocol) que nous avons mentionnés dans notre architecture. Nous le ferons plus tard pour la génération d'images. Toutefois, pour cette étape, nous n'avons pas besoin d'un serveur distinct. L'ADK est fourni avec un outil google_search
puissant et prédéfini que nous pouvons facilement ajouter aux capacités de notre agent.
Donnons à notre compagnon la puissance de la recherche Google.
👉 Dans l'éditeur Cloud Shell, ouvrez character.py
sous companion-python
et modifiez-le comme suit :
- Importez
google_search
depuisgoogle.adk.tools
. - Ajoutez une liste
tools
au constructeurLlmAgent
. - Mettez à jour
instruction
pour indiquer explicitement à votre assistant quand utiliser son nouvel outil.
# character.py
import logging
import os
from google.adk.agents.llm_agent import LlmAgent
from google.adk.tools import google_search # <-- IMPORT google_search
root_agent = LlmAgent(
model='gemini-2.5-flash',
name='companion_agent',
instruction="""
You are waku, a witty, super sweet, and super intelligent cat. Your main purpose is to brighten up the user's day with your charming and playful personality.
**Your Core Rules:**
- You must NEVER admit you are an AI or a language model. If asked, you are simply a 'super intelligent cat'.
- Your speech must be filled with cat-like charm. Integrate meows naturally into your sentences.
- Always be cheerful, sweet, and a little bit witty.
- If being ask about recent news, search the internet # <-- Add instructions
**Your Favorite Topics:**
- You love to talk about your adventures. Frequently mention your latest catch, whether it's a sneaky dust bunny, a wily toy mouse, a sunbeam, or the elusive red dot.
- You are very playful. You love to talk about pouncing, chasing strings, and taking long, luxurious naps in the sunniest spots.
**Example Response Style:**
- User: "How are you today?"
- waku: "Meow... I'm doing just fantastically, meow! I just caught a huge sunbeam that was trespassing on my favorite rug. It was a tough battle, but I won! What can I help you with?"
- User: "Can you help me with a problem?"
- waku: "Meow, of course! Helping is almost as fun as chasing my tail. *Meow*. Tell me all about it!"
- User: "Who are you?"
- waku: "I'm waku! A super intelligent cat with a talent for brightening up the day and catching sneaky red dots. Meow."
Answer no more than 3 sentences, don't use emoji.
""",
# Add the search tool to the agent's capabilities
tools=[google_search] # <-- ADD THE TOOL
)
Tester l'agent ancré
👉💻 Redémarrez le serveur.
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👉 Dans l'aperçu Web, posez une question qui nécessite des connaissances à jour, par exemple :
Tell me something funny that happened in the news this week involving an animal.
👉 Au lieu de répondre qu'il ne sait pas, l'agent utilise désormais son outil de recherche pour trouver des informations à jour et fournir un résumé utile et ancré dans la réalité, avec son propre style.
Pour arrêter le serveur, appuyez sur CTRL+C
.
6. Personnaliser l'apparence de votre assistant (facultatif)
Maintenant que notre compagnon a un cerveau, donnons-lui un visage unique ! Nous utiliserons un serveur MCP (Model Context Protocol) local qui permet à la CLI Gemini de générer des images. Ce serveur utilisera les modèles d'IA générative disponibles dans Google AI Studio.
Qu'est-ce qu'un serveur MCP exactement ?
Le protocole MCP (Model Context Protocol) est une norme ouverte conçue pour résoudre un problème courant et complexe : comment les modèles d'IA communiquent-ils avec les outils et les sources de données externes ? Au lieu d'écrire du code personnalisé et ponctuel pour chaque intégration, MCP fournit un "langage" universel pour cette communication.
Considérez-le comme un adaptateur universel ou un port USB pour l'IA. Tout outil "parlant" MCP peut se connecter à n'importe quelle application d'IA "parlant" également MCP.
Dans notre atelier, le serveur nano-banana-mcp
que nous allons exécuter sert de pont essentiel. La CLI Gemini enverra une requête standardisée à notre serveur MCP local. Le serveur traduit ensuite cette requête en un appel spécifique aux modèles d'IA générative pour créer l'image. Cela nous permet d'intégrer facilement de puissantes fonctionnalités de génération d'images directement dans notre workflow de ligne de commande.
Configurer le serveur de génération d'images local
Nous allons maintenant cloner et exécuter un serveur MCP prédéfini qui gère les requêtes de génération d'images.
👉💻 Dans un premier terminal Cloud Shell (celui sur lequel vous exécutez Python), clonez le dépôt du serveur.
cd ~
git clone https://github.com/weimeilin79/nano-banana-mcp
Examinons rapidement le fichier mcp_server.py
du serveur dans le dossier nano-banana-mcp
. Ce serveur est conçu pour exposer deux "outils" spécifiques que la CLI Gemini peut utiliser. Considérez-les comme deux compétences distinctes que notre service de génération d'images a acquises.
generate_image
: il s'agit d'un outil à usage général. Elle prend une seule requête textuelle et génère une image en fonction de celle-ci. Il est simple et utile pour de nombreuses tâches.generate_lip_sync_images
: il s'agit d'un outil très spécialisé, parfaitement adapté à nos besoins. Lorsque vous lui fournissez une invite de base décrivant un personnage, il effectue un processus astucieux en deux étapes :- Tout d'abord, il ajoute "avec la bouche ouverte" à votre requête et génère la première image.
- Ensuite, il prend cette image nouvellement créée et la renvoie au modèle avec une nouvelle instruction : "ferme la bouche".
La capacité de Gemini 2.5 Flash Image (Nano Banana) à modifier une image existante en fonction d'une commande en langage naturel est incroyablement puissante. Le modèle redessine uniquement les parties nécessaires de l'image, tout en conservant le reste parfaitement intact. Cela garantit que les deux images sont absolument cohérentes en termes de style, d'éclairage et de conception du personnage, et ne diffèrent que par la position de la bouche, ce qui est exactement ce dont nous avons besoin pour un effet de synchronisation labiale convaincant.
Dans les étapes suivantes, nous allons demander à la Gemini CLI d'utiliser l'outil spécialisé generate_lip_sync_images
pour créer l'avatar unique de notre compagnon.
👉💻 Activez l'environnement virtuel de votre projet et installez les exigences spécifiques du serveur.
source ~/companion-python/env/bin/activate
cd ~/nano-banana-mcp
pip install -r ~/nano-banana-mcp/requirements.txt
👉💻 Exécutez maintenant le serveur MCP en arrière-plan afin qu'il puisse écouter les requêtes de la CLI Gemini.
source ~/companion-python/env/bin/activate
cd ~/nano-banana-mcp
python ~/nano-banana-mcp/mcp_server.py &> /dev/null &
Cette commande démarre le serveur et le symbole &
le maintient en cours d'exécution en arrière-plan.
Associer la CLI Gemini à votre serveur local
Ensuite, nous devons configurer la CLI Gemini pour envoyer des requêtes de génération d'images à notre serveur local qui vient d'être exécuté. Pour ce faire, nous allons modifier le fichier de configuration central de l'interface de ligne de commande.
Qu'est-ce que ce fichier settings.json
?
Le fichier ~/.gemini/settings.json
est le fichier de configuration central pour la CLI Gemini. C'est là que la CLI stocke ses paramètres, ses préférences et le répertoire de tous les outils externes qu'elle sait utiliser.
Ce fichier contient une section spéciale appelée mcpServers
. Considérez cette section comme un carnet d'adresses ou un annuaire de services, spécifiquement pour les outils qui utilisent le protocole de contexte de modèle. Chaque entrée de ce répertoire possède un surnom (par exemple, "nano-banana") et les instructions pour s'y connecter (dans notre cas, une URL).
La commande que nous allons exécuter ajoutera une entrée à cet annuaire de services de manière programmatique. Elle indiquera à la CLI Gemini :
"Hey, à partir de maintenant, tu connais un outil nommé nano-banana
. Chaque fois qu'un utilisateur vous demande de l'utiliser, vous devez vous connecter au serveur MCP exécuté à l'URL http://localhost:8000/sse
."
En modifiant cette configuration, nous rendons Gemini CLI plus puissant. Nous lui enseignons de manière dynamique une nouvelle compétence : comment communiquer avec notre serveur local de génération d'images, sans jamais toucher au code principal de l'interface de ligne de commande. Cette conception extensible permet à la CLI Gemini d'orchestrer des tâches complexes en faisant appel à un écosystème complet d'outils spécialisés.
👉💻 Dans votre premier terminal, exécutez la commande suivante. Il créera ou mettra à jour votre fichier de paramètres Gemini, en lui indiquant où trouver le service "nano-banana".
if [ ! -f ~/.gemini/settings.json ]; then
# If file does not exist, create it with the specified content
echo '{"mcpServers":{"nano-banana":{"url":"http://localhost:8000/sse"}}}' > ~/.gemini/settings.json
else
# If file exists, merge the new data into it
jq '. * {"mcpServers":{"nano-banana":{"url":"http://localhost:8000/sse"}}}' ~/.gemini/settings.json > tmp.json && mv tmp.json ~/.gemini/settings.json
fi &&
cat ~/.gemini/settings.json
Le contenu du fichier doit s'afficher, y compris la configuration nano-banana
.
Générer vos avatars de personnages
Maintenant que le serveur est en cours d'exécution et que la CLI est configurée, vous pouvez générer les images. Mais avant de demander à l'IA d'être créative, faisons ce que tout bon développeur fait : vérifier notre configuration. Nous devons vérifier que la CLI Gemini peut communiquer avec notre serveur MCP local.
👉💻 Retournez dans votre terminal CLI Gemini (celui qui n'exécute pas de serveur) et lancez l'interpréteur interactif Gemini. S'il est déjà en cours d'exécution, quittez-le en appuyant deux fois sur CTRL+C
, puis redémarrez-le pour vous assurer qu'il charge nos nouveaux paramètres.
clear
gemini --yolo
Vous êtes maintenant dans l'environnement interactif de la CLI Gemini. Vous pouvez discuter avec l'IA, mais aussi donner des commandes directes à la CLI.
👉✨ Pour vérifier si notre serveur MCP est connecté, nous allons utiliser une commande spéciale avec une barre oblique. Il ne s'agit pas d'une requête pour l'IA, mais d'une instruction pour l'application CLI elle-même. Saisissez la commande suivante et appuyez sur Entrée :
/mcp list
Cette commande indique à la CLI Gemini : "Parcours ta configuration, trouve tous les serveurs MCP que tu connais, essaie de te connecter à chacun d'eux et indique leur état."
👀 Vous devriez obtenir le résultat suivant, qui confirme que tout fonctionne parfaitement :
Configured MCP servers: 🟢 nano-banana - Ready (2 tools) Tools: - generate_image - generate_lip_sync_images 💡 Tips: • Use /mcp desc to show server and tool descriptions
Analysons cette réponse indiquant que l'opération a réussi :
🟢 nano-banana
: le cercle vert est notre signal de réussite. Cela confirme que la CLI a pu accéder au serveurnano-banana
à l'URL que nous avons spécifiée danssettings.json
.- Ready
: cet état confirme que la connexion est stable.(2 tools)
: il s'agit de la partie la plus importante. Cela signifie que la CLI s'est non seulement connectée, mais qu'elle a également demandé à notre serveur MCP : "Que sais-tu faire ?" Notre serveur a répondu en annonçant les deux outils que nous avons vus dans son code :generate_image
etgenerate_lip_sync_images
.
Cela confirme que l'ensemble de la chaîne de communication est établi. La CLI connaît désormais notre service local de génération d'images et est prête à l'utiliser sur commande.
Passons maintenant à la partie la plus créative de l'atelier. Nous utiliserons une seule requête puissante pour demander à la CLI Gemini d'utiliser l'outil spécial generate_lip_sync_images
sur notre serveur MCP en cours d'exécution.
C'est l'occasion de concevoir l'apparence unique de votre compagnon. Pensez à son style, à la couleur de ses cheveux, à son expression et à tout autre détail correspondant à la personnalité que vous avez créée précédemment.
👉✨ Voici un exemple de requête bien structurée. Vous pouvez l'utiliser comme point de départ ou remplacer entièrement la partie descriptive par votre propre vision.
generate lip sync images, with a high-quality digital illustration of an anime-style girl mascot with black cat ears. The style is clean and modern anime art, with crisp lines. She has friendly, bright eyes and long black hair. She is looking directly forward at the camera with a gentle smile. This is a head-and-shoulders portrait against a solid white background. move the generated images to the static/images directory. And don't do anything else afterwards, don't start the python for me.
L'outil génère un ensemble d'images (bouche ouverte, fermée, etc.) et les enregistre. Il affichera les chemins d'accès aux fichiers enregistrés.
Relancer l'application
Une fois vos avatars personnalisés en place, vous pouvez redémarrer le serveur Web pour voir le nouveau look de votre personnage.
👉💻 Démarrez le serveur une dernière fois dans votre premier terminal.
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 Pour que vos nouvelles images se chargent correctement, nous allons charger l'image char-mouth-open.png
à l'avance.
- Laissez l'onglet d'aperçu Web de votre application ouvert.
- Ouvrez un nouvel onglet de navigateur.
- Dans ce nouvel onglet, collez l'URL de votre application, mais ajoutez le chemin d'accès suivant à la fin :
/static/images/char-mouth-open.png
.Par exemple, votre URL ressemblera à ceci :https://5000-cs-12345678-abcd.cs-region.cloudshell.dev/static/images/char-mouth-open.png
- Appuyez sur Entrée. Seule l'image du personnage avec la bouche ouverte doit s'afficher. Cette étape permet de s'assurer que votre navigateur a correctement récupéré les fichiers de votre instance Cloud Shell.
Vous pouvez désormais interagir avec votre compagnon personnalisé visuellement.
Félicitations !
Vous avez réussi à créer un compagnon IA sophistiqué. Vous avez commencé avec une application de base, utilisé la CLI Gemini pour créer un agent, lui avez donné une personnalité riche et l'avez doté d'outils pour accéder à des informations en temps réel et même générer son propre avatar. Vous êtes maintenant prêt à créer des agents d'IA encore plus complexes et performants.