构建一个RinGPT AI Agent供电门铃
扫描二维码
随时随地手机看文章
这个想法是在门铃里放一个人工智能代理,能够自由地采取行动。有什么可能出错呢?
去年,由于我的门铃多次打断我,我决定修改它,使ChatGPT可以直接处理访客。这个名为RinGPT的项目可以与访客进行无休止的对话,同时远程通知我。RinGPT还检测关键字并提供预定义的响应。
今年,在与法学硕士合作后,我发现了人工智能代理的概念,并发现将RinGPT升级为智能接待员很有趣。为了测试它的功能,我用一些乐高积木和一个原型装置制作了一个小模型。
什么是AI Agent?
人工智能代理是一个自主实体,通过传感器感知环境,处理信息,并采取行动实现特定目标。它可以是基于软件的(如聊天机器人或推荐系统),也可以集成到硬件中(如机器人或自动驾驶汽车)。
在这个项目中,AI代理可以访问一组工具,并可以根据其目标自主决定使用哪些工具以及以何种顺序使用。
项目概述
这是一个实验原型。虽然它使用人工智能代理,但它并不依赖于专门的代理框架。相反,它是用普通的Python和对OpenAI的多个API调用构建的。尽管它很简单,但该项目涉及大量代码,并且在与软件和物理组件(如传感器读数和门控制)交互方面脱颖而出。
硬件
该项目建立在Unihiker板上。对于那些不熟悉的人来说,Unihiker类似于树莓派,但带有触摸屏,集成传感器,按钮和预装的操作系统。
为了增强功能,我连接了:
•可选IO板
•保留LED按钮
•SG90伺服电机
•蓝牙扬声器(配对用于音频输出)由于Unihiker内置麦克风,因此不需要额外的音频硬件。我还做了一个入口的小纸板模型来测试。
软件设置
配置优步的WiFi接入:
通过USB连接到电脑上。
通过USB连接到电脑上。配置2.4GHz WiFi网络,请访问10.1.2.3。
一旦连接,SSH到指定的IP使用:
必需的库
使用以下命令安装必要的Python库:
API密钥和凭据
你需要取得:
来自OpenAI平台的OpenAI API密钥,电报聊天ID和令牌(这个过程可能很繁琐,但教程广泛可用)蓝牙扬声器设置
将蓝牙扬声器配对一次,使用:
用说话人的MAC地址替换00:00:00:00:00。
RinGPT如何工作
按下按钮→系统播放门铃,并向访客表示欢迎。
记录访客的语音→使用语音识别将语音转换为文本
识别访问者名称→调用OpenAI API与函数调用提取访问者的名称。
选择合适的工具→再次调用OpenAI来决定使用哪个工具。
执行选定的工具→运行检查时间表,灯光水平等功能。
决定最终动作→再次呼叫OpenAI决定是否开门或发送电报通知。
生成响应→使用ChatGPT生成最终响应。
可用的AI代理工具
人工智能代理可以使用以下工具:
其他功能,如开门或发送电报通知,是在程序的流程中处理的,但还没有直接分配给代理(尽管它们可能在未来的版本中)。
议程功能目前是硬编码的,但可以很容易地集成谷歌日历。
getLightConditions函数有些随意,但它是为了利用Unihiker的光传感器而包含的。
LLM呼叫与处理
并不是所有对OpenAI的调用都是相同的。
第一次调用:使用OpenAI函数调用提取访问者的名字,无论他们如何表达它。
后续调用:一些响应是JSON格式,而其他响应是纯文本。
运行脚本
要启动RinGPT,请运行:
要将其设置为自动启动,请按照这里的说明进行操作。
日志记录
由于RinGPT是自主操作的,因此日志记录了用于监视目的的所有操作和交互。
结论
与传统的启发式编程不同,在启发式编程中,操作是可预测的,llm引入了不确定性元素。在测试期间,相同的提示符和代码有时会产生意想不到的结果,例如:
在JSON响应中提供额外的信息,并且由于“不确定性”而拒绝选择工具。在改进提示之后,我能够得到一致和可靠的结果。
除了这个简单的例子,人工智能代理的潜力是巨大的,特别是支持微调和检索增强生成(RAG)的模型。
真正的问题是:我们愿意给我们的人工智能代理多大的自主权?
本文编译自hackster.io