2024 年自制大语言模型玩具指南

llm_toy.png

2024 年到了,DIY LLM 玩具?现在完全是一件事了。不需要任何技术魔法,只需要你的好奇心。我冒险尝试,将一些编码与大量的乐趣混合在一起,然后“砰”地创建了我自己的会说话的玩具。如果您想轻松打造人工智能伙伴,那么您来对地方了。让我们一起揭开科技的神秘面纱,让您的人工智能朋友栩栩如生。在技术与日常生活日益交织的世界中,创建自己的大语言模型玩具不仅可以揭开人工智能的神秘面纱,还可以为您提供通往互动技术奇迹的个性化大门。

我们先来看看最终的效果。

https://www.bilibili.com/video/BV1Yc411C7Zs/?spm_id_from=333.337.search-card.all.click&vd_source=734f1fa2445f5f3d584f9f5398b0ea3b

老实说,这真是太棒了。准备开始?让我们深入了解一下吧!

它是如何工作的?

共有三个关键步骤:

  1. 录音:通过 UDP 接收玩具发送的实时录音数据,并调用 STT(Sound-To-Text)API 将声音转换为文本。
  2. 思考:收到前面的文本后,立即调用 LLM(Large-Language-Model)API,以流式方式获取 LLM 生成的句子。然后,调用 TTS(文本转声音)API 将句子转换为人类语音。
  3. 播放音频:玩具会接收 FoloToy Server 生成的 TTS(Text-To-Sound)音频文件流,并按照顺序播放。

开发前准备

在开始制作 LLM 玩具之前,了解必要的硬件、软件和技术知识至关重要。本节将指导您准备所有必需品以确保顺利开始。

硬件

hardware.png

Folotoy Core:ChatGPT AI 语音对话核心板作为您项目的大脑,实现与 AI 的语音交互。

toy.jpg

玩具组件:麦克风、扬声器、按钮、开关和电源等必需品是必需的。我将使用火火兔 G6 进行即用型设置。

octopus_.jpg

八爪鱼 AI 开发套件(其他选择):非常适合那些希望用人工智能功能改造现有玩具的人。

邀请码 F-001–6 有惊喜。

服务器

利用您自己的机器(例如 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 平台上注册并创建密钥,像 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 git@github.com:FoloToy/folotoy-server-self-hosting.git

然后将文件docker-compose.yml中的基本服务器配置更改为您自己的。

名称 描述 示例
OPENAI_OPENAI_KEY 您的 OpenAI API 密钥。 sk-...i7TL
OPENAI_TTS_KEY 您的 OpenAI API 密钥。 sk-...i7TL
OPENAI_WHISPER_KEY 您的 OpenAI API 密钥。 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 玩具进行互动了。

打开玩具背面的开关即可开机。耳朵里的蓝色闪烁灯表示玩具已进入配对模式。

wifi.png

打开手机或电脑,选择“FoloToy-xxxx”无线网络。稍后,您的手机或电脑将自动打开一个配置页面,您可以在其中设置要连接的 WiFi 网络(SSID 和密码),以及服务器地址(如 192.168.xx)和端口号(保留默认的 1883)。

buttons.png

配置网络并连接到服务器后,按中间的大圆形按钮开始对话。当您停止说话后,FoloToy 会发出一声蜂鸣声来指示录音结束。 周围的 7 个圆形小按钮是角色切换按钮。点击后,角色切换生效。

调试

无论是服务器还是玩具,都可能会遇到一些技术问题。本节将提供一些基本的调试技巧和工具,帮助您诊断和解决可能出现的问题,确保您的 LLM 玩具能够顺利运行。

服务器调试

要检查服务器日志,请运行以下命令。

docker compose logs -f

可以在 docker-compose.yml 文件中设置 LOG_LEVEL 来控制日志级别。

玩具调试

toy_debug.png

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 玩具更广阔的世界。

本地运行大语言模型

ollama.png

在本地运行大型语言模型是一件有趣的事情。您可以运行 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
cloudflare.png

然后,您可以通过仪表板查看有关请求、令牌、缓存、错误和成本的指标。

cloudflare-log.png

以及一个日志记录页面,用于查看各个请求,例如提示、响应、提供程序、时间戳以及请求是否成功、缓存或是否存在错误。 太棒了,不是吗?

角色语音定制

您可以通过更改角色配置文件中的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.png

用于更高级别的定制,例如知识库支持。推荐使用 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"
    }
  }
}

定制玩具形状

octopus.png

从工作原理上来说,任何玩具都可以进行改造。 Folo Toy 还提供 Octopus AI 开发套件,可以将任何普通玩具变成智能说话玩具。该芯片体积小、重量轻,可以轻松安装到任何类型的玩具中,无论是毛绒玩具、塑料玩具还是木制玩具。

cactus.jpg

我 DIY 了一个陕西仙人掌。发挥你的想象力,你可以把它放进你喜欢的玩具里,而且做起来也不是特别复杂:

  1. 打开玩具
  2. 将 Octopus AI 开发套件放入其中
  3. 关闭玩具

服务器仍然使用相同的服务器。可以通过 sn 给不同的玩具分配不同的角色,这里不再展开。您可以在官网查看配置文档。

安全说明

请注意,切勿将密钥放在公共场所,例如 GitHub,否则会被滥用。如果您的密钥泄露,请立即在 OpenAI 平台上将其删除并生成新的密钥。 您还可以在docker-compose.yml中使用环境变量,并在启动容器时传入,以避免暴露代码中的密钥。

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 爱好者还是初学者,本指南都提供了创建真正互动和个性化内容的路线图。

对于那些喜欢现成解决方案的人,可以淘在宝 AI智趣玩具 buy 成品。此选项无需组装即可提供相同的交互体验。 Folo 玩具还提供许多其他产品,可以在此处找到。

referral 码 F-001–6 可享受优慧价。

product-1.png
product-2.png
product-3.png
product-4.png

踏上这一创意之旅,将您的人工智能伴侣带入生活,挖掘法学硕士玩具在教育、娱乐等领域的巨大潜力。

参考链接:

  1. https://medium.com/@chenzhiqing/simplest-guide-to-creating-your-own-llm-toy-in-2024-ab5a5fe5d440
  2. https://docs.folotoy.com/
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容