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.ps1dé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 :
| Étape | Action |
|---|---|
mktemp -d | Crée un dossier temporaire unique |
curl -fsSL | Télécharge le script officiel |
chmod +x | Rend le script exécutable |
"$d/jimmy.sh" --chat ... --topk 8 | Exé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 :
| Étape | Action |
|---|---|
GetTempPath() + GetRandomFileName() | Crée un dossier temporaire unique |
Invoke-WebRequest | Télécharge le script officiel |
& $f --chat ... --topk 8 | Exécute avec le prompt et le topK max |
Remove-Item -Recurse -Force | Supprime 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.
