Guide ZX7 Complet pour la Ligne de Commande

Maîtrisez l'API Google Gemini depuis votre terminal

Introduction : Pourquoi la Ligne de Commande ?

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 :

Flux de travail typique en CLI

[Votre Terminal]       [CLI (curl / gcloud)]       [API Google AI]       [Modèle Gemini]

Historique et Évolution

L'accès en ligne de commande aux modèles de Google n'est pas nouveau, mais il a considérablement évolué.

  1. Premières APIs (Cloud AI) : Les premières interactions se faisaient via des APIs spécifiques (ex: Cloud Natural Language API) avec des outils comme gcloud ou curl. C'était puissant mais fragmenté.
  2. Montée des LLMs (PaLM) : Avec l'avènement des grands modèles de langage comme PaLM, l'accès s'est unifié autour de l'API Vertex AI, rendant les appels plus génériques.
  3. L'ère Gemini : Gemini représente un bond en avant. Il est "multimodal natif", ce qui signifie qu'un seul modèle peut gérer différents types de données. L'API a été conçue pour refléter cette flexibilité, et les outils CLI ont suivi. Aujourd'hui, il n'existe pas une unique commande 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.

Installation et Configuration

Pour interagir avec Gemini, vous avez deux approches principales. Nous allons configurer les deux.

Prérequis Commun : Un Projet Google Cloud

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).

Option 1 : Pour l'accès via `curl` (Google AI Studio)

  1. Allez sur Google AI Studio.
  2. Connectez-vous et cliquez sur "Create API key".
  3. Copiez cette clé et conservez-la en lieu sûr. Ne la partagez jamais publiquement !
  4. Pour la facilité d'utilisation, stockez-la dans une variable d'environnement :
export API_KEY="VOTRE_CLÉ_API_ICI"

Option 2 : Pour l'accès via `gcloud` (Vertex AI)

  1. Installez le SDK Google Cloud : Suivez les instructions officielles pour installer `gcloud` CLI sur votre système.
  2. Authentifiez-vous :
gcloud auth login
  1. Configurez votre projet par défaut : (Remplacez VOTRE_ID_PROJET par l'ID de votre projet GCP)
gcloud config set project VOTRE_ID_PROJET
  1. Activez l'API Vertex AI :
gcloud services enable aiplatform.googleapis.com
Quand utiliser quoi ?
- `curl` + Clé d'API : Idéal pour des tests rapides, des scripts simples, et pour utiliser les modèles `gemini-pro` directement via l'API "Generative Language".
- `gcloud` (Vertex AI) : Recommandé pour les applications en production, l'intégration avec d'autres services GCP, la gestion fine des permissions (IAM) et l'accès à plus d'options de configuration.

Commandes de Base : Votre Premier Prompt

Envoyons notre première requête à Gemini pour lui demander de nous raconter une blague.

Méthode 1 : `curl` et Clé d'API (Universel)

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 .

Méthode 2 : `gcloud` (Intégration Vertex AI)

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"
Anatomie d'une requête :
La structure clé est l'objet "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").

Exemples Pratiques Multimodaux

La vraie puissance de Gemini réside dans sa multimodalité. Voici comment l'exploiter.

Analyser une Image

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"
Paysage abstrait

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."

Maintenir une Conversation

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"

Contrôler la Sortie (Température, Tokens)

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 :

Le Cookbook du Développeur

Voici des "recettes" prêtes à l'emploi pour des tâches courantes.

Recette 1 : Résumer un long texte

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

Recette 2 : Générer du code

# 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...

Recette 3 : Traduction

# 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...

Recette 4 : Extraire des informations structurées (JSON)

# 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...

Bonnes Pratiques et Astuces

Conclusion

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 :