W tym artykule Ari Mahpour omawia, jak najlepiej wykorzystać ChatGPT do skryptowania w Altium w języku DelphiScript.
Do tej pory minęło już kilka miesięcy, odkąd użytkownicy mogli zapoznać się z generatywną AI, a przede wszystkim z ChatGPT. W moim poprzednim artykule, Using ChatGPT for Automated Testing, przedstawiłem usługę ChatGPT, pokazałem, jak się z nią oswoić, i jak używać jej do generowania kodu uruchamiającego testy na Twoim sprzęcie. W tym artykule przyjrzymy się temu, jak najlepiej wykorzystać ChatGPT do pisania kodu DelphiScript do uruchamiania zautomatyzowanych funkcji wewnątrz samego Altium przy użyciu Altium Scripting.
Zanim przejdziemy do implementacji, ważne jest, aby zrozumieć, z czym tutaj pracujemy. Altium Scripting jest najlepiej wspierany przy użyciu DelphiScript (w porównaniu z innymi językami). Chociaż szybkie wyszukiwanie w internecie daje wyniki w rodzaju „Mamy 2022 rok — czy to nie czas, aby zacząć programować w Delphi?” oraz chwytliwe nagłówki takie jak „Język Pascal używany w Delphi jest jednym z najpopularniejszych i najbardziej uniwersalnych języków programowania”, nigdy nie spotkałem się z użyciem Delphi poza Altium Designer. Nie oznacza to, że jest to zły język — po prostu nie jest tak powszechnie używany jak Python, C++ itd. Nauka nowego języka wiąże się z wieloma wyzwaniami (zwłaszcza jeśli nie jesteś programistą z wykształcenia), dlatego Altium przygotowało wiele zasobów, a nawet narzędzi związanych z programowaniem w DelphiScript tutaj. Jeśli chcesz naprawdę zagłębić się w ten język, dostępne tam materiały mogą okazać się pomocne.
Gdy zaczniesz pracę z Altium Scripting, bardzo szybko zbudujesz duże repozytorium skryptów, które możesz chcieć zapisać i/lub udostępnić. Aby utworzyć nowy projekt Scripting w Altium Designer, przejdź do File > New > Script > Script Project. Kliknij prawym przyciskiem myszy nowo utworzony projekt i przejdź do Add New to Project > Script Unit. Spowoduje to utworzenie nowego pliku .pas, który będzie Twoim skryptem:
Rysunek 1: Dodawanie pliku skryptu do istniejącego projektu
Będziemy chcieli zapisać go w naszym obszarze roboczym Altium 365. Najpierw upewnij się, że projekt został zapisany lokalnie. Następnie kliknij ponownie prawym przyciskiem myszy projekt i przejdź do History & Version Control > Add Project to Version Control…
Rysunek 2: Dodawanie projektu do przestrzeni roboczej Altium 365
Następnie postępuj zgodnie z wyświetlanymi instrukcjami, aby zapisać projekt w swojej przestrzeni roboczej Altium 365. Dalsze instrukcje dotyczące pisania, uruchamiania i debugowania kodu DelphiScript w Altium Designer znajdują się w dokumentacji Altium.
Skoro wszystko jest już skonfigurowane, możemy przejść dalej. ChatGPT ma „potencjał”, aby całkowicie napisać kod DelphiScript od początku do końca. Używam tu słowa „potencjał” zamiast „możliwość”, ponieważ nie zawsze robi to poprawnie. Weźmy prosty przykład, w którym prosimy ChatGPT o wygenerowanie skryptu w DelphiScript, który wyświetli wszystkie sieci w moim projekcie. Zacząłem od polecenia, które — uczciwie mówiąc — było bardzo ogólne:
Rysunek 3: Początkowa odpowiedź ChatGPT
Automatycznie zrozumiał, że chcę wyświetlić wszystkie sieci z PcbDoc. W rzeczywistości chodziło mi o schemat, więc go poprawiłem:
Rysunek 4: Jedna z wielu prób ChatGPT napisania poprawnego skryptu
Nie pokazuję całego kodu, który dla mnie wygenerował, ale dalej wyglądało to tak, że uruchamiałem kod wielokrotnie, tylko po to, by Altium Designer zgłaszał błędy takie jak „Undeclared Identifier: eNet” albo „Expected: in For Pin in Component. Pins Do.”. Za każdym razem po prostu przekazywałem te błędy do ChatGPT, i przy piątej próbie wygenerował kod, którego szukałem.
Jasne jest więc, że nie radzi sobie znakomicie z generowaniem DelphiScript od zera, ale jest do tego zdolny. Warto o tym pamiętać, zanim w przypływie frustracji rzucisz klawiaturą o ścianę.
ChatGPT może też pełnić rolę pomocnika lub partnerskiego programisty. Możesz używać ChatGPT do analizowania swojego kodu, znajdowania błędów albo pomocy w dostosowywaniu konkretnych funkcji. Możemy wziąć istniejący przykład Altium Scripting i poprosić ChatGPT o zmodyfikowanie go tak, aby odpowiadał naszym potrzebom.
Istnieją zasoby (szczególnie hostowane na GitHubie), które udostępniają przykłady Altium Scripting. Ja skorzystam z tych oficjalnie udostępnionych przez Altium. Można je znaleźć tutaj.
Zaczynam od przykładu PlaceAPort znajdującego się w \DelphiScript Scripts\SCH\Sch_Scripts.PrjScr. Zleciłem ChatGPT bardzo trywialne zadanie:
ChatGPT zwrócił kod, który dokładnie spełniał tę prośbę. Szczerze mówiąc, to dość proste, jeśli czujesz się w miarę swobodnie z programowaniem. Podnieśmy więc nieco poprzeczkę i wybierzmy coś, co wymaga kontekstowej znajomości Altium Scripting.
Oto moje zaktualizowane polecenie dla ChatGPT:
Przy pierwszej próbie pojawia się błąd Undeclared Identifier:
Rysunek 5: Błąd debuggera z Altium Designer
Poinformowałem go o tym i oczywiście przeprosił. Potem znów pojawił się błąd „Undeclared identifier: Name”, ale za trzecim razem etykieta sieci znalazła się dokładnie tam, gdzie powinna:
Rysunek 6: Nowa etykieta sieci i port wygenerowane przez zmodyfikowane skrypty
Nietrudno zauważyć, że wraz ze wzrostem złożoności maleje szansa, że ChatGPT od razu poprawnie wygeneruje skrypt. Zauważyłem jednak, że przy odrobinie wytrwałości ostatecznie potrafi dojść do właściwego rozwiązania, zwłaszcza jeśli trochę mu pomożesz (zakładając, że rozumiesz kod, który generuje).
W tym artykule zaczęliśmy od wprowadzenia do Altium Scripting, omówienia sposobu tworzenia projektu i zapisywania go w przestrzeni roboczej Altium 365. Następnie przeszliśmy do przykładów z ChatGPT, w których całkowicie generował skrypty od podstaw, a także modyfikował skrypty, które mu dostarczyliśmy. Pokazaliśmy jego możliwości oraz to, że nie zawsze robi wszystko poprawnie. Choć nie jest doskonały, z pewnością może pełnić rolę przewodnika podczas Twojej pracy z Altium Scripting. Co najważniejsze, zdecydowanie lepiej go mieć, niż go nie mieć wcale.