In passato abbiamo visto come creare comandi personalizzati e come proteggere il terminale con una password, stavolta metteremo mano a PowerShell per integrare nel suo terminale Gemini, il chatbot di intelligenza artificiale di Google.

REQUISITI

- PowerShell 5, già installato di default in Windows 10 e 11; nel caso si usi PowerShell 7, alcuni dati del file del profilo sono leggermente differenti rispetto a quelli di PowerShell 5, che saranno citati a breve. Intanto, queste di seguito sono la cartella e il nome del file del profilo per PowerShell 7:

Come integrare Gemini (chatbot ) PowerShell

Se usate PowerShell 7 in Linux, il percorso è il seguente:

Come integrare Gemini (chatbot ) PowerShell

- Profilo PowerShell, ossia uno script che parte ad ogni avvio del terminale. Per verificare se c'è già un profilo, clicchiamo con il tasto destro sul menu Avvio, apriamo PowerShell ed eseguiamo la procedura illustrata dall'immagine sopra: digitiamo il comando: Test-Path $PROFILE; se l'esito è False, significa che non c'è un profilo e va quindi creato con il comando New-Item -Type File -Path $PROFILE -Force. In PowerShell 5, se andiamo al percorso Documenti\WindowsPowerShell, troveremo il file "Microsoft.PowerShell _profile.ps1" , che possiamo modificare cliccandoci con il destro e scegliendo Modifica. Riavviando PowerShell potrebbe capitare di ottenere un messaggio di errore riguardo l'execution policy, che di default potrebbe non consentire l'esecuzione locale di script, come quello creato per il profilo. In questo caso è opportuno usare il comando Set-ExecutionPolicy -Scope CurrentUser RemoteSigned, ossia sarà possibile eseguire gli script creati localmente, mentre quelli provenienti da altre fonti dovranno essere digitalmente firmati.

Come integrare Gemini (chatbot ) PowerShell

Accettiamo la nuova impostazione digitando "A" o "Y" e riavviamo PowerShell. A questo punto, ad ogni avvio, PowerShell eseguirà il contenuto dello script del profilo che abbiamo creato.

- Chiave API di Gemini, ottenibile gratuitamente da qui utilizzando un account Google. La sua funzione è quella di poter usare il chatbot Gemini senza fare il login nell'account di Google o dover usare un browser e, soprattutto, automatizzare l'interazione con Gemini tramite uno script PowerShell (v. sotto).

- Script GIP, disponibile su GitHub (qui); scarichiamo il codice o semplicemente copiamolo. Chiaramente potete anche personalizzare il codice e i vari prompt per l'AI secondo le vostre esigenze. L'unica modifica essenziale da non dimenticare è quella di inserire nel codice la chiave API, di cui parleremo a breve.

PROCEDURA DI Abilitazione comando "gemini"

  • Copiare il contenuto del file "GIP.txt"
  • incollarlo nel file del profilo PowerShell
  • inserire la propria chiave API alla riga 64 del codice copiato (se il profilo ha già altro codice, la riga non corrisponderà), dopo «key=»; ad esempio «key=123456abcdef..." `»
  • salvare le modifiche al file del profilo
  • avviare PowerShell (o riavviarlo se era già aperto) e controllare che non ci siano errori.

UTILIZZO

Lo script precedentemente incollato nel profilo è una funzione che può essere utilizzata come un comando; se infatti digitiamo nel terminale "Gemini", possiamo scorrere i parametri disponibili usando l'autocompletamento con il tasto Tab (i primi sono quelli impostati dallo script, mentre gli altri sono implementati di default da PowerShell). Proprio come gli altri comandi, anche Gemini ha la sua pagina di "manuale", consultabile digitando Get-Help gemini (oppure Gemini -?), disponibile anche in versione estesa, se si aggiunge il parametro -Full.

Il comando Gemini, se usato senza ulteriori parametri, ci consente di fare una qualunque domanda al chatbot, come se fossimo nel suo sito di Google dopo aver eseguito l'accesso con l'account. Digitiamo la nostra domanda, premiamo Invio e, dopo qualche istante, potremo leggere direttamente nel terminale la risposta di Gemini (i cui colori sono personalizzabili modificando lo script incollato nel profilo PowerShell).

Come integrare Gemini (chatbot ) PowerShell

Da tener presente che, a differenza delle conversazioni che avvengono nel sito, in questo contesto Gemini non ha memoria della nostra domanda precedente, quindi non è possibile creare una conversazione vera e propria, ma solo ottenere risposte singole, isolate dalle precedenti.

Questa limitazione è meno rilevante se consideriamo Gemini come un'assistente di shell, utilizzando i parametri (o meglio, switch) accennati in precedenza, da digitare dopo il comando Gemini e preceduti da un trattino. Vediamoli uno alla volta.

-errore

Se digitiamo un comando errato e riceviamo un messaggio di errore, chiamando in causa Gemini con il parametro "errore" (ovvero usando il comando: Gemini -errore), invieremo automaticamente il testo dell'errore più recente a Gemini, chiedendogli di darci spiegazioni in merito. Le spiegazioni vengono formate con un prompt che chiede prima le possibili cause dell'errore e poi suggerimenti per la correzione.

-ultimo_comando

Se abbiamo utilizzato nel terminale un comando o uno script e non siamo sicuri che fosse corretto e completo o, peggio, temiamo tardivamente possa aver fatto più di quello che ci aspettavamo, possiamo, usando il parametro "ultimo comando", chiedere a Gemini di spiegarci l'ultimo comando eseguito. Il prompt per la spiegazione spinge a Gemini di essere sintetico nel rispondere, tuttavia, come gli altri prompt, è modificabile a piacimento nel codice. Da considerare che questi due parametri, ossia "errore" e "ultimo comando", si riferiscono solo alla sessione corrente.

