Docker 环境#

先决条件

在您开始使用 NVIDIA ACE Agent 之前,假定您满足以下先决条件。当前版本的 ACE Agent 仅在 NVIDIA 数据中心 GPU 上受支持。

  1. 您已访问并登录 NVIDIA GPU Cloud (NGC)。您已在本地系统上安装了 NGC CLI 工具,并且您已登录到 NGC 容器注册表。有关 NGC 的更多详细信息,请参阅 NGC 文档

  2. 您已安装 DockerNVIDIA 容器工具包。确保您已完成Docker 安装后步骤,以便以非 root 用户身份管理 Docker。

  3. 您有权访问基于 NVIDIA Volta、NVIDIA Turing、NVIDIA Ampere、NVIDIA Ada Lovelace 或 NVIDIA Hopper 架构的 GPU。

  4. 您的工作站上已安装 python >= 3.8.10pip >= 23.1.2

设置

  1. 通过克隆 GitHub ACE 存储库 下载 NVIDIA ACE Agent 快速入门脚本。

    git clone git@github.com:NVIDIA/ACE.git
    cd ACE
    
  2. 转到 ACE Agent microservices 目录。

    cd microservices/ace_agent
    
  3. 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 命令之前,请执行以下步骤

  1. BOT_PATH 环境变量设置为包含 Bot 配置的目录。

    export BOT_PATH=<LOCAL Directory Path Containing Bot>
    
  2. 根据部署架构在 deploy/docker/docker_init.sh 中设置 PIPELINE。对于事件接口,使用 speech_umimavatar_umimlive_portrait_umim,对于服务器接口,使用 speech_liteavatarlive_portrait。默认情况下,它设置为 speech_umim 模式。

  3. 通过 sourcing deploy/docker/docker_init.sh 导出所需的环境变量。

    source deploy/docker/docker_init.sh
    
  4. 将环境变量传递给 ACE Agent 容器。您可以利用与 docker-compose.yml 位于同一目录中的 .env 文件。

  5. 停止所有正在运行的 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,请执行以下步骤

  1. 设置 OpenAI API 密钥环境变量。

    export OPENAI_API_KEY=...
    
  2. 准备 Docker compose 命令的环境。

    export BOT_PATH=./samples/chitchat_bot/
    source deploy/docker/docker_init.sh
    
  3. 部署 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
    
  4. 通过 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.
    
  5. 停止所有正在运行的 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,请执行以下步骤

  1. 设置 OpenAI API 密钥环境变量。

    export OPENAI_API_KEY=...
    
  2. 准备 Docker compose 命令的环境。

    export BOT_PATH=./samples/stock_bot/
    source deploy/docker/docker_init.sh
    
  3. 部署 ACE Agent 微服务。部署 Chat Engine、Plugin 服务器和 NLP 服务器容器。

    docker compose -f deploy/docker/docker-compose.yml up chat-bot -d
    

    您可以使用 URL http://<工作站 IP>:7006/ 与 Bot 交互。

Stock Market bot sample
  1. 停止部署。

    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,请执行以下步骤

  1. 设置 OpenAI API 密钥环境变量。

    export OPENAI_API_KEY=...
    
  2. 准备 Docker compose 命令的环境。

    export BOT_PATH=./samples/stock_bot
    source deploy/docker/docker_init.sh
    
  3. 部署 ACE Agent 微服务。部署 Chat Engine、Plugin 服务器和 NLP 服务器容器以及 Redis 容器。

    docker compose -f deploy/docker/docker-compose.yml up event-bot -d
    

    您可以使用 URL http://<工作站 IP>:7006/ 与 Bot 交互。

Stock Market bot sample
  1. 停止部署。

    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,请执行以下步骤

  1. 设置 OpenAI API 密钥环境变量。

    export OPENAI_API_KEY=...
    
  2. 准备 Docker compose 命令的环境。

    export BOT_PATH=./samples/stock_bot/
    source deploy/docker/docker_init.sh
    
  3. 对于基于服务器接口的 Bot,我们需要为 Chat Controller 微服务使用 speech_liteavatarlive_portrait 管线配置。更新 deploy/docker/docker_init.sh 中的 PIPELINE 变量,或通过手动设置 PIPELINE 环境变量来覆盖。

    export PIPELINE=speech_lite
    
  4. 部署 Bot 所需的语音和 NLP 模型,首次可能需要 20-40 分钟。对于股票示例 Bot,将部署 Riva ASR(自动语音识别)和 TTS(文本到语音)模型。

    docker compose -f deploy/docker/docker-compose.yml up model-utils-speech
    
  5. 部署 ACE Agent 微服务。部署 Chat Controller、Chat Engine、Plugin 服务器、NLP 服务器和 WebUI 微服务。

    docker compose -f deploy/docker/docker-compose.yml up speech-bot -d
    
  6. 等待几分钟,让所有服务准备就绪,您可以检查各个微服务的 Docker 日志以进行确认。您将在 Chat Controller 容器的 Docker 日志中看到日志打印 Server listening on 0.0.0.0:50055

  7. 使用 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,请执行以下步骤

  1. 设置 OpenAI API 密钥环境变量。

    export OPENAI_API_KEY=...
    
  2. 准备 Docker compose 命令的环境。

    export BOT_PATH=./samples/stock_bot
    source deploy/docker/docker_init.sh
    
  3. 对于基于事件的 Bot,我们需要为 Chat Controller 微服务使用 speech_umimlive_portrait_umimavatar_umim 管线配置。确保正确设置了 deploy/docker/docker_init.sh 中的 PIPELINE 变量,否则,我们需要通过手动设置 PIPELINE 环境变量来覆盖。

    export PIPELINE=speech_umim
    
  4. 部署 Bot 所需的语音和 NLP 模型,首次可能需要 20-40 分钟。对于 Colang 2.0 示例 Bot,将部署 Riva ASR(自动语音识别)和 TTS(文本到语音)模型。

    docker compose -f deploy/docker/docker-compose.yml up model-utils-speech
    
  5. 部署 ACE Agent 微服务。部署 Chat Controller、Chat Engine、Plugin 服务器、WebUI 和 NLP 服务器微服务以及 Redis 容器。

    docker compose -f deploy/docker/docker-compose.yml up speech-event-bot -d
    
  6. 等待几分钟,让所有服务准备就绪,您可以检查各个微服务的 Docker 日志以进行确认。您将在 Chat Controller 容器的 Docker 日志中看到日志打印 Server listening on 0.0.0.0:50055

  7. 使用 URL http://<工作站 IP>:7006/ 与 Bot 交互。为了访问浏览器上的麦克风,您需要在 chrome://flags/edge://flags/ 中启用 insecure origins treated as secure 标志,并允许 http://<工作站 IP>:7006 作为安全端点。

Stock Market bot sample

或者,您可以使用 Python 示例 gPRC 客户端,该客户端位于 快速入门资源中。

模型部署#

为了部署 Bot 所需的所有模型,请执行以下步骤

  1. 准备 Docker compose 命令的环境。

    export BOT_PATH=<BOT Directory containing model_config.yaml>
    source deploy/docker/docker_init.sh
    
  2. 部署 NLP 模型。

    docker compose -f deploy/docker/docker-compose.yml up model-utils
    
  3. 部署 Bot 所需的语音和 NLP 模型。

    docker compose -f deploy/docker/docker-compose.yml up model-utils-speech
    
  4. 停止所有正在运行的模型。

    docker stop riva-speech-server nlp_triton