Neste artigo, Ari Mahpour fala sobre como utilizar da melhor forma o ChatGPT para scripts do Altium na linguagem DelphiScript.
A esta altura, já se passaram alguns meses para que as pessoas se familiarizassem com a IA generativa e, mais notavelmente, com o ChatGPT. No meu último artigo, Usando o ChatGPT para Testes Automatizados, apresentei o serviço ChatGPT, mostrei como se familiarizar com ele e utilizá-lo para gerar código a fim de executar testes no seu hardware. Neste artigo, vamos analisar como utilizar o ChatGPT da melhor forma para escrever código em DelphiScript e executar funções automatizadas dentro do próprio Altium usando Altium Scripting.
Antes de mergulharmos na implementação, é importante entender com o que estamos trabalhando aqui. O Altium Scripting tem melhor suporte com DelphiScript (em comparação com outras linguagens). Embora uma busca rápida online traga resultados como “É 2022 — não está na hora de você começar a programar em Delphi?” e títulos chamativos como “A linguagem Pascal usada no Delphi é uma das linguagens de programação mais populares e universais”, eu nunca vi o Delphi ser usado fora do Altium Designer. Isso não quer dizer que seja uma linguagem ruim — apenas não é tão comumente utilizada quanto Python, C++ etc. Há muito a aprender com uma nova linguagem (especialmente se você não for programador de formação), então a Altium reuniu muitos recursos e até ferramentas relacionadas à programação em DelphiScript aqui. Se você quiser se aprofundar na linguagem, os recursos disponíveis lá podem ser úteis.
Ao começar com Altium Scripting, você rapidamente criará um grande repositório de scripts que talvez queira salvar e/ou compartilhar. Para criar um novo projeto de Scripting no Altium Designer, vá para File > New > Script > Script Project. Clique com o botão direito no projeto recém-criado e vá para Add New to Project > Script Unit. Isso criará um novo arquivo .pas, que será o seu script:
Figura 1: Adicionando um arquivo de script ao projeto existente
Vamos querer salvar isso no nosso workspace do Altium 365. Primeiro, certifique-se de que o projeto foi salvo localmente. Depois disso, clique com o botão direito no projeto novamente e vá para History & Version Control > Add Project to Version Control…
Figura 2: Adicionando o projeto ao Workspace do Altium 365
Em seguida, siga as instruções para salvar o projeto no seu Workspace do Altium 365. Para mais instruções sobre como escrever, executar e depurar código DelphiScript no Altium Designer, consulte a documentação da Altium.
Agora que já está tudo pronto, podemos começar. O ChatGPT tem o “potencial” de escrever DelphiScript completamente do início ao fim. Uso “potencial” em vez de “capacidade” aqui porque ele nem sempre acerta. Vamos ver um exemplo simples em que pedimos ao ChatGPT para gerar um script em DelphiScript que liste todas as nets do meu projeto. Comecei com um prompt que, para ser justo, era bem vago:
Figura 3: Resposta inicial do ChatGPT
Ele entendeu automaticamente que eu queria listar todas as nets de um PcbDoc. Na verdade, eu queria isso a partir do esquemático, então corrigi:
Figura 4: Uma das muitas tentativas do ChatGPT de escrever o script correto
Não mostrei todo o código que ele gerou para mim, mas o que aconteceu depois foi eu executar o código várias vezes apenas para ver o Altium Designer falhar com erros como “Undeclared Identifier: eNet” ou “Expected: in For Pin in Component. Pins Do.” Tudo o que fiz foi responder ao ChatGPT com esses erros várias vezes e, na quinta tentativa, ele gerou o código que eu estava procurando.
O que fica claro é que ele não é excelente para gerar DelphiScript do zero, mas é capaz de fazê-lo. Lembre-se disso antes de querer arremessar o teclado na parede de frustração.
O ChatGPT também pode atuar mais como um ajudante ou programador parceiro. Você pode usá-lo para analisar seu código, encontrar bugs ou ajudar a ajustar funções específicas. Podemos pegar um exemplo existente de Altium Scripting e pedir ao ChatGPT que o modifique para atender às nossas necessidades.
Há recursos disponíveis por aí (especialmente hospedados no GitHub) que fornecem exemplos de Altium Scripting. Vou usar os que são oficialmente fornecidos pela Altium. Eles podem ser encontrados aqui.
Estou começando com o exemplo PlaceAPort, localizado em \DelphiScript Scripts\SCH\Sch_Scripts.PrjScr. Dei ao ChatGPT uma tarefa bastante trivial:
O ChatGPT me forneceu o código que seguiu exatamente essa solicitação. Para ser honesto, isso é bem simples se você tiver alguma familiaridade com programação. Vamos dificultar um pouco mais e exigir conhecimento contextual de Altium Scripting.
Aqui está meu prompt atualizado para o ChatGPT:
Ele falha na primeira tentativa com um Undeclared Identifier:
Figura 5: Erro do depurador no Altium Designer
Eu o informo disso e ele pede desculpas, claro. Ele falha novamente com um erro “Undeclared identifier: Name”, mas, na terceira vez, obtenho meu net label exatamente onde ele deveria estar:
Figura 6: Novo net label e port gerados pelos scripts modificados
É óbvio que, com o aumento da complexidade, menores são as chances de o ChatGPT acertar seu script logo na primeira tentativa. Descobri que, com persistência, ele consegue eventualmente acertar, especialmente se você puder ajudá-lo um pouco (assumindo que entenda o código que ele está gerando).
Neste artigo, começamos com uma introdução ao Altium Scripting, como criar um projeto e salvá-lo no seu workspace do Altium 365. Vimos exemplos com o ChatGPT em que ele gerou scripts completamente do zero e também modificou scripts que fornecemos a ele. Demonstramos suas capacidades e como ele nem sempre acerta. Embora não seja perfeito, ele certamente pode atuar como um guia ao longo da sua jornada com Altium Scripting. Mais importante ainda, certamente é melhor tê-lo do que não tê-lo de forma alguma.