構(gòu)建一個RinGPT AI Agent供電門鈴
這個想法是在門鈴里放一個人工智能代理,能夠自由地采取行動。有什么可能出錯呢?
去年,由于我的門鈴多次打斷我,我決定修改它,使ChatGPT可以直接處理訪客。這個名為RinGPT的項目可以與訪客進(jìn)行無休止的對話,同時遠(yuǎn)程通知我。RinGPT還檢測關(guān)鍵字并提供預(yù)定義的響應(yīng)。
今年,在與法學(xué)碩士合作后,我發(fā)現(xiàn)了人工智能代理的概念,并發(fā)現(xiàn)將RinGPT升級為智能接待員很有趣。為了測試它的功能,我用一些樂高積木和一個原型裝置制作了一個小模型。
什么是AI Agent?
人工智能代理是一個自主實體,通過傳感器感知環(huán)境,處理信息,并采取行動實現(xiàn)特定目標(biāo)。它可以是基于軟件的(如聊天機(jī)器人或推薦系統(tǒng)),也可以集成到硬件中(如機(jī)器人或自動駕駛汽車)。
在這個項目中,AI代理可以訪問一組工具,并可以根據(jù)其目標(biāo)自主決定使用哪些工具以及以何種順序使用。
項目概述
這是一個實驗原型。雖然它使用人工智能代理,但它并不依賴于專門的代理框架。相反,它是用普通的Python和對OpenAI的多個API調(diào)用構(gòu)建的。盡管它很簡單,但該項目涉及大量代碼,并且在與軟件和物理組件(如傳感器讀數(shù)和門控制)交互方面脫穎而出。
硬件
該項目建立在Unihiker板上。對于那些不熟悉的人來說,Unihiker類似于樹莓派,但帶有觸摸屏,集成傳感器,按鈕和預(yù)裝的操作系統(tǒng)。
為了增強(qiáng)功能,我連接了:
?可選IO板
?保留LED按鈕
?SG90伺服電機(jī)
?藍(lán)牙揚(yáng)聲器(配對用于音頻輸出)由于Unihiker內(nèi)置麥克風(fēng),因此不需要額外的音頻硬件。我還做了一個入口的小紙板模型來測試。
軟件設(shè)置
配置優(yōu)步的WiFi接入:
通過USB連接到電腦上。
通過USB連接到電腦上。配置2.4GHz WiFi網(wǎng)絡(luò),請訪問10.1.2.3。
一旦連接,SSH到指定的IP使用:
必需的庫
使用以下命令安裝必要的Python庫:
API密鑰和憑據(jù)
你需要取得:
來自O(shè)penAI平臺的OpenAI API密鑰,電報聊天ID和令牌(這個過程可能很繁瑣,但教程廣泛可用)藍(lán)牙揚(yáng)聲器設(shè)置
將藍(lán)牙揚(yáng)聲器配對一次,使用:
用說話人的MAC地址替換00:00:00:00:00。
RinGPT如何工作
按下按鈕→系統(tǒng)播放門鈴,并向訪客表示歡迎。
記錄訪客的語音→使用語音識別將語音轉(zhuǎn)換為文本
識別訪問者名稱→調(diào)用OpenAI API與函數(shù)調(diào)用提取訪問者的名稱。
選擇合適的工具→再次調(diào)用OpenAI來決定使用哪個工具。
執(zhí)行選定的工具→運(yùn)行檢查時間表,燈光水平等功能。
決定最終動作→再次呼叫OpenAI決定是否開門或發(fā)送電報通知。
生成響應(yīng)→使用ChatGPT生成最終響應(yīng)。
可用的AI代理工具
人工智能代理可以使用以下工具:
其他功能,如開門或發(fā)送電報通知,是在程序的流程中處理的,但還沒有直接分配給代理(盡管它們可能在未來的版本中)。
議程功能目前是硬編碼的,但可以很容易地集成谷歌日歷。
getLightConditions函數(shù)有些隨意,但它是為了利用Unihiker的光傳感器而包含的。
LLM呼叫與處理
并不是所有對OpenAI的調(diào)用都是相同的。
第一次調(diào)用:使用OpenAI函數(shù)調(diào)用提取訪問者的名字,無論他們?nèi)绾伪磉_(dá)它。
后續(xù)調(diào)用:一些響應(yīng)是JSON格式,而其他響應(yīng)是純文本。
運(yùn)行腳本
要啟動RinGPT,請運(yùn)行:
要將其設(shè)置為自動啟動,請按照這里的說明進(jìn)行操作。
日志記錄
由于RinGPT是自主操作的,因此日志記錄了用于監(jiān)視目的的所有操作和交互。
結(jié)論
與傳統(tǒng)的啟發(fā)式編程不同,在啟發(fā)式編程中,操作是可預(yù)測的,llm引入了不確定性元素。在測試期間,相同的提示符和代碼有時會產(chǎn)生意想不到的結(jié)果,例如:
在JSON響應(yīng)中提供額外的信息,并且由于“不確定性”而拒絕選擇工具。在改進(jìn)提示之后,我能夠得到一致和可靠的結(jié)果。
除了這個簡單的例子,人工智能代理的潛力是巨大的,特別是支持微調(diào)和檢索增強(qiáng)生成(RAG)的模型。
真正的問題是:我們愿意給我們的人工智能代理多大的自主權(quán)?
本文編譯自hackster.io