DaprAgents釋出:支援規模化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 loggingimport asyncioimport requestsfrom dotenv import load_dotenvfrom dapr_agents.llm.dapr import DaprChatClientfrom dapr_agents import AssistantAgent, tool# Load environment variablesload_dotenv()logging.basicConfig(level=logging.INFO)@tooldefget_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@tooldefperform_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/
宣告:本文由 InfoQ 翻譯,未經許可禁止轉載。
今日好文推薦
74 歲 C++ 之父最新藍圖:讓程式碼更安全,還能相容40年前的老程式!
谷歌史上最大收購:320 億美元買下了發現 DeepSeek 資料庫洩露的那家小企業
當大模型接管程式設計:NASA 瘋狂的“反人類”程式設計要求,為何仍被奉為行業聖典?
英偉達軟硬體“雙拳出擊”:Blackwell Ultra、Rubin 晶片炸場,開源Dynamo讓R1 token生成暴漲40倍

相關文章