在如何构建自定义GPT操作以与您的硬件对话和构建AI实验室助手中,我们学习了如何使用生成式AI控制我们的硬件。通过在ChatGPT中使用自定义GPT操作,我们能够赋予ChatGPT不仅能让树莓派上的LED灯闪烁,还能控制实验室仪器并获取数据的能力。这意味着我们可以使用人工智能作为我们的实验室助手,并处理它从我们的仪器中获取的数据。在这篇文章中,我们将更进一步,让生成式AI不仅为我们编写代码,还能在嵌入式目标上执行代码并在此过程中接收反馈。
使用生成式AI编写代码,即使是对于嵌入式系统,也不是什么新鲜事。已经有很多工具在建议或完全从头开始编写代码。最受欢迎的大型语言模型,如ChatGPT、Gemini和Claude,都已经变得相当擅长编写代码(参见Gemini与ChatGPT:谁写的代码更好进行比较)。我已经写了一年多关于ChatGPT生成代码的文章了(参见使用ChatGPT进行自动化测试),并宣称这是如今开发的唯一方式。真正的挑战是将AI纳入你的开发循环中。
代码生成只能带你走这么远,但要验证并确保它有效,当涉及到生成式AI时需要采取不同的方法。ChatGPT的代码解释器提供了一个封装的Python环境,可以在一定程度上运行生成的代码并验证它对你是否有效。我想更进一步,看看我们是否能在嵌入式系统上实现同样的事情。有两种方法可以使用OpenAI的ChatGPT。最常见的方法是创建一个使用OpenAI API的封闭循环应用。它会提示并从大型语言模型(LLM)使用API获取代码,编译它,将其加载到Arduino上,并使用额外的自定义代码来验证生成代码的功能。我决定采取不同的方法,使用GPT操作来使其更像是一种“代码配对体验”。这就是那种体验的样子:
图1:GPT操作示例
虽然这个例子可能很简单(即闪烁一个板载LED),但上面的演示总结了一切。我能够给我的自定义GPT清晰的指令,它完全按照我的预期执行了指令。我还能确认它确实上传到了我的设备,并以1秒的频率让LED闪烁。与封闭循环系统相比,使用自定义GPT的好处是我可以在提示符内很容易地进行迭代:
图2:在Arduino草图上进行迭代
现在你已经看到了一些例子,让我们来看看这一切是如何工作的。
就像我们在其他自定义GPT文章中看到的那样,这个项目的GPT Actions设置或多或少是相同的。Dockerfile、Docker Compose、SSL证书以及仓库的总体结构并没有太大变化。当然,设计代码本身和OpenAPI YAML文件显著不同(这是意料之中的)。
这段代码(与之前的例子相比)最大的变化是我们在Python中引入了一个“子进程”来调用外部程序,在这个案例中是Arduino IDE。我们的OpenAPI YAML文件(openapi.yaml)提供了结构给ChatGPT,告诉它应该传递什么信息以及如何传递。查看YAML文件末尾的“components”部分,你会注意到我们期望返回对象的不同部分:
components:
schemas:
CodeSnippet:
type: object
properties:
language:
type: string
code:
type: string
description:
type: string
nullable: true
required:
- language
- code
我们请求ChatGPT不仅提供代码,还提供代码的语言和可选的代码描述。我们在app.py中处理这些信息。比起仅仅处理命令,更重要的是,如果处理过程中出现了问题,我们还会返回有意义的HTTP响应。这有助于提供上下文,并与ChatGPT的Web服务器/AI机器人“使用相同的语言”交流。
这个实现虽然有些粗糙,但非常简单:我们将代码片段转储到一个临时的INO文件中,验证和/或上传到Arduino,并删除临时的INO文件。显然,这里有很多可能出错的地方,包括无法克服的安全风险数量。像往常一样,限制你的开发环境非常重要,如果要对外开放,实施所有必要的安全措施以确保环境安全是极其重要的。
仅仅为了好玩,我还实现了一个非常基础的串行读取命令,使我们的自定义GPT Action能够从Arduino串行端口读取数据。这允许我们验证串行端口是否工作,而无需从我们的机器手动检查。一个示例场景可能是,如果你要求ChatGPT从你的智能手机编写并上传代码到你的Arduino。当然,这可以扩展到更正式的get/set类型的串行实现,你发送命令并通过串行读回响应(如在配置硬件在环项目中实现的)。
在这篇文章中,我们展示了AI不仅可以编写代码 - 它还可以通过在实际设备上运行代码来确保代码的有效性。这就像拥有一个不仅为你编写项目,还会测试以确保项目正确的开发者。通过我们使用的示例,你可以看到这将如何改变我们创建和测试项目的方式,使事情变得更快更简单。我们分享了所有的步骤和代码,所以任何感兴趣的人都可以尝试一下,看看AI如何在他们的工作中提供帮助。
了解更多关于这个开创性项目的信息,并加入这场进化,请访问:https://gitlab.com/ai-examples/ai-arduino-code-builder。
One interface. One data
model. Endless possibilities.
Effortlessly collaborate with
mechanical designers.
The world's most trusted
PCB design platform
Best in class interactive
routing
View License Options
Access critical supply chain intelligence as you design.
Store your libraries and design data in one secure, accessible, and version-controlled space.
Meet demands of a globalized market that requires unique versions of your PCBs.
Experience hands-on learning in PCB and hardware design with Altium's Student license, cloud access & comprehensive curriculum.
Send your product to manufacturing in a click without any email threads or confusion.
Gain the skills top employers look for. Start mastering PCB design with the Altium Student Lab today!
Create and update documentation as you design.
Develop the electronics design expertise that employers look for with Altium’s free Student Lab!
Start your electronics design career with Altium's free Student Lab, comprehensive curriculum & certificates
Prepare for a stellar career in electronics and hardware design with Altium’s free Student Lab.
Get ready for a fast-track career in PCB and hardware design with Altium's free Student Lab.