Dapr Agents 發佈:支持規模化 AI 工作流、多智能體協作

作者 | Eran Stiller
譯者 | 明知山
策劃 | 丁曉昀
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 logging
import asyncio
import requests
from dotenv import load_dotenv
from dapr_agents.llm.dapr import DaprChatClient
from dapr_agents import AssistantAgent, tool
# Load environment variables
load_dotenv()
logging.basicConfig(level=logging.INFO)
@tool
def 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
@tool
def perform_review(code: str) -> str:
"""Review code"""
response = DaprChatClient().generate(f"Review the following code: {code}")
return response.get_content()
# Define Code Review Agent
code_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 Service
await 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/