跳至主要内容

2024 年 DIY 自己的大语言模型玩具的指南

· 閱讀時間約 18 分鐘
CEO of Pu'ersa Technology Co., Ltd.

2024 年到了,DIY LLM 玩具?現在完全是一件事了。不需要任何科技魔法,只需要你的好奇心。我冒險嘗試,將一些編碼與大量的樂趣混合在一起,然後「砰」地創建了我自己的會說話的玩具。如果您想輕鬆打造人工智慧夥伴,那麼您來對地方了。讓我們一起揭開科技的神秘面紗,讓您的人工智慧朋友栩栩如生。在科技與日常生活日益交織的世界中,創建自己的 LLM 玩具不僅可以揭開人工智慧的神秘面紗,還可以為您提供通往互動技術奇蹟的個人化大門。

我們先來看看最終的效果。

老實說,這真是太棒了。準備開始?讓我們深入了解一下吧!

它是如何運作的?

共有三個關鍵步驟:

  1. 錄音:透過 UDP 接收玩具發送的即時錄音數據,並呼叫 STT(Sound-To-Text)API 將聲音轉換為文字。
  2. 思考:收到前面的文字後,立即呼叫 LLM(Large-Language-Model)API,以串流方式取得 LLM 產生的句子。然後,呼叫 TTS(文字轉聲音)API 將句子轉換為人類語音。
  3. 播放音訊:玩具將接收 FoloToy Server 產生的 TTS(Text-To-Sound)音訊檔案串流並依照順序播放。

開發前的準備

在開始製作 LLM 玩具之前,了解必要的硬體、軟體和技術知識至關重要。本節將指導您準備所有必需品以確保順利開始。

硬體

Folotoy Core:ChatGPT AI 語音對話核心板作為您專案的大腦,實現與 AI 的語音互動。

玩具組件:麥克風、揚聲器、按鈕、開關和電源等必需品是必需的。我將使用 Alilo Honey Bunny G6 進行即用型設定。

八爪魚 AI 開發套件(其他選擇):非常適合希望用人工智慧功能改造現有玩具的人。

購買時,請提供我的促銷代碼 F-001–9 以獲得折扣。

伺服器

利用您自己的機器(例如 MacBook Pro),確保您的玩具擁有可靠的後端來處理和回應語音互動。或者,Google Cloud Engine (GCE) 等雲端服務可以擴展您的專案以實現更廣泛的應用。

知識

  1. Docker(必要):了解 Docker 對於在容器中部署軟體、使專案可移植和可擴展至關重要。我用它來啟動 Folo 伺服器。
  2. Git(必要):版本控制對於管理專案的程式碼庫至關重要。我用它來管理 Folo 伺服器程式碼庫。
  3. MQTT(可選):如果您的目標是高級定制,熟悉 MQTT(一種輕量級訊息協議)將有利於玩具和伺服器之間的通訊。
  4. EMQX(選購):適用於 IoT、IIoT 和車聯網的開源 MQTT 代理程式。用於管理您的玩具。
  5. ollama(可選):如果你想在本地運行大型語言模型,這是一個不錯的選擇。

服務與註冊

為了讓你的玩具變得栩栩如生,你需要存取特定的人工智慧服務。對於這個項目,我選擇使用 OpenAI 的產品:

  1. TTS(文字轉語音):OpenAI 的 Whisper 服務將 AI 的文字回應轉換為語音,使互動變得自然。
  2. LLM(大型語言模型):利用 OpenAI 的模型來理解和產生類似人類的文字回應。
  3. STT(語音轉文本):OpenAI 的 TTS 服務將口語單字轉錄為文本,使 AI 能夠理解語音命令或查詢。

最重要的是,您需要在OpenAI 平台上註冊並建立 key,像sk -...i7TL

組裝你的玩具

現在是時候將所有部分組合在一起並製作您自己的 LLM 玩具了。

大致步驟如下,建議先觀看影片教學

  1. 檢查 Alilo G6 的錄音和播放是否正常。
  2. 使用螺絲起子旋下 Alilo G6 背面的 6 顆螺絲。
  3. 小心地打開 Alilo G6 的外殼,拔掉主機板上的所有插頭,先拔掉電源插頭,插頭上有膠水,可以用美工刀輕輕地切開,一定不要割傷手。
  4. 旋下主機板上的 4 顆螺絲並將其取下。
  5. 將原廠的主機板更換為 FoloToy 的主機板,並鎖緊 3 顆螺絲固定。
  6. 插入麥克風、燈光、擴音器和電源插座,最後插入電源插座。
  7. 插入所有插座後,請勿關閉外殼或安裝螺絲。首先打開兔子尾巴上的開關,看看新安裝的燈是否能亮起並呈現藍色慢閃。
  8. 如果沒有問題,安裝外殼並擰緊螺絲即可完成更換過程。

設定伺服器

