#CLI#IA#Open Source

Jimmy : Une CLI minimaliste pour intégrer l'IA dans tes workflow

5 min read
Résumé IA

Générez un résumé de cet article en un clic.

Si tu es dev, ingénieur DevOps, ou juste un passionné d'automatisation, tu sais à quel point ça peut être un véritable super-pouvoir d'avoir l'IA accessible directement depuis ton terminal. Aujourd'hui, on va parler d'un petit projet open-source ultra pratique que j'ai dev un petit tools : Jimmy.

Il s'agit d'une interface en ligne de commande conçue spécifiquement pour interagir de manière fluide, rapide et scriptable avec l'API de ChatJimmy.ai.

Qu'est-ce que "Jimmy" exactement ?

Le projet Jimmy se définit comme une CLI minimaliste et "workflow-friendly". L'objectif ici n'est pas de t'encombrer avec une énième interface graphique lourde, mais de te donner un moyen direct de discuter avec un LLM (Large Language Model) depuis n'importe quel environnement de travail.

Zéro dépendance

Pour fonctionner, Jimmy s'appuie uniquement sur des outils standards que tu as très probablement déjà sur ta machine : curl pour taper l'API via HTTP et python3 (>= 3.6) pour parser proprement les retours JSON. Petit bonus : l'outil jq est aussi supporté pour formater les retours sur les systèmes Unix si tu l'as d'installé.

Support multi-plateforme

Le repo te propose deux scripts prêts à l'emploi :

  • jimmy.sh (compatible Bash et Zsh) pour tes environnements Unix/Mac.
  • jimmy.ps1 dédié à Windows (nécessite PowerShell 7+).

Conçu pour les pipelines

C'est là que ça devient vraiment puissant pour l'automatisation. L'outil sépare intelligemment la sortie standard (stdout), qui contient la réponse utile de l'IA (en JSON structuré ou texte brut), de la sortie d'erreur (stderr), réservée aux logs et à l'aide. Résultat ? Tu peux chainer tes commandes facilement sans polluer tes variables.

Analyse de fichiers locaux embarquée

Tu as besoin de résumer un document ou d'analyser un fichier de log craché par ton app ? Tu peux directement attacher un fichier texte (jusqu'à 50 Ko) dans ta commande grâce à l'argument --file.

Installation en une commande

Pas besoin de cloner tout le repo si tu veux juste tester. Tu peux récupérer le script directement et l'exécuter immédiatement.

Linux / macOS

curl -fsSL -o jimmy.sh https://raw.githubusercontent.com/benoitpetit/jimmy/main/jimmy.sh chmod +x jimmy.sh

Puis lance-le directement :

./jimmy.sh --chat "Hello Jimmy" --output raw --quiet

Windows (PowerShell 7+)

Invoke-WebRequest -Uri "https://raw.githubusercontent.com/benoitpetit/jimmy/main/jimmy.ps1" -OutFile "jimmy.ps1"

Puis exécute :

.\jimmy.ps1 --chat "Hello Jimmy" --output raw --quiet

One-shot : zéro installation, zéro trace

Si tu veux juste tester Jimmy sans laisser le moindre fichier sur ta machine, voici des commandes one-shot qui téléchargent, exécutent et nettoient automatiquement dans un dossier temporaire.

Linux / macOS

bash -c 'd=$(mktemp -d) && curl -fsSL -o "$d/jimmy.sh" https://raw.githubusercontent.com/benoitpetit/jimmy/main/jimmy.sh && chmod +x "$d/jimmy.sh" && "$d/jimmy.sh" --chat "Explique la relativité restreinte en 2 phrases" --topk 8 --output raw --quiet; rm -rf "$d"'

Breakdown :

ÉtapeAction
mktemp -dCrée un dossier temporaire unique
curl -fsSLTélécharge le script officiel
chmod +xRend le script exécutable
"$d/jimmy.sh" --chat ... --topk 8Exécute avec le prompt et le topK max
rm -rf "$d"Supprime le dossier temporaire = zéro trace

Windows (PowerShell 7+)

