В этой статье Ари Махпур рассказывает о том, как наиболее эффективно использовать ChatGPT для создания скриптов в Altium на языке DelphiScript.
К настоящему моменту у пользователей уже было несколько месяцев, чтобы познакомиться с Generative AI и, в первую очередь, с ChatGPT. В моей прошлой статье Using ChatGPT for Automated Testing я представил сервис ChatGPT, показал, как с ним освоиться, и как использовать его для генерации кода для запуска тестов вашего оборудования. В этой статье мы рассмотрим, как наилучшим образом использовать ChatGPT для написания кода на DelphiScript, чтобы запускать автоматизированные функции непосредственно в Altium с помощью Altium Scripting.
Прежде чем переходить к реализации, важно понять, с чем именно мы здесь работаем. Altium Scripting лучше всего поддерживается при использовании DelphiScript (по сравнению с другими языками). Хотя быстрый поиск в интернете выдает результаты вроде «На дворе 2022 год — не пора ли вам начать программировать на Delphi?» и броские заголовки наподобие «Язык Pascal, используемый в Delphi, является одним из самых популярных и универсальных языков программирования», я ни разу не встречал использование Delphi вне Altium Designer. Это не значит, что это плохой язык, — просто он не так широко распространен, как Python, C++ и т. д. Новый язык требует освоения множества вещей (особенно если вы не профессиональный программист), поэтому Altium подготовила множество ресурсов и даже инструменты, связанные с программированием на DelphiScript, здесь. Если вы хотите глубже погрузиться в этот язык, эти материалы могут оказаться полезными.
Когда вы начнете работать с Altium Scripting, очень быстро может накопиться большой репозиторий скриптов, который вам захочется сохранить и/или предоставить другим. Чтобы создать новый проект Scripting в Altium Designer, перейдите в File > New > Script > Script Project. Щелкните правой кнопкой мыши по только что созданному проекту и выберите Add New to Project > Script Unit. Это создаст новый файл .pas, который и будет вашим скриптом:
Рисунок 1: Добавление файла скрипта в существующий проект
Мы захотим сохранить его в нашем рабочем пространстве Altium 365. Сначала убедитесь, что вы сохранили проект локально. После этого снова щелкните правой кнопкой мыши по проекту и перейдите в History & Version Control > Add Project to Version Control…
Рисунок 2: Добавление проекта в Workspace Altium 365
Затем следуйте подсказкам, чтобы сохранить проект в вашем Workspace Altium 365. Более подробные инструкции по написанию, запуску и отладке кода DelphiScript в Altium Designer см. в документации Altium.
Теперь, когда все настроено, можно переходить к делу. ChatGPT «потенциально» способен полностью написать код DelphiScript от начала и до конца. Я использую здесь слово «потенциально», а не «обладает возможностью», потому что он не всегда делает все правильно. Возьмем простой пример, когда мы просим ChatGPT сгенерировать скрипт на DelphiScript, чтобы вывести список всех цепей в моем проекте. Я начал с подсказки, которая, надо признать, была очень расплывчатой:
Рисунок 3: Первоначальный ответ ChatGPT
Он автоматически понял, что я хочу получить список всех цепей из PcbDoc. На самом деле мне нужен был список из схемы, поэтому я его поправил:
Рисунок 4: Одна из многочисленных попыток ChatGPT написать правильный скрипт
Я не привожу весь код, который он для меня сгенерировал, но дальше произошло следующее: я запускал код много раз и каждый раз получал в Altium Designer ошибки вроде «Undeclared Identifier: eNet» или «Expected: in For Pin in Component. Pins Do». Все, что я делал, — это несколько раз отправлял ChatGPT эти ошибки, и на пятой попытке он сгенерировал именно тот код, который мне был нужен.
Очевидно, что он не слишком хорошо справляется с генерацией DelphiScript с нуля, но все же способен это делать. Помните об этом, прежде чем в раздражении швырнуть клавиатуру в стену.
ChatGPT также может выступать скорее в роли помощника или напарника-программиста. Вы можете использовать ChatGPT для анализа вашего кода, поиска ошибок или помощи в доработке конкретных функций. Можно взять существующий пример Altium Scripting и попросить ChatGPT изменить его под наши задачи.
Существуют ресурсы (особенно размещенные на GitHub), где доступны примеры Altium Scripting. Я буду использовать те, что официально предоставлены Altium. Их можно найти здесь.
Я начинаю с примера PlaceAPort, расположенного в \DelphiScript Scripts\SCH\Sch_Scripts.PrjScr. Я дал ChatGPT очень простую задачу:
ChatGPT выдал мне код, который в точности соответствовал этому запросу. Честно говоря, это довольно просто, если вы более-менее уверенно чувствуете себя в программировании. Давайте немного усложним задачу, чтобы потребовалось контекстное знание Altium Scripting.
Вот мой обновленный запрос к ChatGPT:
С первой попытки он выдает ошибку Undeclared Identifier:
Рисунок 5: Ошибка отладчика в Altium Designer
Я сообщил ему об этом, и он, разумеется, извинился. Затем он снова ошибся, на этот раз с ошибкой «Undeclared identifier: Name», но на третьей попытке я получил свою метку цепи именно там, где она и должна быть:
Рисунок 6: Новая метка цепи и порт, созданные модифицированными скриптами
Очевидно, что с ростом сложности вероятность того, что ChatGPT напишет правильный скрипт с первой попытки, снижается. Я обнаружил, что при достаточной настойчивости он в итоге способен прийти к верному результату, особенно если вы можете немного ему помочь (при условии, что понимаете код, который он генерирует).
В этой статье мы начали с введения в Altium Scripting, рассмотрели, как создать проект и сохранить его в вашем рабочем пространстве Altium 365. Затем мы перешли к примерам с ChatGPT, где он полностью генерировал скрипты с нуля, а также модифицировал скрипты, которые мы ему предоставляли. Мы продемонстрировали его возможности и показали, что он не всегда все делает правильно. Хотя он и не идеален, он вполне может выступать в роли проводника на вашем пути освоения Altium Scripting. И самое главное — определенно лучше иметь такой инструмент под рукой, чем не иметь его вовсе.