強大的後端支援是讓您的 LLM 玩具理解並回應語音命令的關鍵。本節將教您如何複製伺服器程式碼庫、配置伺服器以及啟動 Docker 容器,以確保您的玩具擁有穩定的後端支援。

首先從 GitHub 克隆 Folo 伺服器程式碼庫。

git clone [email protected]:FoloToy/folotoy-server-self-hosting.git

然後將檔案docker-compose.yml中的基本伺服器配置更改為您自己的。

名稱描述範例
OPENAI_OPENAI_KEY您的 OpenAI API key。sk-...i7TL
OPENAI_TTS_KEY您的 OpenAI API key。sk-...i7TL
OPENAI_WHISPER_KEY您的 OpenAI API key。sk-...i7TL
AUDIO_DOWNLOAD_URL音訊檔案的 URL。http://192.168.xx:8082
SPEECH_UDP_SERVER_HOST您的伺服器的 IP 位址。192.168.xx

然後在config/roles.json檔案中設定你的角色,這裡有一個最小的例子,完整的設定請參考Flotoy 文件

{
"1": {
"start_text": "你好,需要幫忙嗎?",
"prompt": "You are a helpful assistant."
}
}

然後啟動 Docker 容器。

docker compose up -d

我在自己的機器上運行 Folo 伺服器,如果你想在雲端運行,幾乎是一樣的。需要注意的一點是,您需要將連接埠 1883、8082、8085、18083 和 8083 暴露到公共網路。

有關更多信息,請參閱 Flotoy 文件

與你的玩具聊天

一切準備就緒後,就可以與您的 LLM 玩具進行互動了。

打開玩具背面的開關即可開機。耳朵裡的藍色閃爍燈表示玩具已進入配對模式。

開啟手機或電腦,選擇「FoloToy-xxxx」無線網路。稍後,您的手機或電腦將自動開啟一個設定頁面,您可以在其中設定要連接的 WiFi 網路(SSID 和密碼),以及伺服器位址(如 192.168.xx)和連接埠號碼(保留預設的 1883)。

配置網路並連接到伺服器後,按中間的大圓形按鈕開始對話。當您停止說話後,FoloToy 會發出一聲蜂鳴聲來指示錄音結束。

周圍的 7 個圓形小按鈕是角色切換按鈕。點擊後,角色切換生效。

調試

無論是伺服器還是玩具,都可能會遇到一些技術問題。本節將提供一些基本的除錯技巧和工具,幫助您診斷和解決可能出現的問題,確保您的 LLM 玩具能夠順利運作。

伺服器調試

若要檢查伺服器日誌,請執行下列命令。

docker compose logs -f

可以在 docker-compose.yml 檔案中設定 LOG_LEVEL 來控制日誌等級。

玩具調試

Folo Toy 提供了一種透過 USB 串口調試玩具的簡單方法。您可以使用Folo Toy Web Tool來調試玩具。

  1. 使用 USB 線將玩具與電腦連接。
  2. 開啟 Folo Toy Web Tool,然後按一下「控制台」按鈕連接到玩具。
  3. 連線後,您應該可以在控制台中看到玩具的即時日誌。

玩具上還有一個 LED,它會亮起不同顏色來指示玩具的狀態

MQTT 調試

開啟 EMQX Dashboard 查看 MQTT 訊息。預設使用者名稱是 admin,密碼是 public。不管怎樣,登入後請將密碼更改為安全的密碼。

高級定制

對於想要進一步探索和自訂自己的 LLM 玩具的高級用戶,本節將介紹如何在本地運行大型語言模型、使用 CloudFlare AI Gateway 等工具以及自訂角色的聲音。這將為您打開 DIY LLM 玩具更廣闊的世界。

本地運行 LLM

在本地運行大型語言模型是一件有趣的事。您可以運行 Llama 2、Gemma 以及來自世界各地的各種開源大型模型,甚至是您自己訓練的模型。使用 ollama,你可以輕鬆做到。 先安裝 ollama,然後執行下列指令執行 Llama 2 模型。

ollama run llama2

然後,更改角色配置以使用本機 LLM 模型。

{
"1": {
"start_text": "你好,需要幫忙嗎?",
"prompt": "You are a helpful assistant.",
"llm_type": "ollama",
"llm_config": {
"api_base": "http://host.docker.internal:11434",
"model": "llama2"
}
}
}

api_base 應該是你的 ollama 伺服器位址,並且不要忘記重新啟動 Folo 伺服器以使更改生效。

docker compose restart folotoy

就這樣,將模型更改為 Gemma 或您喜歡的其他模型,然後享受它。

使用 CloudFlare AI 網關

Cloudflare 的 AI 閘道讓您能夠了解並控制您的 AI 應用程式。透過將您的應用程式連接到 AI Gateway,您可以透過分析和日誌記錄來了解人們如何使用您的應用程序,然後透過快取、速率限制以及請求重試、模型回退等功能來控制應用程式的擴展方式。

首先,您需要建立一個新的 AI 網關

