15/11/2024

PowerShell

Utiliser ChatGPT avec PowerShell pour coder plus efficacement

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

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

ChatGPT - Créer une clé API

Donnez un petit nom à cette nouvelle clé secrète, par exemple "PowerShell".

ChatGPT - Créer une clé API pour 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 :

PowerShell GPT

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 :

PowerShell GPT-3

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"

PowerShell Dall-E - Générer une image

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.

PowerShell Copilot - Générer du code

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.

PowerShell Copilot - Tester le code

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.

PowerShell copilot créer compte AD

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.

PowerShell ChatGPT - Invoke-AIErrorHelper

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

PowerShell ChatGPT - Invoke-AIExplain

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

ChatGPT - API Usage

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.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

14 commentaires sur “Utiliser ChatGPT avec PowerShell pour coder plus efficacement

  • J’ai un peu peur en tant que scripteur en herbe de vite me faire dépasser par notre ami ChatGPT à force

    Répondre
  • 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.

    Répondre
  • 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

    Répondre
    • 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.

      Répondre
    • Salut,

      J’ai la même chose que toi, pourtant je peux toujours faire des requêtes sur OpenAI

      Répondre
    • 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.

      Répondre
    • 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.

      Répondre
    • 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.

      Répondre
  • 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

    Répondre
  • 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

    Répondre
  • 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 …

    Répondre
    • 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. 🙂

      Répondre
  • 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

    Répondre
    • 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!

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.