<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          千元以內(nèi),DIY 一個 AI 大語言模型對話玩具

          共 8637字,需瀏覽 18分鐘

           ·

          2024-04-11 23:03

          明星機(jī)器人初創(chuàng)公司 Figure,攜手 OpenAI 發(fā)布令人震撼的全新機(jī)器人演示。短短幾周內(nèi),自 3 月 1 日宣布獲得 OpenAI 等巨頭投資后,F(xiàn)igure 迅速融合了 OpenAI 的前沿多模態(tài)大模型技術(shù)。這一突破讓我萌生了一個大膽想法——自制一個由大模型加持的玩具,姑且叫他 Figure 3000 吧。

          話不多說,先看看我的 Figure 01 平替版 Figure 3000 效果怎么樣。

          大家可以看到,雖然效果上對標(biāo) Figure 01 還是有些差距的,但是 Figure 3000 在成本上做到了遙遙領(lǐng)先,千元以內(nèi)沒有對手:

          1. 硬件成本在千元以內(nèi),主要是火火兔 G6 模具和 FoloToy Core

          2. 語音識別和語音合成使用阿里靈杰 AI 開放服務(wù),免費(fèi) 2 個月,先用再說

          3. 大模型在自己的 MacbookPro 上運(yùn)行,四舍五入免費(fèi)

          我也把 DIY 的過程記錄下來,希望能幫助到大家。


          01


          如何工作的?


          先說說工作原理吧,方便大家理解,主要有三個關(guān)鍵步驟:

          1. 錄音:通過 UDP 接收玩具發(fā)送的實(shí)時錄音數(shù)據(jù),并調(diào)用 STT(聲音轉(zhuǎn)文字)API 將聲音轉(zhuǎn)換成文字。

          2. 思考:在接收到之前的文字后,將立即調(diào)用 LLM(大型語言模型)API,以流式方式獲取 LLM 生成的句子。然后,調(diào)用 TTS(文字轉(zhuǎn)聲音)API 將句子轉(zhuǎn)換成人類的語音。

          3. 播放音頻:玩具將接收由 FoloToy 服務(wù)器生成的 TTS(文字轉(zhuǎn)聲音)音頻文件流,并按順序播放。


          02


          開始前的準(zhǔn)備

          在開始制作你的 LLM(大型語言模型)玩具之前,了解所需的硬件、軟件和技術(shù)知識至關(guān)重要。本節(jié)將指導(dǎo)你準(zhǔn)備所有必需品,確保順利開始。

          硬件

          FoloToy Core:GPT AI 語音交互核心板,作為項目的大腦,使得玩具能夠與 AI 進(jìn)行語音互動。(購買時,請?zhí)峁┪业拇黉N代碼 F-001-2 以獲得折扣。

          玩具模具: 必須包含基礎(chǔ)部件,如麥克風(fēng)、揚(yáng)聲器、按鈕、開關(guān)和電源等。這里我用了火火兔 G6 模具,因為它的外觀和尺寸都很適合我的項目。家里的小朋友也喜歡這個玩具。

          服務(wù)器

          利用你自己的機(jī)器,比如 MacBookPro,確保你的玩具有一個可靠的后端來處理和響應(yīng)語音交互。或者,用云服務(wù)器,比如阿里云、騰訊云等,步驟是一樣的。

          知識儲備

          1. Docker(必須):理解 Docker 對于在容器中部署軟件至關(guān)重要,使你的項目便攜且可擴(kuò)展。我用它來啟動 Folo 服務(wù)器。

          2. MQTT(可選):如果你目標(biāo)是進(jìn)行高級定制,熟悉 MQTT(一種輕量級消息傳遞協(xié)議)將對于玩具和服務(wù)器之間的通信非常有益。

          3. EMQX(可選):用于物聯(lián)網(wǎng)、工業(yè)物聯(lián)網(wǎng)和連接車輛的開源 MQTT 代理。用于管理你的玩具。

          4. ollama(可選):如果你想在本地運(yùn)行大型語言模型,這是一個不錯的選擇。

          服務(wù)和注冊

          要讓你的玩具變得生動,你需要訪問特定的 AI 服務(wù)。對于這個項目,我選擇了使用阿里靈杰 AI 開放服務(wù),因為它提供了免費(fèi)的語音識別和語音合成服務(wù)。你也可以選擇其他服務(wù)。對于大型語言模型,我用了本地部署的 llama2,你可以根據(jù)自己喜好選擇,基本上都是兼容的。

          1. TTS(文本轉(zhuǎn)語音):阿里的語音識別效果上還是不錯的,足以滿足日常交流的需求。

          2. LLM(大型語言模型):利用大語言模型來理解和生成類似人類的文本響應(yīng),當(dāng)然各個模型我都進(jìn)行了嘗試,總的來說貴有貴的道理,但是我還是選擇了本地部署的 llama2。

          3. STT(語音轉(zhuǎn)文本):阿里的語音合成效果上還是不錯的,有上百個角色可以切換,滿足不同的興趣愛好。

          如果你使用的是各種大語言模型,你需要注冊并獲取 API 密鑰,類似 sk-xxx,這個是你調(diào)用 API 的憑證。阿里的靈杰 AI 開放服務(wù),你需要注冊、創(chuàng)建應(yīng)用并獲取 app_key,access_key_id,access_key_secret。


          03


          組裝你的玩具


          現(xiàn)在是時候?qū)⑺胁考M合起來,制作你自己的 LLM(大型語言模型)玩具了。

          總體步驟如下,建議先觀看視頻教程[1]。

          1. 檢查 G6 的錄音和播放是否正常。

          2. 使用螺絲刀擰開 G6 背部的 6 顆螺絲。

          3. 小心打開 G6 的外殼,拔掉主板上所有的插頭,首先拔掉電源插頭,插頭上有膠,可以使用美工刀輕輕切開,確保不要切到手。

          4. 擰下主板上的 4 顆螺絲并取下主板。

          5. 用 FoloToy 的主板替換原來的主板,并擰緊 3 顆螺絲以固定。

          6. 插入麥克風(fēng)、燈、揚(yáng)聲器和電源插座,最后插入電源插座。

          7. 插入所有插座后,不要立刻關(guān)閉外殼或安裝螺絲。首先打開/關(guān)閉兔子尾巴上的開關(guān),看新安裝的燈是否能夠打開并以藍(lán)色慢慢閃爍。

          8. 如果沒有問題,安裝外殼并擰緊螺絲以完成更換過程。


          04


          設(shè)置服務(wù)器


          強(qiáng)大的后端支持是使你的 LLM 玩具理解和響應(yīng)語音命令的關(guān)鍵。本節(jié)將教你如何克隆服務(wù)器代碼庫、配置服務(wù)器以及啟動 Docker 容器,以確保你的玩具擁有穩(wěn)定的后端支持。

          首先從 GitHub 克隆 Folo 服務(wù)器代碼庫。

          git clone git@github.com:FoloToy/folotoy-server-self-hosting.git

          然后在 docker-compose.yml 文件中將基礎(chǔ)服務(wù)器配置更改為你自己的配置。

          名稱 描述 示例
          AUDIO_DOWNLOAD_URL 音頻文件的 URL。 http://192.168.x.x:8082
          SPEECH_UDP_SERVER_HOST 服務(wù)器的 IP 地址。 192.168.x.x
          LLM_TYPE LLM 服務(wù)類型 ollama
          OLLAMA_API_BASE LLM API 地址 http://host.docker.internal:11434
          OLLAMA_MODEL LLM 模型 llama2
          STT_TYPE 語音識別服務(wù)類型 aliyun-asr
          ALIYUN_ASR_ACCESS_KEY_ID 阿里云語音識別的 access_key_id xxx
          ALIYUN_ASR_ACCESS_KEY_SECRET 阿里云語音識別的 access_key_secret xxx
          ALIYUN_ASR_APP_KEY 阿里云語音識別的 app_key xxx
          TTS_TYPE 語音合成服務(wù)類型 aliyun-tts
          ALIYUN_TTS_ACCESS_KEY_ID 阿里云語音合成的 access_key_id xxx
          ALIYUN_TTS_ACCESS_KEY_SECRET 阿里云語音合成的 access_key_secret xxx
          ALIYUN_TTS_APP_KEY 阿里云語音合成的 app_key xxx

          注:阿里云的語音識別和語音合成的配置用同一個配置就行。

          然后在 config/roles.json 文件中配置你的角色,這里是一個最小示例,完整配置請參考 FoloToy 文檔。

          {  "1": {    "start_text": "Hello, I'm Figure 3000. What can I do for you?",    "prompt": "You are a helpful assistant."  }}

          接著啟動 docker 容器。

          docker compose up -d

          我在自己的機(jī)器上運(yùn)行 Folo 服務(wù)器,如果你想在云端運(yùn)行,幾乎是相同的操作。需要注意的一點(diǎn)是,你需要將 1883、8082、8085、18083 和 8083 端口對公網(wǎng)開放,大部分云服務(wù)商都有防火墻設(shè)置,可以在控制臺設(shè)置。

          更多信息,請參考 FoloToy 文檔[2]。


          05


          本地運(yùn)行 LLM

          在本地運(yùn)行大型語言模型是一件有趣的事情。你可以運(yùn)行 Llama 2、Gemma 以及來自世界各地的所有種類的開源大型模型,甚至是你自己訓(xùn)練的模型。使用 ollama,你可以輕松做到這一點(diǎn)。首先安裝 ollama,然后運(yùn)行以下命令以運(yùn)行 Llama 2 模型。

          ollama run llama2

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

          {  "1": {    "start_text": "Hello, what can I do for you?",    "prompt": "You are a helpful assistant.",    "llm_type": "ollama",    "llm_config": {      "api_base": "http://host.docker.internal:11434",      "model": "llama2"    }  }}

          api_base 應(yīng)該是你的 ollama 服務(wù)器地址,別忘了重啟 Folo 服務(wù)器以使更改生效。

          docker compose restart folotoy

          就這么簡單,可以根據(jù)你的喜好更換為 Gemma 或其他模型,非常方便。我自己把大部分模型都試了一下,目前gemma:7b 是最香的,期待馬斯克的 Grok-1。


          06


          你的玩具交流


          一切準(zhǔn)備就緒后,就是與你的 LLM 玩具互動的時刻了。開啟玩具背后的開關(guān)進(jìn)行通電,耳朵中的藍(lán)色閃爍燈表明玩具已進(jìn)入配對模式。

          打開你的手機(jī)或電腦,選擇“FoloToy-xxxx”無線網(wǎng)絡(luò)。片刻之后,你的手機(jī)或電腦將自動打開一個配置頁面,在這里你可以設(shè)置要連接的 WiFi 網(wǎng)絡(luò)(SSID 和密碼),以及 MQTT 服務(wù)器地址(如 192.168.x.x)和端口號(保持默認(rèn)的 1883)。

          配置完成并連接到服務(wù)器后,按下中間的大圓形按鈕開始對話。你停止說話后,F(xiàn)oloToy 將發(fā)出嗶的一聲,表示錄音結(jié)束。

          周圍的 7 個圓形小按鈕是角色切換按鈕。點(diǎn)擊后,角色切換即刻生效。


          07


          調(diào)試


          無論是服務(wù)器還是玩具,你可能會遇到一些技術(shù)問題。本節(jié)將提供一些基本的調(diào)試技巧和工具,幫助你診斷和解決可能的問題,確保你的 LLM 玩具能夠順暢運(yùn)行。

          服務(wù)器調(diào)試

          要檢查服務(wù)器日志,請運(yùn)行以下命令。

          docker compose logs -f

          在 docker-compose.yml 文件中可以設(shè)置 LOG_LEVEL 來控制日志級別。

          玩具調(diào)試

          Folo Toy 提供了基于 USB 串口的簡便調(diào)試方式。你可以使用 Folo Toy Web 工具 來調(diào)試玩具。

          1. 使用 USB 線將玩具與你的電腦連接。

          2. 打開 Folo Toy Web 工具,然后點(diǎn)擊“控制臺”按鈕以連接到玩具。

          3. 連接后,你應(yīng)該能在控制臺中看到設(shè)備的實(shí)時日志。

          玩具上還有一個 LED 燈,它會以不同的顏色指示玩具的狀態(tài)。

          MQTT 調(diào)試

          打開 EMQX Dashboard 檢查 MQTT 消息以及設(shè)備連接狀態(tài)等。默認(rèn)的用戶名是 admin,密碼是 public。無論如何,在你登錄后將密碼更改為一個安全的密碼。


          08


          高級定制


          Folo Toy 還有很多高級的玩法,這里做個簡單介紹,拋磚引玉。這一部分適合有一定技術(shù)基礎(chǔ)的用戶,如果你是初學(xué)者,可以先跳過。

          使用 CloudFlare AI 網(wǎng)關(guān)

          Cloudflare 的 AI 網(wǎng)關(guān)讓你能夠獲得對 AI 應(yīng)用的可見性和控制權(quán)。通過將你的應(yīng)用連接到 AI 網(wǎng)關(guān),你可以通過分析和日志收集了解人們?nèi)绾问褂媚愕膽?yīng)用,然后利用緩存、速率限制以及請求重試、模型回退等功能來控制應(yīng)用的規(guī)模。首先,你需要創(chuàng)建一個新的 AI 網(wǎng)關(guān)。

          然后編輯 docker-compose.yml 文件,將 OPENAI_OPENAI_API_BASE 更改為你的 AI 網(wǎng)關(guān)地址,像這樣:

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

          然后你會有一個儀表板,可以看到關(guān)于請求、令牌、緩存、錯誤和成本的指標(biāo)。

          角色語音定制

          通過更改角色配置文件中的 voice_name 字段,你可以自定義角色的語音。

          Edge TTS 提供了許多可供選擇的語音,像這樣配置就行:

          {  "1": {    "tts_type": "edge-tts",    "tts_config": {      "voice_name": "zh-CN-shaanxi-XiaoniNeural"    }  }}

          這樣你的角色就能說陜西話了。

          還有個更好玩的,阿里云云語音合成支持個性化人聲定制,你可以用自己的聲音進(jìn)行訓(xùn)練,然后在角色配置文件中使用你的聲音。這樣就能用自己的分身給小朋友講故事了,是不是很有趣?

          聲音訓(xùn)練完后會得到一個聲音調(diào)用 ID,把這個 ID 放到角色配置文件中的 voice_id 字段就行。

          {  "1": {    "tts_type": "aliyun-tts",    "tts_config": {      "voice_id": "voice-xxxxxxx"    }  }}

          知識庫支持

          對于更高級別的定制,比如知識庫的支持。建議使用 Dify,它融合了 Backend as Service 和 LLMOps 的理念,涵蓋了構(gòu)建生成式 AI 原生應(yīng)用所需的核心技術(shù)棧,包括一個內(nèi)置 RAG 引擎。使用 Dify,你可以基于任何模型自部署類似 Assistants API 和 GPTs 的能力。重點(diǎn)說一下內(nèi)置的 RAG 引擎,它是一個基于檢索的生成式模型,可以用于問答、對話、文檔摘要等任務(wù)。Dify 包括各種基于全文索引或向量數(shù)據(jù)庫嵌入的 RAG 能力,允許直接上傳 PDF、TXT 等各種文本格式。把你的知識庫上傳,就不用擔(dān)心玩具不清楚背景知識而瞎扯了。

          dify 可以自行部署或者直接使用 cloud 版本。在Folo 上的配置也非常簡單:

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

          自定義玩具外形

          從工作原理來說,任意玩具都能夠進(jìn)行改造。Folo Toy 還提供了八爪魚 AI 開發(fā)套件,它可以將任何普通的玩具轉(zhuǎn)變?yōu)橐粋€智能對話玩具。這款芯片小巧輕便,可以輕易地放入任何類型的玩具中,無論是毛絨玩具、塑料玩具,還是木制玩具,都能輕松適應(yīng)。

          我 DIY 了個陜西話的仙人掌。發(fā)揮你的想象力,你可以把它放進(jìn)你喜歡的玩具中,動起手來也不是特別復(fù)雜:

          1. 把玩具打開

          2. 把八爪魚 AI 開發(fā)套件放進(jìn)去

          3. 關(guān)上玩具

          服務(wù)端仍然是用的同一個,可以通過 sn 給不同的玩具分配不同的角色,這里就不展開了,可以查看官網(wǎng)的配置文檔。

          安全須知

          請注意,絕對不要將密鑰公布在如 GitHub 這樣的公共平臺上,否則密鑰可能會被濫用。如果你的密鑰被泄露,請立即在平臺上刪除并重新生成一個新的密鑰。

          你還可以在 docker-compose.yml 中使用環(huán)境變量,并在啟動容器時傳入,以避免在代碼中暴露密鑰。

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

          如果你希望使 FoloToy 服務(wù)器在互聯(lián)網(wǎng)上公開可用,強(qiáng)烈建議加強(qiáng) EMQX 服務(wù)的安全性,并且只允許通過密碼訪問 EMQX。


          09


          送一波粉絲福利


          DIY 過程中遇到了各種問題,跟 FoloToy 團(tuán)隊也聯(lián)系上了,他們的技術(shù)支持非常給力,幫助我解決了很多問題。如果想購買這款玩具,可以直接在淘寶上搜索 FoloToy(AI 智趣玩具),產(chǎn)品做得確實(shí)不錯,這里給他們做個友情推廣。

          購買 Folo Toy 產(chǎn)品,在聯(lián)系客服時提供我的促銷代碼 F-001-2,即可享受折扣。購買 Fofo G6 整機(jī)可以節(jié)省 20 元,購買 Octopus Dev Suit 可以節(jié)省 15 元,其他大部分商品也可享受10元折扣,具體請聯(lián)系客服咨詢。

          參考:

          [1]: https://www.bilibili.com/video/BV1kC4y157od/

          [2]:https://docs.folotoy.com/zh/docs/configuration/roles_config/

          瀏覽 67
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  那个网站可以看毛片 | 日本性爱无码 | 五月激情婷婷基地 | 亚洲成人黄色在线观看 | 精品无码视频 |