NVIDIA 用 DGX Spark 和 Reachy Mini 打造桌面智能体

教程Hugging Face2026年1月5日6 分钟阅读
NVIDIA 用 DGX Spark 和 Reachy Mini 打造桌面智能体
在 CES 2026 上,NVIDIA 展示了如何利用 DGX Spark 和 Reachy Mini 打造一个能看、能说、能行动的桌面智能体。这篇教程提供了完整的复现步骤,从模型部署到硬件集成。

今天在 CES 2026 上,NVIDIA 发布了一系列新的开源模型,旨在推动智能体(Agent)的未来发展,无论是在线还是现实世界。从最近发布的 NVIDIA Nemotron 推理大语言模型(LLM),到新的 NVIDIA Isaac GR00T N1.6 开源推理视觉语言模型(VLA)和 NVIDIA Cosmos 世界基础模型,所有构建智能体所需的模块都已就绪。

但如果你能在自己的办公桌上,亲手赋予一个智能体生命呢?一个对你有用、并能私密处理你数据的 AI 伙伴?

在今天的 CES 主题演讲中,黄仁勋向我们展示了如何做到这一点:利用 NVIDIA DGX Spark 的处理能力,结合 Reachy Mini,创造一个你可以与之交谈和协作的、属于你自己的小型办公室 R2D2。

这篇博客文章提供了一个分步指南,教你如何在家中使用 DGX Spark 和 Reachy Mini 复现这个令人惊叹的体验。

所需材料

如果你想马上开始,这里是演示的源代码

