In questo articolo, Ari Mahpour spiega come utilizzare al meglio ChatGPT per lo scripting in Altium nel linguaggio DelphiScript.
Ormai sono passati alcuni mesi da quando le persone hanno iniziato a familiarizzare con la Generative AI e, soprattutto, con ChatGPT. Nel mio ultimo articolo, Using ChatGPT for Automated Testing, ho presentato il servizio ChatGPT, mostrato come prendere confidenza con esso e come usarlo per generare codice per eseguire test sul proprio hardware. In questo articolo vedremo come utilizzare al meglio ChatGPT per scrivere codice DelphiScript ed eseguire funzioni automatizzate all’interno di Altium stesso tramite Altium Scripting.
Prima di addentrarci nell’implementazione, è importante capire con cosa abbiamo a che fare. Altium Scripting è supportato al meglio tramite DelphiScript (rispetto ad altri linguaggi). Sebbene una rapida ricerca online restituisca risultati come “È il 2022: non è ora che tu inizi a programmare in Delphi?” e titoli accattivanti come “Il linguaggio Pascal usato in Delphi è uno dei linguaggi di programmazione più popolari e universali”, io non ho mai visto Delphi usato al di fuori di Altium Designer. Questo non significa che sia un cattivo linguaggio: semplicemente non è diffuso quanto Python, C++ e altri. C’è molto da imparare con un nuovo linguaggio (soprattutto se non si è programmatori di professione), quindi Altium ha messo insieme molte risorse e persino strumenti dedicati alla programmazione in DelphiScript qui. Se vuoi approfondire davvero il linguaggio, le risorse disponibili lì possono esserti utili.
Quando inizi a usare Altium Scripting, ti ritroverai molto rapidamente con un ampio repository di script che potresti voler salvare e/o condividere. Per creare un nuovo progetto di Scripting in Altium Designer, vai su File > New > Script > Script Project. Fai clic con il tasto destro sul progetto appena creato e vai su Add New to Project > Script Unit. Verrà così creato un nuovo file .pas che sarà il tuo script:
Figura 1: Aggiunta di un file di script al progetto esistente
Vorremo salvarlo nel nostro workspace Altium 365. Per prima cosa assicurati di aver salvato il progetto in locale. Dopodiché fai nuovamente clic con il tasto destro sul progetto e vai su History & Version Control > Add Project to Version Control…
Figura 2: Aggiunta del progetto al Workspace Altium 365
Segui poi le istruzioni per salvare il progetto nel tuo Workspace Altium 365. Per ulteriori indicazioni su come scrivere, eseguire e fare il debug del codice DelphiScript all’interno di Altium Designer, consulta la documentazione Altium.
Ora che è tutto pronto, possiamo iniziare. ChatGPT ha il “potenziale” di scrivere completamente del codice DelphiScript dall’inizio alla fine. Uso “potenziale” invece di “capacità” perché non sempre fa tutto correttamente. Prendiamo un esempio semplice in cui chiediamo a ChatGPT di generare uno script in DelphiScript per elencare tutte le net del mio progetto. Ho iniziato con un prompt che era, a dire il vero, piuttosto vago:
Figura 3: Risposta iniziale di ChatGPT
Ha capito automaticamente che volevo elencare tutte le net da un PcbDoc. In realtà le volevo dallo schematico, quindi l’ho corretto:
Figura 4: Uno dei tanti tentativi di ChatGPT di scrivere lo script corretto
Non ho mostrato tutto il codice che ha generato per me, ma quello che è successo dopo è che ho eseguito il codice più volte, ottenendo da Altium Designer errori come “Undeclared Identifier: eNet” oppure “Expected: in For Pin in Component. Pins Do.” Tutto ciò che ho fatto è stato riportare più volte questi errori a ChatGPT e, al quinto tentativo, ha generato il codice che stavo cercando.
È chiaro che non è eccezionale nel generare DelphiScript da zero, ma è in grado di farlo. Tienilo a mente prima di scagliare la tastiera contro il muro per la frustrazione.
ChatGPT può anche essere usato più come una spalla o un programmatore alla pari. Puoi usarlo per analizzare il tuo codice, trovare bug o aiutarti a ritoccare funzioni specifiche. Possiamo prendere un esempio esistente di Altium Scripting e chiedere a ChatGPT di modificarlo in base alle nostre esigenze.
Esistono risorse online (soprattutto ospitate su GitHub) che forniscono esempi di Altium Scripting. Io utilizzerò quelli forniti ufficialmente da Altium. Si trovano qui.
Parto dall’esempio PlaceAPort che si trova in \DelphiScript Scripts\SCH\Sch_Scripts.PrjScr. Ho assegnato a ChatGPT un compito molto banale:
ChatGPT mi ha fornito il codice che soddisfaceva esattamente questa richiesta. A dire il vero è piuttosto semplice se si ha una minima dimestichezza con la programmazione. Rendiamolo un po’ più difficile, in modo da richiedere una conoscenza contestuale di Altium Scripting.
Ecco il mio prompt aggiornato per ChatGPT:
Al primo tentativo fallisce con un Undeclared Identifier:
Figura 5: Errore del debugger di Altium Designer
Glielo faccio presente e lui si scusa, naturalmente. Fallisce di nuovo con un errore “Undeclared identifier: Name” ma, al terzo tentativo, ottengo la mia net label esattamente dove dovrebbe essere:
Figura 6: Nuova net label e porta generate dagli script modificati
È evidente che, con l’aumentare della complessità, diminuiscono le probabilità che ChatGPT produca lo script corretto al primo colpo. Ho però constatato che, con un po’ di perseveranza, alla fine riesce a fare le cose correttamente, soprattutto se lo si aiuta un po’ (supponendo di comprendere il codice che sta generando).
In questo articolo abbiamo iniziato con un’introduzione ad Altium Scripting, visto come creare un progetto e salvarlo nel proprio workspace Altium 365. Abbiamo poi analizzato esempi con ChatGPT in cui ha generato completamente script da zero e anche modificato script che gli avevamo fornito. Abbiamo mostrato le sue capacità e il fatto che non sempre fa tutto correttamente. Pur non essendo perfetto, può certamente fungere da guida lungo il tuo percorso con Altium Scripting. E soprattutto, è decisamente meglio averlo che non averlo affatto.