为什么选择 Dapr Agents

了解 Dapr Agents 的优势与使用场景

Dapr Agents 是一个用于构建和编排基于 LLM 的自主代理的开源框架,它利用 Dapr 经过验证的分布式系统基础。与要求开发者从零开始构建基础设施的其他代理框架不同,Dapr Agents 通过提供企业级的可扩展性、状态管理和消息传递能力,使团队能够专注于代理智能。这种方法消除了重新创建分布式系统基础组件的复杂性,同时提供了由 Dapr 支持的代理工作流。

现有框架的挑战

当今许多代理框架试图通过开发自己的平台来重新定义微服务的构建和编排方式,以处理核心的分布式系统能力。虽然这些努力展示了创新,但在扩展或适应新环境时,往往导致学习曲线陡峭、系统分散和不必要的复杂性。

这些框架要求开发者采用全新的范式或重新创建基础架构,而不是基于现有的、被证明能够在规模上处理这些挑战的解决方案。这种额外的复杂性分散了对主要目标的关注:设计和实现智能、有效的代理。

Dapr Agents 如何解决这些问题

Dapr Agents 采用了一种不同的方法,它基于 Dapr 构建,利用其经过验证的 API 和模式,包括工作流发布订阅消息状态管理服务通信。这种集成消除了从零开始重新创建基础组件的需要。

通过与 Dapr 的运行时和模块化组件集成,Dapr Agents 赋予开发者构建和部署代理的能力,这些代理可以作为更大系统内的协作服务工作。无论是试验单个代理还是编排涉及多个代理的工作流,Dapr Agents 都允许团队专注于 LLM 驱动的代理的智能和行为,同时利用经过验证的框架来实现可扩展性和可靠性。

原则

代理中心设计

Dapr Agents 的设计理念是将由 LLM 驱动的代理置于任务执行和工作流编排的核心。这一原则强调:

  • LLM 驱动的代理:Dapr Agents 使创建能够利用 LLM 进行推理、动态决策和自然语言交互的代理成为可能。
  • 自适应任务处理:Dapr Agents 中的代理配备了灵活的模式,如工具调用和推理循环(例如 ReAct),使它们能够自主处理复杂且不断变化的任务。
  • 多代理系统:Dapr Agents 的框架允许代理作为模块化的、可复用的构建块,无缝集成到工作流中,无论是独立运行还是协作运行。

虽然 Dapr Agents 以代理为中心,但它也认识到在确定性工作流或更简单的任务序列中直接使用 LLM 的多功能性。在代理内置的任务处理模式(如 tool callingReAct 循环)不必要的场景中,LLM 可以作为推理和决策的核心组件。这种灵活性确保用户可以调整 Dapr Agents 以满足各种需求,而不局限于单一方法。

模块化原则

由持久化工作流支持

Dapr Agents 将持久性置于其架构的核心,利用 Dapr 工作流作为持久代理执行和确定性多代理编排的基础。

  • 持久化代理执行:DurableAgents 本质上由工作流支持,确保所有 LLM 调用和工具执行保持持久化、可审计和可恢复。工作流检查点保证代理可以从任何故障点恢复,同时保持状态一致性。
  • 确定性多代理编排:工作流提供对任务依赖和多个代理之间协调的集中控制。Dapr 的代码优先工作流引擎能够可靠地编排复杂的业务流程,同时在适当的地方保持代理自主性。

通过将工作流作为基础层集成,Dapr Agents 使系统能够结合确定性执行的可靠性和 LLM 驱动的代理的智能,确保可靠性和可扩展性。

模块化组件模型

Dapr Agents 利用 Dapr 的可插拔组件框架和构建块来简化开发并增强灵活性:

  • 核心功能的构建块:Dapr 提供 API 构建块,如发布订阅消息、状态管理、服务调用等,以解决常见的微服务挑战并促进最佳实践。
  • 可互换的组件:每个构建块运行在可互换的组件上(例如 Redis、Kafka、Azure CosmosDB),允许您在不更改应用程序代码的情况下替换实现。
  • 无缝转换:使用默认配置在本地开发,并通过简单地更新组件定义轻松部署到云环境。

消息驱动的通信

