架构介绍#
ACE Agent 是一组微服务,旨在帮助构建 LLM 驱动的可扩展和可自定义的对话式 AI Agent。ACE Agent 微服务与其他 ACE 微服务一起,提供了编排管道的能力,包括复杂的多模态对话用例。让我们首先介绍 ACE Agent 微服务。
聊天控制器
聊天控制器编排基于语音 IO 的 bot 的端到端 bot 管道。它公开了一个 gRPC API,您可以使用它来构建对话式 AI 客户端应用程序。聊天控制器创建一个由自动语音识别 (ASR)、聊天引擎、文本到语音 (TTS)、NVIDIA Omniverse Audio2Face 客户端组成的管道,并管理这些模块之间音频或文本数据的流动。它可以使用 Redis 消息代理来发送元数据以及发送和接收事件。可选地,它可以连接到插件服务器而不是聊天引擎,以允许直接集成基于 LangChain 或其他框架的 agent。
聊天引擎
聊天引擎是 NVIDIA ACE Agent 管道的关键组件,驱动对话进行。它与 ACE Agent 生态系统中的其他组件交互,为用户请求制定响应。它负责维护用户上下文和对话历史记录。它可以部署在 CLI、服务器或事件接口中,您可以根据与您的 bot 交互的用例选择接口。
聊天引擎基于 NVIDIA NeMo Guardrails,其架构 在此处描述。您可以使用 Colang 设计对话流程,Colang 是一种基于事件的对话建模语言,可以设计人与 bot 之间高度灵活的对话交互。由于学习一门新语言并非易事,Colang 被设计为自然语言和 Python 的混合体。在底层,Colang 脚本由 Python 运行时解释,该运行时目前是 NeMo Guardrails (0.10.1) 的一部分。
插件服务器
插件服务器允许我们在 bot 中添加用例/域特定的业务逻辑。例如,您需要调用天气 API 来回答与天气相关的查询,类似地,bot 可能需要访问本地或远程托管的某些内部数据库,以提供查询的答案。
插件服务器是一个基于 FastAPI 的服务器,它使 ACE Agent 微服务能够使用 REST 接口与自定义业务逻辑进行交互。它公开了一个 Swagger 端点,使开发人员可以在沙箱环境中轻松编写和验证插件。
插件服务器允许您通过简单的接口集成您自己使用 LangChain 或 LlamaIndex 或任何其他框架构建的 agent,并允许您使用 ACE 微服务添加语音 AI 和 Avatar AI。
NLP 服务器
ACE Agent NLP 服务器公开了统一的 RESTful 接口,用于集成各种 NLP 模型和任务。NLP 服务器可以使用 NVIDIA Triton Inference Server 部署模型,并支持 NVIDIA TensorRT、PyTorch、TensorFlow、ONNX 和 Python 后端。您还可以使用 PyTriton 部署 Hugging Face 支持的模型,或者通过使用 @model_api decorator
编写自定义模型客户端来集成外部部署的模型。
ACE Agent 微服务可以根据用例在不同的管道中使用,让我们回顾一下几种可能的架构选择。
ACE Agent 事件架构#

ACE Agent 事件接口提供了一个异步的、基于事件的接口,用于与用 Colang 2.0 编写的 bot 进行交互,使 bot 能够充分利用 UMIM(统一多模态交互管理)中的所有功能。
什么是 UMIM? UMIM 旨在帮助管理 bot 和用户之间复杂的多模态交互(多件事可以同时发生,bot/avatar/用户的动作的时间对齐很重要,没有严格的轮流,等等)。此外,UMIM 在交互设计和实现必要组件的实际系统之间提供了一个抽象层。有关更多信息,请参阅 UMIM 文档。
ACE Agent 事件接口如何工作? ACE Agent 事件接口提供了一个 UMIM 兼容的异步的、基于事件的接口(目前仅支持 Redis)。事件接口通过将 UMIM 事件转发到 Colang 2.0 运行时,并将来自运行时的事件发布回事件流,从而使用 Redis 流管理交互。聊天控制器不使用语音管道管理器/状态机,而是将 ASR 文本记录发布到 redis 上,并异步检索 bot 响应以进行 TTS 生成。
聊天引擎微服务部署在事件接口中。聊天控制器微服务可以部署在 speech_umim
、avatar_umim
或 live_portrait_umim
管道配置中。有关管道配置的更多详细信息,请参阅 语音 AI。
要使用此架构构建 bot,请按照 使用 Colang 2.0 和事件接口构建 Bot 教程进行操作。
聊天引擎服务器架构#
在这种架构中,聊天控制器微服务具有状态机,也称为语音管道管理器,它管理不同组件之间音频或文本数据的流动。聊天控制器使用 ASR 扩展生成用户文本记录,使用 Rest API 将其传递给聊天引擎以生成 bot 响应,并使用 TTS 扩展为 bot 响应生成音频。可选地,它可以根据聊天控制器管道配置连接到视觉 AI、Redis 消息代理和 Avatar AI。

聊天控制器利用服务器接口中聊天引擎微服务公开的 Rest API。聊天控制器微服务可以部署在 speech_lite
、speech
、avatar
或 live_portrait
管道配置中。有关管道配置的更多信息,请参阅 语音 AI。
位于 samples/colang_1.0/
目录中的 Colang 1.0 示例 bot 以及可选的一些 Colang 2.0 示例 bot,例如 股票 bot,可以使用此架构部署。
插件服务器架构#
在这种架构中,与上面描述的聊天引擎服务器架构的唯一区别是,聊天引擎微服务被插件服务器微服务取代,以便于集成使用第三方框架(如 LangChain、LlamaIndex 等)构建的 agent 和 bot。

插件服务器使用预定义的 Rest API 模式部署使用其他框架构建的 agent 和 bot,以便与聊天控制器交互。聊天控制器微服务可以部署在 speech_lite
、speech_umim
或 avatar
管道配置中。有关管道配置的更多信息,请参阅 语音 AI。
DuckDuckGo LangChain bot 遵循此架构。要使用此架构构建 bot,请按照教程 构建基于 LangChain 的 bot 或 构建低延迟语音到语音 RAG Bot 进行操作。