AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

Dapr Agents 发布:支持规模化 AI 工作流、多智能体协作

  • 2025-03-31
    北京
  • 本文字数:2538 字

    阅读完需:约 8 分钟

Dapr Agents 发布:支持规模化 AI 工作流、多智能体协作

Dapr 最近推出了 Dapr Agents,一个利用大语言模型构建可扩展、可靠的 AI 智能体的框架。它支持结构化的工作流、多智能体协调和基于事件驱动的执行能力,并利用了 Dapr 的安全性、可观测性和云中立架构。Dapr Agents 专为企业使用而设计,支持数千个智能体,可与数据库集成,并通过强大的编排和消息传递确保可靠性。


Dapr Agents 基于 Dapr 提供了一个框架,用于开发能够利用 LLM 进行推理、行动和协作的 AI 智能体。它提供了可靠性、可扩展性和可观测性,支持在单个核心上运行数千个智能体,并且原生支持在 Kubernetes 上运行。作者 Mark Fussell、Yaron Schneider 和 Roberto Rodriguez 描述了 Dapr Agents 与其他框架的不同之处:


Dapr Agents 基于 Dapr 的完整工作流引擎。许多其他智能体和 LLM 框架使用的是自建的工作流系统,这些系统在生产环境中往往不够可靠。Dapr Agents 使用经过验证的 Dapr 工作流系统,该系统具备很好的处理故障、重试和扩展问题的能力。


import loggingimport asyncioimport requestsfrom dotenv import load_dotenv



from dapr_agents.llm.dapr import DaprChatClientfrom dapr_agents import AssistantAgent, tool



# Load environment variablesload_dotenv()



logging.basicConfig(level=logging.INFO)



@tooldef get_pr_code(repository: str, pr: str) -> str: """Get the code for a given PR""" response = requests.get(f"https://api.github.com/repos/{repository}/pulls/{pr}/files") files = response.json() code = {file["filename"]: requests.get(file["raw_url"]).text for file in files} return code



@tooldef perform_review(code: str) -> str: """Review code""" response = DaprChatClient().generate(f"Review the following code: {code}") return response.get_content()



# Define Code Review Agentcode_review_agent = AssistantAgent( name="CodeReviewAgent", role="Review PRs", instructions=["Review code in a pull request, then return comments and/or suggestions"], tools=[get_pr_code, perform_review], message_bus_name="messagepubsub", state_store_name="workflowstatestore", agents_registry_store_name="agentstatestore", service_port=8001,)



# Start Agent Workflow Serviceawait code_review_agent.start()
复制代码


使用 Dapr Agent 构建代码评审智能体的示例(来源)


Distributed Application Runtime (Dapr) 是一个开源框架,通过提供服务调用、状态管理、发布 / 订阅消息传递和可观测性等构建块来简化云原生应用程序的开发。它抽象了基础设施的复杂性,让开发人员能够专注于业务逻辑,并能够无缝地集成到 Kubernetes 和其他环境中。


Agentic AI 指的是那些能够自主处理信息、做出决策并执行任务的 AI 的驱动系统。在这一领域有多种解决方案,包括 LangChain、AutoGen 和 CrewAI 等框架,它们为开发人员提供了构建基于智能体的应用程序的能力。


Dapr Agents 利用大语言模型作为其推理引擎,并与外部工具集成来增强功能。开发者可以创建具备预定义角色、目标和指令的智能体,赋予它们推理能力以及基于工具的行动能力。他们还可以利用包含 LLM 推理的函数来定义结构化、确定性的工作流。这些工作流确保任务按照预设的顺序执行,同时通过工具集成保持了灵活性。



智能体工作流示例(来源)


Dapr Agents 支持多智能体工作流,智能体可以通过 Dapr 的发布 / 订阅消息传递进行协作。协调模型包括基于 LLM 的决策制定、随机选择和轮询任务分配,实现自适应、自我推理的工作流。作者进一步阐述了这一点:


智能体需要作为自主的实体来运行,能够动态响应事件,从而实现与工作流的实时交互和协作。这些事件驱动的智能体工作流利用了 Dapr 的发布 / 订阅消息传递系统,使得智能体能够通过消息智能体进行通信、共享任务,并根据环境触发的事件进行推理。



智能体可以通过消息智能体与其他智能体通信(来源)


该设计抽象了与数据库和消息智能体的集成,让开发人员能够在不进行重大代码更改的情况下切换基础设施供应商。它与 Prometheus 和 OpenTelemetry 等监控工具无缝集成,实现了可观测性。作为 CNCF 项目,它避免了供应商锁定,同时确保了安全通信和容错能力。


开发人员可以通过 GitHub 代码库探索 Dapr Agents 的功能,并加入 Discord 社区进行讨论和获取支持。


