Maîtrisez l'API Google Gemini depuis votre terminal
Google Gemini est la famille de modèles d'IA la plus avancée de Google, capable de comprendre et de traiter du texte, du code, des images et bientôt de la vidéo. Alors que les interfaces web comme Google AI Studio sont excellentes pour l'expérimentation, l'utilisation de Gemini en ligne de commande (CLI) débloque un potentiel immense pour les développeurs, les administrateurs système et les power-users.
Les avantages du CLI :
grep, jq, sed).L'accès en ligne de commande aux modèles de Google n'est pas nouveau, mais il a considérablement évolué.
gcloud ou curl. C'était puissant mais fragmenté.gemini, mais plutôt des méthodes d'accès via des outils standards, principalement curl pour la flexibilité et gcloud pour l'intégration à l'écosystème Google Cloud.Pour interagir avec Gemini, vous avez deux approches principales. Nous allons configurer les deux.
Vous aurez besoin d'un compte Google et d'un projet sur la Google Cloud Platform. Assurez-vous que la facturation est activée (un généreux quota gratuit est souvent disponible).
export API_KEY="VOTRE_CLÉ_API_ICI"
gcloud auth login
VOTRE_ID_PROJET par l'ID de votre projet GCP)gcloud config set project VOTRE_ID_PROJET
gcloud services enable aiplatform.googleapis.com
Envoyons notre première requête à Gemini pour lui demander de nous raconter une blague.
Cette méthode appelle directement le point de terminaison de l'API REST.
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts":[{
"text": "Raconte-moi une blague sur les programmeurs."
}]
}]
}' \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${API_KEY}"
Pour rendre la sortie plus lisible, vous pouvez la "piper" dans l'outil jq (à installer séparément) :
# ... (commande curl précédente) | jq .
Avec gcloud, nous préparons généralement les données d'entrée dans un fichier JSON.
1. Créez un fichier nommé prompt.json :
{
"contents": [{
"role": "user",
"parts": [{
"text": "Raconte-moi une blague sur les programmeurs."
}]
}]
}
2. Lancez la commande gcloud : (Remplacez us-central1 par votre région)
gcloud ai models predict gemini-1.0-pro \
--region="us-central1" \
--json-request="prompt.json"
"contents". C'est un tableau qui contient l'historique de la conversation. Chaque élément a des "parts", qui peuvent contenir du "text" ou des données d'image ("inlineData").
La vraie puissance de Gemini réside dans sa multimodalité. Voici comment l'exploiter.
Demandons à Gemini de décrire une image. Pour cela, nous devons fournir l'image encodée en base64.
1. Encodez votre image en base64 : (ex: mon_image.jpg)
# Sur Linux ou macOS
base64 mon_image.jpg > image_b64.txt
# Sur Windows (PowerShell)
[convert]::ToBase64String([IO.File]::ReadAllBytes("mon_image.jpg")) | Out-File -FilePath image_b64.txt
2. Créez un fichier image_prompt.json :
{
"contents": [
{
"parts": [
{"text": "Décris ce qu'il y a sur cette image en une phrase."},
{
"inline_data": {
"mime_type": "image/jpeg",
"data": "COLLEZ_LE_CONTENU_DE_image_b64.txt_ICI"
}
}
]
}
]
}
3. Lancez la commande avec le modèle "pro-vision" :
# Avec gcloud (recommandé pour les images)
gcloud ai models predict gemini-1.0-pro-vision \
--region="us-central1" \
--json-request="image_prompt.json"
Exemple de requête : "Décris cette image."
Réponse attendue de Gemini : "Un paysage abstrait avec un ciel bleu, des collines vertes et un soleil jaune."
Pour un chat, il suffit d'ajouter les tours de parole (utilisateur et modèle) dans le tableau "contents".
Fichier chat.json :
{
"contents": [
{
"role": "user",
"parts": [{"text": "Bonjour Gemini. Mon langage de programmation préféré est Python."}]
},
{
"role": "model",
"parts": [{"text": "Bonjour ! Python est un excellent choix, très polyvalent."}]
},
{
"role": "user",
"parts": [{"text": "Peux-tu me donner un exemple de 'list comprehension' basé sur mon langage préféré ?"}]
}
]
}
La commande est la même, mais Gemini aura maintenant le contexte des messages précédents pour formuler sa réponse.
gcloud ai models predict gemini-1.0-pro \
--region="us-central1" \
--json-request="chat.json"
Vous pouvez affiner le comportement du modèle avec le bloc "generationConfig".
Fichier controlled_prompt.json :
{
"contents": [{
"parts": [{"text": "Écris une très courte histoire de science-fiction."}]
}],
"generationConfig": {
"temperature": 0.9,
"topK": 40,
"topP": 0.95,
"maxOutputTokens": 150,
"stopSequences": ["FIN."]
}
}
Explication des paramètres :
temperature: (0.0 - 1.0) Plus c'est élevé, plus la réponse est créative et aléatoire.maxOutputTokens: Limite la longueur de la réponse pour contrôler les coûts et le temps.stopSequences: Chaînes de caractères qui, si générées, arrêtent la réponse.Voici des "recettes" prêtes à l'emploi pour des tâches courantes.
Utilisez un script shell pour lire un fichier et le passer à Gemini.
# Créez un script `summarize.sh`
#!/bin/bash
TEXT_CONTENT=$(cat "$1")
API_KEY="VOTRE_CLÉ_API_ICI"
curl -s -X POST \
-H "Content-Type: application/json" \
-d "{
'contents': [{
'parts':[{
'text': 'Résume le texte suivant en trois points clés : \n\n${TEXT_CONTENT}'
}]
}]
}" \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${API_KEY}" | jq -r '.candidates[0].content.parts[0].text'
# Utilisation : ./summarize.sh mon_fichier.txt
# Fichier `generate_code.json`
{
"contents": [{
"parts": [{"text": "Écris une fonction Python nommée `is_palindrome` qui prend une chaîne de caractères et retourne True si c'est un palindrome, sinon False. Inclus des docstrings et des exemples d'utilisation."}]
}]
}
# Lancer la commande gcloud...
# Fichier `translate.json`
{
"contents": [{
"parts": [{"text": "Traduis la phrase suivante en japonais : 'The quick brown fox jumps over the lazy dog.'"}]
}]
}
# Lancer la commande gcloud...
# Fichier `extract_json.json`
{
"contents": [{
"parts": [{"text": "Extrait le nom de l'expéditeur, l'objet et un résumé d'une phrase de l'email suivant. Fournis la réponse exclusivement en format JSON avec les clés 'sender', 'subject', et 'summary'.\n\nEmail : \nDe : support@example.com\nObjet : Mise à jour de votre compte\nBonjour, votre mot de passe a été réinitialisé avec succès."}]
}]
}
# Lancer la commande gcloud...
export API_KEY="...") ou des gestionnaires de secrets comme Google Secret Manager.maxOutputTokens pour éviter des réponses excessivement longues et coûteuses. Surveillez votre consommation sur la console Google Cloud.curl) ou le statut de la réponse (pour gcloud). L'API peut renvoyer des erreurs pour des contenus non sécurisés (safety settings).gemini-pro: Le meilleur pour la plupart des tâches textuelles et de code.gemini-pro-vision: Indispensable lorsque votre prompt inclut des images.jq : Cet outil est votre meilleur ami pour parser et extraire des informations des réponses JSON de l'API. Apprenez ses bases !
L'utilisation de Google Gemini en ligne de commande transforme le modèle d'IA d'un simple "chatbot" en un outil de productivité puissant et programmable. En maîtrisant curl et gcloud, vous pouvez intégrer l'intelligence de Gemini dans n'importe quel flux de travail, automatiser des tâches complexes et innover bien au-delà des limites d'une interface graphique.
L'exploration ne fait que commencer. Expérimentez avec les prompts, combinez Gemini avec d'autres outils et construisez les automatisations de demain, directement depuis votre terminal.
Pour aller plus loin :