Docker 环境#
先决条件
在您开始使用 NVIDIA ACE Agent 之前,假定您满足以下先决条件。当前版本的 ACE Agent 仅在 NVIDIA 数据中心 GPU 上受支持。
您已访问并登录 NVIDIA GPU Cloud (NGC)。您已在本地系统上安装了 NGC CLI 工具,并且您已登录到 NGC 容器注册表。有关 NGC 的更多详细信息,请参阅 NGC 文档。
您已安装 Docker 和 NVIDIA 容器工具包。确保您已完成Docker 安装后步骤,以便以非 root 用户身份管理 Docker。
您有权访问基于 NVIDIA Volta、NVIDIA Turing、NVIDIA Ampere、NVIDIA Ada Lovelace 或 NVIDIA Hopper 架构的 GPU。
您的工作站上已安装
python >= 3.8.10
和pip >= 23.1.2
。
设置
通过克隆 GitHub ACE 存储库 下载 NVIDIA ACE Agent 快速入门脚本。
git clone git@github.com:NVIDIA/ACE.git cd ACE
转到 ACE Agent
microservices
目录。cd microservices/ace_agent
在
NGC_CLI_API_KEY
环境变量中设置您的 NGC 个人 API 密钥。根据 Bot 的配置,您可能需要导出其他环境变量。例如,使用 OpenAI 模型的 Bot 将需要设置OPENAI_API_KEY
环境变量。export NGC_CLI_API_KEY=...
部署
ACE Agent 快速入门包 附带一个 deploy/docker/docker-compose.yml
用于部署微服务。在运行 Docker compose 命令之前,请执行以下步骤
将
BOT_PATH
环境变量设置为包含 Bot 配置的目录。export BOT_PATH=<LOCAL Directory Path Containing Bot>
根据部署架构在
deploy/docker/docker_init.sh
中设置PIPELINE
。对于事件接口,使用speech_umim
、avatar_umim
或live_portrait_umim
,对于服务器接口,使用speech_lite
、avatar
或live_portrait
。默认情况下,它设置为speech_umim
模式。通过 sourcing
deploy/docker/docker_init.sh
导出所需的环境变量。source deploy/docker/docker_init.sh
将环境变量传递给 ACE Agent 容器。您可以利用与
docker-compose.yml
位于同一目录中的.env
文件。停止所有正在运行的 Docker 容器。
docker compose -f deploy/docker/docker-compose.yml down
CLI 接口#
chat-bot-cli
- 使您可以访问 Chat Engine Docker 终端,并且可以使用您的工作站终端与 Bot 交互。
闲聊示例 Bot 使用 OpenAI gpt-4-turbo
作为主要模型。闲聊 Bot 位于 快速入门目录 中的 ./samples/chitchat_bot
。
为了通过 CLI 接口部署闲聊示例 Bot,请执行以下步骤
设置 OpenAI API 密钥环境变量。
export OPENAI_API_KEY=...
准备 Docker compose 命令的环境。
export BOT_PATH=./samples/chitchat_bot/ source deploy/docker/docker_init.sh
部署 ACE Agent 容器。部署 Chat Engine、Plugin 服务器和 NLP 服务器容器。为了启动 CLI 接口,我们将在 Chat Engine 容器中发出
docker exec
。docker compose -f deploy/docker/docker-compose.yml up chat-bot-cli -d docker compose -f deploy/docker/docker-compose.yml exec chat-bot-cli $CLI_CMD
通过 CLI 提供用户查询与 Bot 交互。
[YOU] Are you a person [BOT] I'm not a real person, but I certainly exist. [YOU] What is your name? [BOT] I don't have a name. Or I don't know it.
停止所有正在运行的 Docker 容器。
docker compose -f deploy/docker/docker-compose.yml down
HTTP 服务器接口#
chat-bot
- HTTP Web 服务器部署后仅支持文本聊天。
股票 Bot 使用 OpenAI 的 gpt-4-turbo
模型作为主要模型。股票 Bot 位于 快速入门目录 中的 ./samples/stock_bot
。
为了通过服务器接口部署股票示例 Bot,请执行以下步骤
设置 OpenAI API 密钥环境变量。
export OPENAI_API_KEY=...
准备 Docker compose 命令的环境。
export BOT_PATH=./samples/stock_bot/ source deploy/docker/docker_init.sh
部署 ACE Agent 微服务。部署 Chat Engine、Plugin 服务器和 NLP 服务器容器。
docker compose -f deploy/docker/docker-compose.yml up chat-bot -d
您可以使用 URL
http://<工作站 IP>:7006/
与 Bot 交互。

停止部署。
docker compose -f deploy/docker/docker-compose.yml down
事件接口#
ACE Agent 事件接口提供了一个异步的、基于事件的接口,用于与 Colang 2.0 中编写的 Bot 进行交互,从而使 Bot 可以充分利用 UMIM(统一多模态交互管理)中的所有功能。
股票示例 Bot 位于 快速入门目录 中的 ./samples/stock_bot
。股票示例 Bot 使用 OpenAI gpt-4-turbo 作为主要模型。
为了通过事件接口启动 Colang 2.0 示例 Bot,请执行以下步骤
设置 OpenAI API 密钥环境变量。
export OPENAI_API_KEY=...
准备 Docker compose 命令的环境。
export BOT_PATH=./samples/stock_bot source deploy/docker/docker_init.sh
部署 ACE Agent 微服务。部署 Chat Engine、Plugin 服务器和 NLP 服务器容器以及 Redis 容器。
docker compose -f deploy/docker/docker-compose.yml up event-bot -d
您可以使用 URL
http://<工作站 IP>:7006/
与 Bot 交互。