powershell -Command "$d=[System.IO.Path]::GetTempPath() + [System.IO.Path]::GetRandomFileName(); New-Item -ItemType Directory -Path $d | Out-Null; $f='$d\jimmy.ps1'; Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/benoitpetit/jimmy/main/jimmy.ps1' -OutFile $f; & $f --chat 'Explique la relativité restreinte en 2 phrases' --topk 8 --output raw --quiet; Remove-Item -Recurse -Force $d"

Breakdown :

ÉtapeAction
GetTempPath() + GetRandomFileName()Crée un dossier temporaire unique
Invoke-WebRequestTélécharge le script officiel
& $f --chat ... --topk 8Exécute avec le prompt et le topK max
Remove-Item -Recurse -ForceSupprime le dossier temporaire = zéro trace

Comment ça marche ?

L'architecture est volontairement simple et robuste. Quand tu lances une commande, Jimmy construit un payload JSON avec ton message, le modèle sélectionné (par défaut llama3.1-8B), tes éventuelles instructions système (systemPrompt), et gère l'encodage du fichier si tu en as fourni un.

Il attaque ensuite l'API de ChatJimmy.ai en asynchrone (mode stream). À la réception, un peu de magie avec des expressions régulières et Python permet de parser la réponse pour extraire le texte généré, mais aussi des stats très sympas (nombre de tokens, vitesse de décodage, durée de la requête).

Exemples d'utilisation

L'utilisation est est simple. Voici un petit aperçu :

Poser une question simple et récupérer du texte brut

# Linux / macOS ./jimmy.sh --chat "Explique-moi la théorie de la relativité restreinte en 2 phrases" --output raw --quiet # Windows .\jimmy.ps1 --chat "Explique-moi la théorie de la relativité restreinte en 2 phrases" --output raw --quiet

Chainer avec des outils de parsing

Grâce à la séparation stdout / stderr, tu peux pipe la réponse JSON sans problème :

# Linux / macOS avec jq ./jimmy.sh --quiet --chat "Quelle est la capitale de la France ?" | jq -r '.response' # -> Paris # Windows avec ConvertFrom-Json .\jimmy.ps1 --quiet --chat "Quelle est la capitale de la France ?" | ConvertFrom-Json | Select-Object -ExpandProperty response # -> Paris

Jouer avec les paramètres de l'IA

Tu peux facilement changer la "personnalité" du modèle avec le system prompt ou ajuster la créativité avec le topK :

# Linux / macOS ./jimmy.sh --quiet --system "Tu parles comme un pirate informatique des années 90" --topk 8 --chat "Comment on hack un mainframe ?" # Windows .\jimmy.ps1 --quiet --system "Tu parles comme un pirate informatique des années 90" --topk 8 --chat "Comment on hack un mainframe ?"

Analyser un fichier local

Tu peux directement attacher un fichier texte (max 50 Ko) pour l'analyser :

# Linux / macOS ./jimmy.sh --quiet --file rapport_hebdo.txt --chat "Fais-moi un résumé de ce document en 3 points à puces" # Windows .\jimmy.ps1 --quiet --file rapport_hebdo.txt --chat "Fais-moi un résumé de ce document en 3 points à puces"

Une intégration parfaite en CI/CD

L'un de mes cas d'usage préférés est l'intégration dans des pipelines comme GitHub Actions.

Imagine pouvoir générer automatiquement un résumé compréhensible des CHANGELOG.md à chaque nouvelle release. Le dépôt te fournit un exemple prêt à l'emploi où Jimmy est appelé dans un workflow, et son résultat est injecté directement dans le résumé de l'exécution ($GITHUB_STEP_SUMMARY) via jq.

Conclusion

Avec Jimmy, l'idée est de respecter la philosophie Unix : faire une seule chose, mais la faire bien. Sans lourdeur et avec une compatibilité maximale, cette CLI est une super solution pour automatiser tes interactions avec ChatJimmy.ai.

Si tu cherches à booster ta productivité ou à injecter un peu d'IA dans tes scripts d'admin système, n'hésite pas à cloner le dépôt, à tester tout ça et à lâcher une petite étoile sur le repo GitHub : github.com/benoitpetit/jimmy.