然後編輯docker-compose.yml檔案將 OPENAI_OPENAI_API_BASE 變更為您的 AI 網關的位址,如下所示:

services:
folotoy:
environment: OPENAI_OPENAI_API_BASE=https://gateway.ai.cloudflare.com/v1/${ACCOUNT_TAG}/${GATEWAY}/openai

然後,您可以透過儀表板查看有關請求、令牌、快取、錯誤和成本的指標。

以及一個日誌記錄頁面,用於查看各個請求,例如提示、回應、提供者、時間戳記以及請求是否成功、快取或是否存在錯誤。

太棒了,不是嗎?

角色語音定制

您可以透過變更角色設定檔中的voice_name欄位來自訂角色的語音。

{
"1": {
"tts_type": "openai-tts",
"tts_config": {
"voice_name": "alloy"
}
}
}

OpenAI TTS 語音清單中找到您喜歡的語音。

Edge tts 有多種聲音可供選擇,如下:

{
"1": {
"tts_type": "edge-tts",
"tts_config": {
"voice_name": "en-NG-EzinneNeural"
}
}
}

知識庫支持

用於更高級別的定制,例如知識庫支援。建議使用 Dify,它結合了後端即服務和 LLMOps 的概念,涵蓋了建立生成式 AI 原生應用程式所需的核心技術堆疊,包括內建的 RAG 引擎。透過 Dify,您可以基於任何模型自行部署 Assistants API 和 GPT 等功能。

內建的 RAG 引擎,它是一個基於檢索的生成模型,可用於問答、對話和文件摘要等任務。 Dify 包含基於全文索引或向量資料庫嵌入的各種 RAG 功能,允許直接上傳 PDF 和 TXT 等各種文字格式。上傳你的知識庫,這樣你就不用擔心玩具因為不了解背景知識而胡言亂語了。

Dify 可以自行部署,也可以直接使用雲端版本。 Folo 上的配置也非常簡單:

{
"1": {
"llm_type": "dify",
"llm_config": {
"api_base": "http://192.168.52.164/v1",
"key": "app-AAAAAAAAAAAAAAAAAAa"
}
}
}

定製玩具形狀

就工作原理而言,任何玩具都可以修改。 Folo Toy 還提供八達通 AI 開發工具包,它可以將任何普通玩具變成智慧通話玩具。 該晶片小巧輕巧,可以輕鬆放入任何型別的玩具中,無論是毛絨、塑膠還是木製。

我 DIY 了一隻講陝西語的仙人掌。 運用你的想象力,你可以把它放進你最喜歡的玩具裡,做起來並不特別複雜:

  1. 開啟玩具
  2. 將八爪魚 AI 開發套件放入其中
  3. 關上玩具

伺服器仍然使用相同的。 您可以透過 sn 為不同的玩具分配不同的角色,這不會在這裡展開。 您可以在官方網站上檢視配置文件。

安全說明

請注意,切勿將key放在公共場所,例如 GitHub,否則會被濫用。如果您的key洩露,請立即在 OpenAI 平台上將其刪除並產生新的key。

您也可以在docker-compose.yml中使用環境變量,並在啟動容器時傳入,以避免暴露程式碼中的key。

services:
folotoy:
environment:
- OPENAI_OPENAI_KEY=${OPENAI_OPENAI_KEY}
OPENAI_OPENAI_KEY=sk-...i7TL docker compose up -d

如果您希望在 Internet 上公開使用 FoloToy 伺服器,強烈建議保護 EMQX 服務並僅允許使用密碼存取 EMQX。了解更多關於 EMQX 安全

結論

製作自己的 LLM 玩具是進入人工智慧和科技世界的令人興奮的旅程。無論您是 DIY 愛好者還是初學者,本指南都提供了創建真正互動式和個人化產品的路線圖。如果您在獲取 Folotoy Core 時遇到挑戰或在過程中遇到任何問題,請加入我們的 Telegram 群組即可獲得社群支援和專家建議。

對於那些喜歡現成解決方案的人,可以在此處購買成品。此選項無需組裝即可提供相同的互動體驗。 Folo 玩具還提供許多其他產品,可以在此處 找到。這是他們的店家地址:https://folotoy.taobao.com/

立即購買 Folo Toy 產品,在聯絡客戶服務時提供我的促銷代碼 F-001–9 即可享有折扣。購買 Fofo G6 可以節省 20 元,購買 Octopus Dev Suit 可以節省 15 元,購買 Cactus 可以節省 10 元。大多數其他商品也可享 10 元折扣,但請聯絡客服諮詢。

踏上這趟創意之旅,將您的人工智慧伴侶帶入生活,挖掘 LLM 玩具在教育、娛樂等領域的巨大潛力。

參考連結:

  1. https://medium.com/@chenzhiqing/simplest-guide-to-creating-your-own-llm-toy-in-2024-ab5a5fe5d440
  2. https://docs.folotoy.com/