我们将使用以下组件:

  1. 一个推理模型:演示使用 NVIDIA Nemotron 3 Nano
  2. 一个视觉模型:演示使用 NVIDIA Nemotron Nano 2 VL
  3. 一个文本转语音模型:演示使用 ElevenLabs
  4. Reachy Mini(或 Reachy Mini 模拟器
  5. Python v3.10+ 环境,并安装 uv

你可以自由调整这个“配方”,让它更适合你。有多种方式可以将模型集成到你的应用中:

  1. 本地部署 – 在你自己的硬件上运行(DGX Spark 或具有足够显存的 GPU)。我们的实现需要约 65GB 磁盘空间用于推理模型,约 28GB 用于视觉模型。
  2. 云端部署 – 在云端 GPU 上部署模型,例如通过 NVIDIA BrevHugging Face Inference Endpoints
  3. 无服务器模型端点 – 向 NVIDIAHugging Face Inference Providers 发送请求。

赋予 Reachy 智能体能力

将一个 AI 智能体从一个简单的聊天界面,变成你可以自然交互的东西,能让对话感觉更真实。当一个 AI 智能体能通过摄像头“看”、能大声“说”、并能执行动作时,体验就会变得更加吸引人。这正是 Reachy Mini 所能实现的。

Reachy Mini 的设计是可定制的。通过访问其传感器、执行器和 API,你可以轻松地将其接入你现有的智能体栈,无论是通过模拟器还是直接通过 Python 控制的真实硬件。

本文的重点是组合现有的构建模块,而不是重新发明它们。我们结合了用于推理和视觉的开源模型、用于编排的智能体框架(Agent Framework),以及用于执行动作的工具处理器。每个组件都是松耦合的,便于更换模型、改变路由逻辑或添加新行为。

与封闭的个人助手不同,这个设置是完全开放的。你控制着模型、提示词、工具和机器人的动作。Reachy Mini 只是你的智能体的物理端点,在这里,感知、推理和行动汇聚在一起。

构建智能体

在这个例子中,我们使用 NVIDIA NeMo Agent Toolkit,这是一个灵活、轻量级、框架无关的开源库,用于连接智能体的所有组件。它能与 LangChain、LangGraph、CrewAI 等其他智能体框架无缝协作,处理模型间的交互、在它们之间路由输入输出,并让你能轻松尝试不同配置或添加新功能,而无需重写核心逻辑。该工具包还提供了内置的性能分析和优化功能,让你可以跟踪跨工具和智能体的 Token 使用效率与延迟,识别瓶颈,并自动调整超参数,以在降低成本和延迟的同时最大化准确性。

步骤 0:设置并获取模型和服务访问权限

首先,克隆包含所有所需代码的仓库:

code
git clone git@github.com:brevdev/reachy-personal-assistant
cd reachy-personal-assistant

要访问由 NVIDIA Nemotron 模型驱动的智能层,你可以使用 NVIDIA NIMvLLM 部署它们,或者通过 build.nvidia.com 上提供的远程端点进行连接。

以下说明假设你通过端点访问 Nemotron 模型。在主目录中创建一个 .env 文件,填入你的 API 密钥。对于本地部署,你不需要指定 API 密钥,可以跳过此步骤。

code
NVIDIA_API_KEY=your_nvidia_api_key_here
ELEVENLABS_API_KEY=your_elevenlabs_api_key_here

步骤 1:构建聊天界面

首先,通过 NeMo Agent Toolkit 的 API 服务器运行一个基础的 LLM 聊天工作流。NeMo Agent Toolkit 支持通过 nat serve 运行工作流,并提供一个配置文件。这里传递的配置文件包含了智能体所需的所有设置信息,包括用于聊天、图像理解的模型,以及智能体使用的路由模型。NeMo Agent Toolkit UI 可以通过 HTTP/WebSocket 连接,这样你就可以像使用标准聊天产品一样与你的工作流聊天。在这个实现中,NeMo Agent Toolkit 服务器在端口 8001 上启动(这样你的机器人可以调用它,UI 也可以):

code
cd nat
uv venv
uv sync
uv run --env-file ../.env nat serve --config_file src/ces_tutorial/config.yml --port 8001

接下来,在另一个终端中验证你是否可以通过发送纯文本提示词来确保一切设置正确:

code
curl -s http://localhost:8001/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "test", "messages": [{"role": "user", "content": "What is the capital of France?"}]}'

查看智能体配置,你会发现它定义的功能远不止简单的聊天补全。接下来的步骤将详细介绍这些内容。

步骤 2:添加 NeMo Agent Toolkit 内置的 ReAct 智能体用于工具调用

工具调用(Tool Use)是 AI 智能体的重要组成部分。NeMo Agent Toolkit 包含一个内置的 ReAct 智能体(ReAct Agent),它可以在工具调用之间进行推理,并在回答前使用多个工具。我们将“动作请求”路由到一个被允许调用工具的 ReAct 智能体(例如,触发机器人行为或获取当前机器人状态的工具)。

一些需要记住的实用注意事项:

  • 保持工具模式(Tool Schemas)简洁(清晰的名称/描述/参数),因为这是智能体决定调用什么的依据。
  • 对步骤数设置硬性上限(max_tool_calls),以防止智能体陷入循环。
  • 如果使用物理机器人,考虑为物理动作采用“执行前确认”模式,以确保运动安全。

看看配置文件的这部分,它定义了工具(如维基百科搜索),并指定了用于管理它们的 ReAct 智能体模式。

code
functions:
   wikipedia_search:
      _type: wiki_search
      max_results: 2
      
   ..
   react_agent:
      _type: react_agent
      llm_name: agent_llm
      verbose: true
      parse_agent_response_max_retries: 3
      tool_names: [wikipedia_search]

​​workflow:
   _type: ces_tutorial_router_agent
   agent: react_agent

步骤 3:添加路由器以将查询定向到不同模型

核心思想是:不要用一个模型处理所有事情。相反,根据意图进行路由:

  • 文本查询可以使用快速的文本模型
  • 视觉查询必须通过视觉语言模型(VLM)运行
  • 动作/工具请求被路由到 ReAct 智能体 + 工具

你可以通过几种方式实现路由(启发式方法、轻量级分类器或专用的路由服务)。如果你想要这个想法的“生产”版本,NVIDIA 的 LLM Router 开发者示例 是完整的参考实现,并包含了评估和监控模式。

一个基本的路由策略可能如下:

  • 如果用户询问关于他们环境的问题,则将请求连同从摄像头(或 Reachy)捕获的图像一起发送给视觉语言模型(VLM)。
  • 如果用户询问需要实时信息的问题,则将输入发送给 ReAct 智能体,通过工具调用执行网络搜索。
  • 如果用户询问简单问题,则将请求发送给一个为闲聊优化的小型快速模型。

配置文件的这些部分定义了路由拓扑并指定了路由器模型。

code
functions:
   ..
   
   router:
      _type: router
      route_config:
        - name: other
          description: Any question that requires careful thought, outside information, image understanding, or tool calling to take actions.
        - name: chit_chat
          description: Any simple chit chat, small talk, or casual conversation.
        - name: image_understanding
          description: A question that requires the assistant to see the user eg a question about their appearance, environment, scene or surroundings. Examples what am I holding, what am I wearing, what do I look like, what is in my surroundings, what does it say on the whiteboard. Questions about attire eg what color is my shirt/hat/jacket/etc
      llm_name: routing_llm


llms:
   ..
   routing_llm: 
      _type: nim
      model_name: microsoft/phi-3-mini-128k-instruct
      temperature: 0.0

降低延迟与成本的方案

注意:如果想降低延迟/成本或离线运行,你可以自托管其中一个路由模型(通常是“快速文本”模型),而让视觉语言模型(VLM)保持远程。一种常见做法是通过 NVIDIA NIM 或 vLLM 提供服务,并将 NeMo Agent Toolkit 指向一个 OpenAI 兼容的端点。

第四步:添加 Pipecat 机器人,实现实时语音+视觉

现在进入实时环节。Pipecat 是一个专为低延迟语音/多模态智能体设计的框架:它编排音频/视频流、AI 服务和传输协议,让你能构建自然对话。在这个仓库中,机器人服务负责:

  • 捕捉视觉(机器人摄像头)
  • 语音识别 + 文本转语音
  • 协调机器人运动和表情行为

你可以在 reachy-personal-assistant/bot 文件夹中找到所有 Pipecat 机器人代码。

第五步:将一切连接到 Reachy 硬件或模拟器

Reachy Mini 暴露了一个守护进程,系统其余部分会连接到它。仓库默认在模拟器中运行这个守护进程(使用 --sim 标志)。如果你有真实的 Reachy 设备,可以移除这个标志,同样的代码就能控制你的机器人。

运行完整系统

你需要三个终端来运行整个系统:

终端 1:Reachy 守护进程

code
cd bot
# macOS:
uv run mjpython -m reachy_mini.daemon.app.main --sim --no-localhost-only

# Linux:
uv run -m reachy_mini.daemon.app.main --sim --no-localhost-only

如果使用物理硬件,记得从命令中省略 --sim 标志。

终端 2:机器人服务

code
cd bot
uv venv
uv sync
uv run --env-file ../.env python main.py

终端 3:NeMo Agent Toolkit 服务

如果 NeMo Agent Toolkit 服务在第一步后还没有运行,现在在终端 3 启动它。

code
cd nat
uv venv
uv sync
uv run --env-file ../.env nat serve --config_file src/ces_tutorial/config.yml --port 8001

启动与交互

所有终端设置好后,有两个主要窗口需要注意:

  1. Reachy 模拟器 – 当你在终端 1 启动模拟器守护进程时,这个窗口会自动出现。如果你用 Reachy mini 模拟器代替物理设备,这步适用。
  2. Pipecat Playground – 这是客户端 UI,你可以在这里连接到智能体,启用麦克风和摄像头输入,并查看实时转录。在终端 2,打开机器人服务暴露的 URL:http://localhost:7860/。在浏览器中点击“CONNECT”。可能需要几秒钟初始化,系统会提示你授予麦克风(和可选的摄像头)访问权限。

两个窗口都启动并运行后:

  • 客户端和智能体状态指示器应显示 READY
  • 机器人会用欢迎消息问候你:“Hello, how may I assist you today?”

这时,你就可以开始与你的智能体交互了!

试试这些示例提示

这里有几个简单的提示帮你测试个人助手。你可以从这些开始,然后尝试添加自己的提示,看看智能体如何回应!

纯文本提示(路由到快速文本模型)

  • “Explain what you can do in one sentence.”
  • “Summarize the last thing I said.”

视觉提示(路由到 VLM)

  • “What am I holding up to the camera?”
  • “Read the text on this page and summarize it.”

下一步探索方向

这不是一个“黑盒”助手,而是构建了一个私密、可定制的系统基础,让你能同时控制智能和硬件。你可以检查、扩展并在本地运行它,完全掌握数据流、工具权限以及机器人如何感知和行动。

根据你的目标,这里有几个方向可以继续探索:

  • 性能优化:使用 LLM Router 开发者示例,通过智能地在不同模型间定向查询来平衡成本、延迟和质量。
  • 查看使用 Nemotron 开源模型构建带安全护栏(Guardrails)的语音驱动 RAG 智能体的教程。
  • 掌握硬件:探索 Reachy Mini SDK 和模拟器文档,在部署到物理系统前设计和测试高级机器人行为。
  • 探索社区为 Reachy 构建的应用,并参与贡献。

想马上试试吗?在这里部署完整环境。一键点击,即可运行。

本文编译自 NVIDIA brings agents to life with DGX Spark and Reachy Mini,版权归原作者所有。

觉得有用?分享给更多人

获取每周 AI 工具精选

工具推荐、实战教程和生态洞察,每周更新。

相关文章

本文分享了如何将 GitHub Copilot SDK 集成到 React Native 应用中,构建一个名为 IssueCrush 的 Issue 智能分类工具。核心方案是服务端集成模式,解决了 SDK 依赖 Node.js 环境的问题,并详细介绍了生命周期管理、提示工程、响应处理和优雅降级等关键实现模式。

教程GitHub·3月24日·8 分钟

Starlette 1.0 发布,最大的变化是引入了基于异步上下文管理器的 lifespan 机制。作者利用 Claude 的 Skill 功能,让 AI 克隆代码库并学习新版本特性,然后成功生成了一个包含项目、任务、评论和标签的完整任务管理应用。

教程Simon Willison·3月22日·5 分钟

评论