Dapr Agents 强调使用发布订阅消息进行代理之间的事件驱动通信。这一原则确保:

  • 解耦架构:用于可扩展性和模块化的异步通信。
  • 实时适应性:代理动态响应事件,实现更快、更灵活的任务执行。
  • 事件驱动工作流:通过将发布订阅消息与工作流能力相结合,代理可以通过事件流协作,同时参与更大的编排工作流,实现自主协调和结构化任务执行。

消息原则

解耦的基础设施设计

Dapr Agents 确保代理与底层基础设施之间的清晰分离,强调简单性、可扩展性和适应性:

  • 代理简单性:代理纯粹专注于推理和任务执行,而发布订阅消息、路由和验证由模块化基础设施组件外部管理。
  • 可扩展和适应性系统:通过卸载非代理特定的职责,Dapr Agents 允许代理独立扩展并无缝适应新的用例或集成。

解耦原则

Dapr Agents 的优势

作为一等公民的可扩展工作流

Dapr Agents 使用持久执行工作流引擎,保证每个代理任务都能执行完成,无论网络中断、节点崩溃和其他破坏性故障。开发者无需了解底层工作流引擎的概念——只需编写一个执行任意数量任务的代理,这些任务将自动分布在集群中。如果任何任务失败,它将被重试并从离开的地方恢复其状态。

成本效益的 AI 采用

Dapr Agents 基于 Dapr 的 Workflow API 构建,该 API 将每个代理表示为一个 actor,这是一个计算和状态的单一单元,是线程安全的且原生分布式的。这种设计实现了缩容至零的架构,最大限度地减少基础设施成本,使各规模的组织都能采用 AI。底层的虚拟 actor 模型允许数千个代理在单台机器上按需运行,并在从零扩展时保持低延迟。当不使用时,代理会被系统回收,但会保留其状态直到再次需要。这种设计消除了性能和资源效率之间的权衡。

以数据为中心的 AI 代理

通过内置的对超过 50 个企业数据源的连接,Dapr Agents 高效地处理结构化和非结构化数据。从基本的 PDF 提取到大规模数据库交互,它使数据驱动的 AI 工作流只需最少的代码更改即可实现。Dapr 的绑定状态存储,以及 MCP 支持,为代理数据摄取提供了对众多数据源的访问。

加速开发

Dapr Agents 提供 AI 功能,为开发者提供完整的 API 表面来解决常见问题,包括:

  • 灵活的提示
  • 结构化输出
  • 多个 LLM 提供商
  • 上下文记忆
  • 智能工具选择
  • MCP 集成
  • 多代理通信

集成的安全性和可靠性

通过基于 Dapr 构建,平台和基础设施团队可以将 Dapr 的弹性策略应用于 Dapr Agents 使用的数据库和消息代理组件。这些策略包括超时、重试/退避策略和断路器。对于安全性,Dapr 提供了将对特定数据库或消息代理的访问范围限定到一个或多个代理应用部署的选项。此外,Dapr Agents 使用 mTLS 加密其底层组件之间的通信。

内置的消息传递和状态基础设施

  • 服务到服务调用:通过内置的服务发现、错误处理和分布式跟踪,实现代理之间的直接通信。代理可以在多代理工作流中使用此功能进行同步消息传递。
  • 发布和订阅:通过共享消息总线支持代理之间的松散耦合协作。这实现了任务分发和协调的实时、事件驱动的交互。
  • 持久化工作流:定义长期的、持久的工作流,将确定性过程与基于 LLM 的决策相结合。Dapr Agents 使用它来编排复杂的多步骤代理工作流。
  • 状态管理:提供灵活的键值存储,使代理能够在交互之间保留上下文,确保工作流期间的连续性和适应性。
  • LLM 集成:使用 Dapr Conversation API抽象 LLM 推理 API 以进行聊天补全,并为其他 LLM 集成(如嵌入和音频处理)提供本机客户端。

供应商中立和开源

作为 CNCF 的一部分,Dapr Agents 是供应商中立的,消除了对锁定、知识产权风险或专有限制的担忧。组织可以使用他们可以审计和贡献的开源软件,对其 AI 应用程序获得完全的灵活性和控制权。