Utiliser ChatGPT avec PowerShell pour coder plus efficacement
Sommaire
I. Présentation
Si vous cherchez comment utiliser ChatGPT à partir de PowerShell, alors vous êtes au bon endroit ! Le module PowerShell nommé PowerShellAI intègre différentes commandes pour solliciter GPT-3, GPT-4 ainsi que DALL-E ! Ce qui revient, en quelque sorte, à utiliser ChatGPT depuis PowerShell ! Allez, je me risque à écrire cet article !
Même si les réponses obtenues sont toujours à vérifier et à analyser, notamment pour bien comprendre ce que l'on fait, s'appuyer sur l'intelligence artificielle de ChatGPT pour coder en PowerShell peut s'avérer très pratique au quotidien ! Voici quelques usages :
- Obtenir de l'aide ou des exemples sur une commande
- Obtenir une liste de valeurs ou des informations diverses et variées
- Demander une explication sur la dernière commande exécutée
- Obtenir des explications sur la dernière erreur PowerShell rencontrée
- Générer une image à partir d'une simple description
Pour fonctionner, le module PowerShellAPI sollicite les modèles de langage d'OpenAI via l'API. De ce fait, si vous utilisez la version gratuite de ChatGPT, vous avez le droit à un forfait limité mais qui se consomme très lentement...rassurez-vous.
Retrouvez le module PowerShellAI sur GitHub :
II. Installer le module PowerShellAI
Puisque PowerShell est multiplateforme, ce module est disponible sur Windows, Linux et macOS. Toutefois, vous avez le choix entre utiliser Windows PowerShell 5.1 (sous Windows) ou une version supérieure de PowerShell. Dans cet exemple, mon PC est sous Windows 11 22H2 et j'utilise PowerShell 7.3.5.
Pour installer le module PowerShellAI, vous pouvez utiliser la méthode habituelle :
Install-Module -Name PowerShellAI
Puis, vous pouvez importer ce module avec la commande suivante :
Import-Module PowerShellAI
Ce module contient de nombreuses commandes. La liste complète est accessible avec cette commande :
Get-Command -Module PowerShellAI
Il ne suffit pas d'installer ce module PowerShell afin de pouvoir l'utiliser. Vous avez besoin d'une clé d'API qu'il faut générer à partir de votre compte OpenAI. Pour cela, accédez à la page suivante et connectez-vous à votre compte OpenAI :
Cliquez sur "Create new secret key".
Donnez un petit nom à cette nouvelle clé secrète, par exemple "PowerShell".
La clé secrète va apparaître à l'écran : copiez la valeur, et gardez-la au chaud (dans votre gestionnaire de mots de passe, par exemple). Elle ne sera pas récupérable par la suite, donc si vous la perdez, vous devez supprimer la clé et en créer une nouvelle.
Dans la console PowerShell ou au début de votre script, tout dépend ce que vous faites, indiquez cette commande :
$env:OpenAIKey = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx"
Elle aura pour effet de créer une variable d'environnement (temporaire) nommée "OpenAIKey" et qui aura pour valeur votre clé d'API OpenAI. Grâce à cela, le module PowerShellAI peut solliciter les intelligences artificielles d'OpenAI !
Vous êtes prêt pour la suite !
III. Interroger ChatGPT avec PowerShell
A. Chater avec (Chat)GPT en PowerShell
Commençons par la base : interroger le modèle de langage GPT-3, comme on le fait au travers de ChatGPT, pour lui poser une question. Pour cela, le module PowerShellAI propose d'utiliser la commande "Get-GPT3Completion" ou son alias "gpt". La commande "Get-GPT4Completion" sert à solliciter GPT-4 mais il faut disposer d'un abonnement à ChatGPT Plus.
Par exemple :
gpt "Qu'est-ce que PowerShell ?"
Ce qui donne le résultat suivant :
Bien que cet usage soit possible, ce n'est pas forcément ce qui va m'intéresser le plus : pour une question de ce type, autant utiliser l'interface web de ChatGPT ou passer par Bing Chat.
Par contre, vous pouvez solliciter l'intelligence artificielle pour obtenir de l'aide sur une commande, ou des exemples sur l'utilisation d'une commande. Ceci représente un complément à l'utilisation de la commande Get-Help intégrée nativement à PowerShell.
gpt "Peux-tu m'expliquer la commande New-LocalUser ?" gpt "Peux-tu me montrer un exemple d'utilisation de New-LocalUser ?" gpt "Peux-tu m'expliquer la commande New-LocalUser et me montrer un exemple ?"
Voici le résultat obtenu :
L'exemple retourné est correct. Par contre, l'explication de la commande est partiellement correct : la commande New-LocalUser sert à créer un nouveau compte utilisateur local, mais elle ne sert pas à modifier ou supprimer un compte. Pour ces deux dernières actions, il y a d'autres commandes dédiées (voir cet article sur la gestion des comptes utilisateurs locaux avec PowerShell).
Au-delà de solliciter GPT, PowerShellAI peut aussi solliciter sa copine DALL-E pour générer une image à partir d'une simple description. A partir de PowerShell, je n'ai pas encore trouvé d'intérêt, mais sachez que c'est possible.
Get-DalleImage "une image d'un ordinateur volant dans la foret"
IV. Générer du code PowerShell avec ChatGPT...depuis PowerShell
On pourrait utiliser la commande "gpt" pour s'appuyer sur GPT pour générer du code PowerShell. Toutefois, il y a une commande beaucoup plus sympathique : copilot. Cette commande va permettre de générer du code PowerShell (ou dans un autre langage), tout en proposant de l'exécuter immédiatement, de le copier, ou de l'expliquer. De plus, le code retourné bénéficie de la coloration syntaxique, ce qui n'est pas le cas si l'on utilise la commande "gpt".
Voici un exemple :
copilot "écrit moi une fonction PowerShell pour obtenir un prénom aléatoirement"
On peut voir que le résultat est parfaitement lisible et que plusieurs actions sont proposées.
Par exemple, on peut copier le bout de code pour le coller dans VSCode ou PowerShell ISE afin de l'utiliser. La fonction PowerShell générée est correcte et fonctionnelle.
Pour générer du code PowerShell ou obtenir des exemples, la commande "copilot" est vraiment cool. Je pense qu'il y a un vrai potentiel pour apprendre et progresser, mais aussi pour combler nos trous de mémoire, tout en restant dans la console PowerShell. A condition que GPT n'effectue pas trop d'erreurs... D'où l'intérêt de regarder plusieurs sources.
On peut également solliciter Copilot pour améliorer du code en utilisant la commande "Get-OpenAIEdit".
Par exemple, on peut lui demander d'ajouter une aide à la fonction "Get-RandomName" générée précédemment.
(Get-OpenAIEdit -InputText @' Function Get-RandomName { $Names = @("John", "Jane", "Bob", "Sally", "Tom", "Harry", "Emma", "Olivia", "Noah", "Liam") $RandomName = Get-Random -InputObject $Names return $RandomName } '@ -Instruction 'Ajoute une aide complete a cette fonction').text
Il y a deux paramètres à préciser :
- -InputText : le bout code à améliorer, modifier, donc ici ce sera la fonction
- -Instruction : les consignes pour la modification
Résultat, il m'a retourné le code suivant :
Function Get-RandomName { <# .SYNOPSIS This function returns a random name from a list of names .DESCRIPTION This function returns a random name from a list of names .PARAMETER None .EXAMPLE Get-RandomName .NOTES Author: Thomas Lee #> $Names = @("John", "Jane", "Bob", "Sally", "Tom", "Harry", "Emma", "Olivia", "Noah", "Liam") $RandomName = Get-Random -InputObject $Names return $RandomName }
Ceci permet d'avoir une base qu'il faudra améliorer, mais on gagne tout de même du temps !
V. Obtenir de l'aide sur les erreurs PowerShell
Vous êtes dans la console PowerShell, vous exécutez une commande ou un script, et là, vous obtenez une erreur ? Vous ne parvenez pas à interpréter cette erreur ? Grâce à l'intelligence artificielle, vous pouvez obtenir un premier avis !
La commande "Invoke-AIErrorHelper" de PowerShellAI sollicite GPT pour lui demander d'expliquer l'erreur. C'est pratique car lui il tient compte du contexte pour expliquer l'erreur, et pas seulement du nom de l'erreur en lui-même.
VI. Obtenir des explications sur une commande PowerShell
Dans le même esprit, la commande "Invoke-AIExplain" sert à vous fournir une explication sur la dernière commande exécutée, en tenant compte des valeurs des différents paramètres. Par contre, cette commande fonctionne seulement sur une commande : si vous venez d'exécuter un script, il ne pourra pas être expliqué.
VII. Conclusion
Si vous appréciez ChatGPT et que vous utilisez PowerShell, vous devriez apprécier le module PowerShellAI ! C'est pratique de pouvoir générer des commandes et des fonctions à partir de PowerShell, et d'obtenir des explications sur une erreur ou une commande. On peut gagner du temps grâce à ce module !
A chaque fois que vous sollicitez l'IA via l'API, ceci consomme de votre forfait. Pour voir où vous en êtes, consultez cette page. Malheureusement en version gratuite, le forfait expire au bout de quelques mois (ce qui signifie qu'il faudra payer ou recréer un compte).
Enfin, n'oubliez pas deux choses :
- L'intelligence artificielle ne vous remplacera pas : c'est avant tout un outil
- Ne transmettez pas d'informations confidentielles quand vous sollicitez GPT
Bravo à Doug Finke, l'auteur de ce module (qui est aussi l'auteur de l'excellent module ImportExcel), pour son travail.
J’ai un peu peur en tant que scripteur en herbe de vite me faire dépasser par notre ami ChatGPT à force
J’ai déjà testé ChatGPT pour de la correction de code PS et de l’aide avancé sur certaines commandes Shell. Les réponses ont été bien inutiles ! J’imagine un intérêt pour les débutants ou ceux qui n’ont pas usage du shell régulièrement. Peut-être copilot fera t-il mieux ? A ce jour, pour moi, rien ne remplace le « jus de cerveau ». Mais c’est effectivement une étape de plus vers la fin des sysadmins et de la main-mise des IA (et des grosses sociétés capitalistes) sur les OS. La réglementation arrivera trop tard comme d’habitude.
Bonjour,
je rencontre un message d’erreur : le voici !
PS C:\Users\Administrateur> gpt « Qu’est-ce que PowerShell ? »
Invoke-RestMethod: {
« error »: {
« message »: « You exceeded your current quota, please check your plan and billing details. »,
« type »: « insufficient_quota »,
« param »: null,
« code »: « insufficient_quota »
}
}
Quelqu’un serait pourquoi ?
Merci
Hello Nicolas G,
Visiblement c’est un problème avec ton quota sur ton compte OpenAI. Jette un coup d’oeil et tu auras surement l’explication.
Salut,
J’ai la même chose que toi, pourtant je peux toujours faire des requêtes sur OpenAI
Sur platform.openai.com > usage il est clairement indiqué: « In order to use the OpenAI API, you need to set up a paid account. »
A vérifier mais je pense qu’enregistrer sa carte de crédit suffit sans pour autant devoir payer quoi que ce soit.
Le service est gratuit jusqu’à 18dollars (tu peux utiliser pendant longtemps avant d’atteindre les 18 dollars) mais pour faire fonctionner ChatGPT avec une API dans PowerShell, tu as besoin d’ajouter une carte bancaire valide sur ton compte ChatGPT (Virement de 0euros), puis tu peux suivre ta consommation sur le site de ChatGPT.
Il semble que vous ayez dépassé la limite d’utilisation autorisée et que vous devriez vérifier les détails de votre abonnement ou de votre facturation pour ce service. Si le service que vous utilisez est payant, il est possible que vous deviez augmenter votre plan ou attendre la période de renouvellement de votre quota. C’est tout.
Doug Finke a fait un super boulot avec ce module qui évolue très régulièrement.
Je vous invites a chercher ces vidéos sur YouTube
Bonjour,
J’ai créé mon compte en début d’année et dans l’onglet « usage » il est mentionné « expired 1 avril 2023 ».
Donc les 18$ ne sont pas utilisables longtemps et sont perdus d’où le message d’erreur.
Niveau prix pour l’API apparemment c’est au token : 1000tokens environ 750mots.
Les prix sont différents entre ce que vous envoyez et ce qu’il répond.
https://openai.com/pricing
Oui, j’ai aussi le problème de quota dans Powershell sans l’avoir utilisé..à voir en recréant un autre compte, mais évidement l’enregistrement de la carte bancaire va restreindre cela si c’est obligatoire pour l’utiliser par Powershell.
De toute façon il n’y a rien de gratuit, sinon c’est nous le produit …
Hello,
J’ai rencontré le même cas, avec l’expiration du quota (en version gratuite). J’ai recréé un compte sans problème et je n’ai jamais indiqué mes infos de carte bancaire. 🙂
Bonjour Florian,
Merci pour tous ces excellents articles et cours.
J’essaie d’installer PowerShellAI mais il n’est pas/plus dans PSGallery. A t il été retiré ?
Cordialement,
Devezhmat
Bonjour,
Je pense que l’auteur du module PowerShellAI a abandonné son projet, mais il semble travailler sur une nouvelle version :
https://github.com/dfinke/PSAI
A tester, mais cela semble être dans le même esprit que PowerShellAI… Je suis preneur de retour!