跳到主要内容

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

· 阅读需 18 分钟
CEO of Pu'ersa Technology Co., Ltd.

2024 年到了,DIY 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 平台上注册并创建密钥,像 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 密钥。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 玩具进行互动了。

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

打开手机或电脑,选择“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 玩具更广阔的世界。

本地运行大语言模型

在本地运行大型语言模型是一件有趣的事情。您可以运行 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 还提供 Octopus AI 开发套件,可以将任何普通玩具变成智能说话玩具。该芯片体积小、重量轻,可以轻松安装到任何类型的玩具中,无论是毛绒玩具、塑料玩具还是木制玩具。

我 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 爱好者还是初学者,本指南都提供了创建真正互动和个性化内容的路线图。如果您在获取 Folotoy Core 时遇到挑战或在此过程中遇到任何问题,加入我们的 Telegram 小组将提供社区支持和专家建议。

对于那些喜欢现成解决方案的人,可以在此处购买成品。此选项无需组装即可提供相同的交互体验。 Folo 玩具还提供许多其他产品,可以在此处找到。这是他们的店铺地址:https://folotoy.taobao.com/

立即购买 Folo Toy 产品,在联系客户服务时提供我的促销代码 F-001–9 即可享受折扣。购买 Fofo G6 可以节省 20 元,购买 Octopus Dev Suit 可以节省 15 元,购买 Cactus 可以节省 10 元。大多数其他商品也可享受 10 元折扣,但请联系客服咨询。

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

参考链接:

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