LLM Bot#

这是一个示例聊天机器人,展示了如何将 LLM 连接到 ACE Agent Speech 管线中。它使用 NVIDIA NIM 的本地 LLama3 8b 模型 LLM 部署。

LLM bot 展示了以下 ACE Agent 功能

  • 将任何 LLM 模型与 ACE Agent 集成

  • 使用 NVIDIA NIM 部署本地 LLM 模型

  • 在操作中处理对话历史记录

  • 使用 ASR 2 pass End of Utterance (EOU) 实现低延迟

  • 始终开启的 Barge-In 支持

  • 支持使用事件架构进行部署

    注意

    我们将为 LLM API 调用发送早期触发用户查询,如果用户在单词之间暂停超过 240 毫秒,可能需要重新触发。平均而言,对于每个用户查询,您可能会进行 2 次额外的 LLM 调用,这将在大规模部署时需要额外的计算/成本。

基于 Docker 的 bot 部署

  1. 在启动 bot 之前,使用您的 NGC Personal API 密钥设置 NGC_CLI_API_KEY 环境变量。

    export NGC_CLI_API_KEY=...
    
  2. 在本地部署 Llama3 8b 模型。模型部署将需要 A100 或 H100 GPU 设备。您可以跳到步骤 3 以使用托管的 LLM 模型。

    1. 创建一个目录来缓存模型,并将缓存路径导出为环境变量

      mkdir -p ~/.cache/model-cache
      export MODEL_DIRECTORY=~/.cache/model-cache
      
    2. 部署 NeMo LLM 推理微服务。

      USERID=$(id -u) docker compose -f ./samples/llm_bot/docker-compose-nim-ms.yaml up -d
      
    3. 如果您使用不同的系统进行模型部署,请更新 actions.py 中的 LLM BASE_URL

  3. 或者,您可以使用来自 build.nvidia.com 的托管 NIM 模型。

    1. 更新 actions.py 以使用 BASE_URL 作为 https://integrate.api.nvidia.com/v1

    2. 使用具有 AI Foundation Models and Endpoints 服务的 Personal NGC API 密钥或使用 NVIDIA API Catalog 生成的密钥设置 NVIDIA_API_KEY。获取您的 NVIDIA API 密钥。

      1. 转到 NVIDIA API Catalog

      2. 选择任何模型。

      3. 单击 获取 API 密钥

  4. 或者,您可以使用 OpenAI 模型。

    1. 更新 actions.py 中的 AsyncOpenAI 客户端,使其不使用 base_url

      client = AsyncOpenAI(api_key=os.getenv("OPENAI_API_KEY"))
      
    2. 设置 OPENAI_API_KEY 环境变量。

  5. 为 Docker compose 命令准备环境。

    export BOT_PATH=./samples/llm_bot/
    source deploy/docker/docker_init.sh
    
  6. 部署 Riva ASR(自动语音识别)和 TTS(文本到语音)模型。

    docker compose -f deploy/docker/docker-compose.yml up model-utils-speech
    
  7. 部署 ACE Agent 微服务。部署 Chat Engine 和 Chat controller 容器。

    docker compose -f deploy/docker/docker-compose.yml up --build speech-event-bot -d
    
  8. 使用 URL http://<workstation IP>:7006/ 与 bot 交互。

    为了访问浏览器上的麦克风,我们需要通过添加 SSL 验证将 http 转换为 https 端点,或者更新您的 chrome://flags/edge://flags/ 以允许 http://<workstation IP>:7006 作为安全端点。

    示例问题 - 游戏最好的 GPU 是什么?