-spiega

Questo parametro ci consente di interrogare Gemini su comandi o script che non abbiamo ancora eseguito, che magari abbiamo trovato online o di cui non siamo sicuri, che vorremmo eseguire solo dopo aver ben capito il loro funzionamento. La spiegazione di Gemini solitamente ci guida passo passo nella comprensione dei comandi e della sintassi, consigliandoci talvolta persino una versione migliorata del codice proposto.

Se vogliamo chiedere spiegazioni a Gemini riguardo uno script multilinea, non possiamo semplicemente incollarlo, ma è necessario prima convertirlo in un'unica riga di codice, sostituendo i ritorni a capo con il punto e virgola. Una volta ottenuto lo script come unica riga, possiamo copiarlo e incollarlo nel campo della richiesta.

Per trasformare uno script multilinea in un "one-liner", possiamo, ad esempio, usare questo semplice codice:

$a = cat [percorso file]\file.ps1

$b = ($a -split "`r?`n") -join "; "

Assegniamo alla variabile $a il testo dello script originale, per poi assegnare a $b la versione con il ";" che sostituisce le interruzioni di linea ("`r" e "`n"). Non resta quindi che visualizzare il contenuto di $b, copiarlo e incollarlo. Ci sono altri metodi possibili, usando ad esempio "-replace", ma quello citato si è dimostrato molto affidabile.

-tutor

Un parametro che rende Gemini un utile assistente di coding è quello denominato "tutor"; con cui possiamo dichiarare cosa vogliamo ottenere con PowerShell e il chatbot ci suggerirà il codice necessario ai nostri scopi. Questo genere di risposte può essere più lunga delle altre e visualizzarle nel terminale non è il massimo della praticità, anche perché potrebbero essere così interessanti da meritare di essere salvate; per ovviare a questo, ci servirà il prossimo parametro.

- txt

Usando il comando Gemini, con o senza i suddetti parametri, aggiungendo come ulteriore parametro "txt", la risposta non compare nel terminale, bensì viene direttamente aperta, come file temporaneo, nel programma associato ai file txt; file che viene creato al percorso Documenti\Users\[nome utente]\AppData\Local\Temp (visibile abilitando la visualizzazione dei file nascosti). Se abbiamo come programma predefinito Notepad++ o altri simili, potremo visualizzare la risposta di Gemini con la corretta formattazione del markdown utilizzato (a cui si devono ad esempio i numerosi asterischi). Se non abbiamo intenzione di salvare la risposta di Gemini, quando chiudiamo il file, questo viene automaticamente cancellato dalla cartella, evitando che con il tempo questa si intasi di file non necessari. Una volta chiuso il file, possiamo tornare ad utilizzare il medesimo terminale.

Se stiamo usando PowerShell 7, possiamo apportare una piccola modifica al codice nel profilo, in modo da gestire meglio la risposta di Gemini, assegnandola alla variabile $risposta. Apriamo il file del profilo e, alla riga 71 del codice, aggiungiamo "global:" dopo il dollaro e prima di "risposta", in modo da ottenere questa riga:

Come integrare Gemini (chatbot ) PowerShell

Questa modifica salverà la risposta di Gemini nella variabile globale $risposta, che sarà disponibile per tutta la sessione corrente, ossia digitando $risposta nel terminale e premendo Invio, potremo consultare l'ultima risposta ricevuta. Questo rende possibile, ad esempio, inviare la risposta di Gemini a una finestra del browser in modo da visualizzare correttamente la formattazione in markdown, usando il comando $risposta | Show-Markdown -UseBrowser, che può essere accodato anche direttamente al comando Gemini.

Come integrare Gemini (chatbot ) PowerShell

Appena verrà ricevuta la risposta di Gemini, si aprirà il browser predefinito associato alla gestione dei file HTML, che mostrerà la risposta applicando la formattazione markdown.

LIMITAZIONI E PRIVACY

Da considerare che il piano gratuito dell'API ha dei limiti di utilizzo molto generosi; si possono fare fino a 15 richieste al minuto e 1500 al giorno, sebbene siano in gioco anche il limite di richieste al minuto per area geografica, 7000, e quelle di token complessivi al minuto per il piano gratuito, un milione (un token di Gemini equivale circa a 4 caratteri di testo, come spiegato qui).

Come integrare Gemini (chatbot ) PowerShell

Per quanto riguarda invece il trattamento dati dell'API, è da sottolineare che Google stesso ci ricorda di non esporre dati sensibili o importanti quando usiamo l'API gratuita, nonostante Google dichiari di utilizzare comunque misure per tutelare la privacy degli utenti. Inoltre, le interazioni con Gemini saranno usate anche per alimentare il machine learning, oltre che per altri scopi di sviluppo dei prodotti Google.

Da segnalare che l'API tutela la privacy locale dell'utente, nel senso che Gemini non può sapere né sbirciare ciò che accade nel terminale e tantomeno nel computer; gli unici dati che arrivano ai server di Gemini sono, a seconda dei comandi che scegliamo di utilizzare: le nostre domande, o l'ultimo errore registrato, o l'ultimo comando eseguito, su cui chiediamo spiegazioni. Anche se visivamente Gemini sembra parlare ed "essere" nel nostro terminale, in realtà il terminale ospita solo la visualizzazione dell'output delle domande che gli poniamo (contenenti i dati che scegliamo di dargli), che è come fossero poste nel sito di Google e poi incollate automaticamente nel nostro terminale.

VIDEO CON SPIEGAZIONI ED ESEMPI PRATICI