InfoQ 与 Diagrid 的 CTO 和 Dapr 维护者 Yaron Schneider 就 Dapr Agents、其实现和未来计划进行了交流。


InfoQ:你提到 Dapr Agents 的设计目标是能够在单个核心上运行数千个智能体。那么是哪些优化措施或架构决策实现了这个目标?在 Kubernetes 环境中,架构师应该如何考虑扩展性问题?


Yaron Schneider:Dapr Agents 将智能体及其后续任务视为 Actor ——这些轻量级且持久的对象可以扩展到数百万个,具有非常低的延迟。这使得 Dapr Agents 能够在消耗极低 CPU 和内存的情况下运行大量智能体。由于 Dapr 可以原生集成到 Kubernetes 中,Dapr Agents 对故障具有高度弹性,并考虑到了 Kubernetes Pod 的瞬态特性。


InfoQ:在分布式 AI 智能体异步交互时,调试和可观测性变得至关重要。Dapr Agents 为监控、日志记录和排查智能体行为提供了哪些内置功能?


Schneider:基于 Dapr 构建的 Dapr Agents 为其智能体工作流提供了指标数据,包括每秒请求数、错误率和延迟。此外,由于 Dapr 工作流支持分布式跟踪,开发人员可以使用 OTel 兼容工具来可视化智能体调用图。我们将在未来更多地在智能体可观测性方面进行投入。


InfoQ:Dapr Agents 接下来有什么计划?是否计划增加新功能或做出改进,例如增强的 LLM 集成、新的工作流原语或扩展多云功能?


Schneider:鉴于数据合成在智能体工作负载中的重要性日益增加,我们计划集成模型上下文协议(MCP),让开发人员能够通过状态存储和绑定 API 将 Dapr Agents 连接到各种数据源和 Dapr 的原生功能。此外,我们还计划通过 Dapr 的对话 API 增加对更多 LLM 供应商的支持。最重要的是,Dapr Agents 目前已经支持 Python,我们正在努力增加对 Dotnet 和 Java 的支持。


查看英文原文

https://www.infoq.com/news/2025/03/dapr-agents/

2025-03-31 08:003256

评论

发布
暂无评论

Dubbo 框架学习笔记十六

风翱

dubbo 12月日更

C++11 extern template

SkyFire

C++11 template

使用 Prometheus 监控的一些注意事项

耳东@Erdong

监控 Prometheus

架构实战营 4 期第三模块作业

jialuooooo

架构实战营

架构训练营模块三作业

沈益飞

架构训练营 架构师训练营 4 期

沐曦加入龙蜥社区,聚焦技术创新,繁荣开源生态

OpenAnolis小助手

龙蜥社区

模块三

Geek_59dec2

objdump简单使用

SkyFire

Linux objdump

linux信号操作

SkyFire

Linux 信号

spring 源码解析一、概述

xzy

Java spring spring源码

2021年,你读过哪些书?(29/28)

赵新龙

28天写作

Serverless Kubernetes 落地实践

阿里巴巴云原生

阿里云 Serverless Kubernetes 云原生

元宇宙100讲-0x010

hackstoic

元宇宙

性能分析之系统资源饱和度

zuozewei

Linux 性能分析 12月日更

git普通库与裸库

SkyFire

git

mysqlx学习

SkyFire

mysqlx

使用gprof进行简单程序的性能分析

SkyFire

Linux 性能分析 gprof

学生管理系统架构设计

Evan

Modern-Cpp学习笔记

SkyFire

c++

28天写作挑战复盘

圣迪

灵魂洗礼

gtest入门

SkyFire

c++ GTest

学生系统架构详细设计

Only

架构实战营 「架构实战营」

尝试下使用 cpp 实现 Rust 的 enum

SkyFire

c++ rust Enum

【CSS 学习总结】第九篇 - CSS 布局-居中布局-水平垂直居中布局

Brave

CSS 12月日更

linux库打桩

SkyFire

Linux hook

NFS(网络文件系统)配置(Ubunut/Deepin等系统)

SkyFire

Linux NFS

合并两个有序链表

田镇珲

算法 链表

eoiioeWeb安全渗透测试之信息搜集篇

喀拉峻

网络安全 安全 WEB安全

搭建PXE服务器(Ubuntu/Deepin)

SkyFire

Linux ubuntu deepin tftp pxe

linux文本处理四件套的简单用法

SkyFire

Linux sed grep awk find

Golang的通道复用上手(三)

liuzhen007

go语言 28天写作 12月日更

Dapr Agents 发布:支持规模化 AI 工作流、多智能体协作_AI&大模型_Eran Stiller_InfoQ精选文章