停止部署。
docker compose -f deploy/docker/docker-compose.yml down
带有 HTTP 接口的 gRPC 接口#
gRPC Web 服务器部署后支持语音捕获和播放。
股票 Bot 使用 OpenAI 的 gpt-4-turbo
模型作为主要模型。股票 Bot 位于 快速入门目录 中的 ./samples/stock_bot
。
注意
HTTP 接口只能用于在
bot_config.yaml
文件中具有colang_disable_async_execution: True
配置的 Bot,因为 HTTP 接口需要以同步模式响应每个用户查询。
为了通过 gRPC 接口部署股票示例 Bot,请执行以下步骤
设置 OpenAI API 密钥环境变量。
export OPENAI_API_KEY=...
准备 Docker compose 命令的环境。
export BOT_PATH=./samples/stock_bot/ source deploy/docker/docker_init.sh
对于基于服务器接口的 Bot,我们需要为 Chat Controller 微服务使用
speech_lite
、avatar
或live_portrait
管线配置。更新deploy/docker/docker_init.sh
中的PIPELINE
变量,或通过手动设置PIPELINE
环境变量来覆盖。export PIPELINE=speech_lite
部署 Bot 所需的语音和 NLP 模型,首次可能需要 20-40 分钟。对于股票示例 Bot,将部署 Riva ASR(自动语音识别)和 TTS(文本到语音)模型。
docker compose -f deploy/docker/docker-compose.yml up model-utils-speech
部署 ACE Agent 微服务。部署 Chat Controller、Chat Engine、Plugin 服务器、NLP 服务器和 WebUI 微服务。
docker compose -f deploy/docker/docker-compose.yml up speech-bot -d
等待几分钟,让所有服务准备就绪,您可以检查各个微服务的 Docker 日志以进行确认。您将在 Chat Controller 容器的 Docker 日志中看到日志打印
Server listening on 0.0.0.0:50055
。使用 URL
http://<工作站 IP>:7006/
与 Bot 交互。为了访问浏览器上的麦克风,您需要在chrome://flags/
或edge://flags/
中启用insecure origins treated as secure flag
标志,并允许http://<工作站 IP>:7006
作为安全端点。
或者,您可以使用 Python 示例 gPRC 客户端,该客户端位于 快速入门资源中。
带有语音的事件接口#
对于语音到语音对话,您可以部署 gRPC 服务器以及事件接口。
股票示例 Bot 位于 快速入门目录 中的 ./samples/stock_bot
。股票示例 Bot 使用 OpenAI gpt-4-turbo
作为主要模型。
为了通过 gRPC 接口部署股票示例 Bot,请执行以下步骤
设置 OpenAI API 密钥环境变量。
export OPENAI_API_KEY=...
准备 Docker compose 命令的环境。
export BOT_PATH=./samples/stock_bot source deploy/docker/docker_init.sh
对于基于事件的 Bot,我们需要为 Chat Controller 微服务使用
speech_umim
、live_portrait_umim
或avatar_umim
管线配置。确保正确设置了deploy/docker/docker_init.sh
中的PIPELINE
变量,否则,我们需要通过手动设置PIPELINE
环境变量来覆盖。export PIPELINE=speech_umim
部署 Bot 所需的语音和 NLP 模型,首次可能需要 20-40 分钟。对于 Colang 2.0 示例 Bot,将部署 Riva ASR(自动语音识别)和 TTS(文本到语音)模型。
docker compose -f deploy/docker/docker-compose.yml up model-utils-speech
部署 ACE Agent 微服务。部署 Chat Controller、Chat Engine、Plugin 服务器、WebUI 和 NLP 服务器微服务以及 Redis 容器。
docker compose -f deploy/docker/docker-compose.yml up speech-event-bot -d
等待几分钟,让所有服务准备就绪,您可以检查各个微服务的 Docker 日志以进行确认。您将在 Chat Controller 容器的 Docker 日志中看到日志打印
Server listening on 0.0.0.0:50055
。使用 URL
http://<工作站 IP>:7006/
与 Bot 交互。为了访问浏览器上的麦克风,您需要在chrome://flags/
或edge://flags/
中启用insecure origins treated as secure
标志,并允许http://<工作站 IP>:7006
作为安全端点。

或者,您可以使用 Python 示例 gPRC 客户端,该客户端位于 快速入门资源中。
模型部署#
为了部署 Bot 所需的所有模型,请执行以下步骤
准备 Docker compose 命令的环境。
export BOT_PATH=<BOT Directory containing model_config.yaml> source deploy/docker/docker_init.sh
部署 NLP 模型。
docker compose -f deploy/docker/docker-compose.yml up model-utils
部署 Bot 所需的语音和 NLP 模型。
docker compose -f deploy/docker/docker-compose.yml up model-utils-speech
停止所有正在运行的模型。
docker stop riva-speech-server nlp_triton