En este artículo, Ari Mahpour habla sobre cómo aprovechar al máximo ChatGPT para los scripts de Altium en el lenguaje DelphiScript.
A estas alturas, la mayoría ya ha tenido algunos meses para familiarizarse con la IA generativa y, más concretamente, con ChatGPT. En mi artículo anterior, Uso de ChatGPT para pruebas automatizadas, presenté el servicio ChatGPT, mostré cómo familiarizarse con él y cómo usarlo para generar código que ejecute pruebas en su hardware. En este artículo veremos cómo aprovechar mejor ChatGPT para escribir código DelphiScript que ejecute funciones automatizadas dentro del propio Altium mediante Altium Scripting.
Antes de entrar en la implementación, es importante entender con qué estamos trabajando aquí. Altium Scripting tiene su mejor soporte con DelphiScript (por encima de otros lenguajes). Aunque una búsqueda rápida en línea arroja resultados como “Es 2022, ¿no es hora de que empieces a programar en Delphi?” y encabezados llamativos como “El lenguaje Pascal que [se] utiliza en Delphi es uno de los lenguajes de programación más populares y universales”, yo nunca he visto Delphi usarse fuera de Altium Designer. Eso no quiere decir que sea un mal lenguaje; simplemente no se utiliza con tanta frecuencia como Python, C++, etc. Hay mucho que aprender con un lenguaje nuevo (especialmente si usted no es programador de profesión), por lo que Altium reunió muchos recursos e incluso herramientas relacionadas con la programación en DelphiScript aquí. Si quiere profundizar en el lenguaje, esos recursos pueden serle útiles.
Al comenzar con Altium Scripting, muy rápidamente irá acumulando un gran repositorio de scripts que quizá quiera guardar y/o compartir. Para crear un nuevo proyecto de Scripting en Altium Designer, vaya a File > New > Script > Script Project. Haga clic con el botón derecho en el proyecto recién creado y vaya a Add New to Project > Script Unit. Esto creará un nuevo archivo .pas, que será su script:
Figura 1: Agregar un archivo de script al proyecto existente
Querremos guardar esto en nuestro espacio de trabajo de Altium 365. Primero asegúrese de haber guardado el proyecto localmente. Después de eso, haga clic con el botón derecho sobre el proyecto nuevamente y vaya a History & Version Control > Add Project to Version Control…
Figura 2: Agregar el proyecto al espacio de trabajo de Altium 365
Siga las indicaciones posteriores para guardar el proyecto en su espacio de trabajo de Altium 365. Para obtener más instrucciones sobre cómo escribir, ejecutar y depurar código DelphiScript dentro de Altium Designer, consulte la documentación de Altium.
Ahora que ya tenemos todo preparado, estamos listos para empezar. ChatGPT tiene el “potencial” de escribir por completo código DelphiScript de principio a fin. Uso aquí la palabra “potencial” en lugar de “capacidad” porque no siempre hace todo bien. Veamos un ejemplo sencillo en el que le pedimos a ChatGPT que genere un script en DelphiScript para enumerar todas las nets de mi proyecto. Empecé con un prompt que, para ser justos, era muy vago:
Figura 3: Respuesta inicial de ChatGPT
Esto entendió automáticamente que yo quería enumerar todas las nets de un PcbDoc. En realidad, yo lo quería desde el esquemático, así que lo corregí:
Figura 4: Uno de los muchos intentos de ChatGPT por escribir el script correcto
No he mostrado todo el código que me generó, pero lo que ocurrió después fue que ejecuté el código varias veces solo para encontrarme con que Altium Designer fallaba con errores como “Undeclared Identifier: eNet” o “Expected: in For Pin in Component. Pins Do.” Lo único que hice fue responderle a ChatGPT con esos errores varias veces y, en el quinto intento, generó el código que estaba buscando.
Lo que queda claro es que no es extraordinario generando DelphiScript desde cero, pero sí es capaz de hacerlo. Recuérdelo antes de lanzar el teclado contra la pared por frustración.
ChatGPT también puede servir más como copiloto o programador par. Puede usar ChatGPT para analizar su código, encontrar errores o ayudarle a ajustar funciones específicas. Podemos tomar un ejemplo existente de Altium Scripting y hacer que ChatGPT lo modifique para adaptarlo a nuestras necesidades.
Existen recursos disponibles (especialmente alojados en GitHub) que le proporcionan ejemplos de Altium Scripting. Yo voy a usar los proporcionados oficialmente por Altium. Se pueden encontrar aquí.
Voy a comenzar con el ejemplo PlaceAPort ubicado en \DelphiScript Scripts\SCH\Sch_Scripts.PrjScr. Le he dado a ChatGPT una tarea muy trivial:
ChatGPT me dio el código que seguía exactamente esa solicitud. Para ser honesto, esto es bastante simple si se siente medianamente cómodo programando. Hagámoslo un poco más difícil, de forma que requiera conocimiento contextual de Altium Scripting.
Aquí está mi prompt actualizado para ChatGPT:
Falla en el primer intento con un identificador no declarado:
Figura 5: Error del depurador de Altium Designer
Se lo hice saber y, por supuesto, se disculpa. Vuelve a fallar con un error de “Undeclared identifier: Name”, pero al tercer intento consigo mi etiqueta de red exactamente donde se supone que debe estar:
Figura 6: Nueva etiqueta de red y puerto generados por scripts modificados
Es evidente que, a medida que aumenta la complejidad, disminuyen las probabilidades de que ChatGPT acierte con su script al primer intento. He comprobado que, con persistencia, finalmente logra hacerlo bien, especialmente si usted puede ayudarle un poco (suponiendo que entienda el código que está generando).
En este artículo comenzamos con una introducción a Altium Scripting, cómo crear un proyecto y guardarlo en su espacio de trabajo de Altium 365. Vimos ejemplos con ChatGPT en los que generó scripts completamente desde cero y también modificó scripts que nosotros le proporcionamos. Demostramos sus capacidades y cómo no siempre acierta. Aunque no es perfecto, sin duda puede actuar como guía a lo largo de su experiencia con Altium Scripting. Y lo más importante: sin duda es mejor contar con él que no tenerlo en absoluto.