2026年7月2日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

蚂蚁集团基于 Ray 构建的分布式 AI Agent 框架

发布日期:2025-05-07 18:15:16 浏览次数: 2882
作者:DataFunSummit

微信搜一搜,关注“DataFunSummit”

推荐语

蚂蚁集团基于Ray构建的AI Agent框架Ragent,深度解析其设计与应用。

核心内容:
1. Ray框架在蚂蚁集团的应用背景
2. Ragent框架的动机与核心设计
3. Ragent框架的实现细节与业务场景

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

导读本文将分享蚂蚁最新的基于 #Ray 的分布式 #Agent 框架,Ragent。

主要内容包括以下几个部分:

1. Background
2. Motivation
3. Design & Impl.
分享嘉宾|陈齐翔 蚂蚁集团 软件工程师、Ragent 框架主要作者
编辑整理|王甲君
内容校对|李瑶
出品社区|DataFun

相信很多人都了解 Ray,它是 OpenAI 用于大模型训练的底层分布式框架。蚂蚁集团早在很久之前就加入了 Ray,且今年 Ray 的 CEO 在夏季发布会上也提到,蚂蚁是第一个正式使用并协作开发 Ray 的团队。我们贡献了超过 26% 的 Ray 核心代码,是全球第二大贡献团队。目前,蚂蚁集团在线上运营着超过 150 万 CPU 核心,规模已相当庞大,同时我们也在运营 Ray 在中国的社区。

简单介绍一下 Ray 在蚂蚁内部的发展情况。我们在 2017 年成立了 Ray 团队,并于 2018 年推出了首个业务场景流图计算引擎 Geaflow。在 2018 年至 2022 年间的大数据时代,我们基于 Ray 开发了多个计算引擎,如用于流计算和机器学习训练的 Realtime、Mobius 开源引擎,以及在线推理和科学计算引擎 Mars。同时,我们也贡献了 Multi-Tenant 架构,Ray 社区今年才开始考虑这种架构,而蚂蚁因线上集群规模庞大,早已开始考虑多租户。


在 2023 到 2024 年大模型时代,我们在美国完成了一项工作 Unified AI Serving,将离线、在线与 AI 推理、AI 部署整合为一个框架,这是我们 150 万内核业务的核心场景之一。接下来将介绍我们的最新工作,基于 Ray 构建的 AI Agent 框架,主要分为三个部分:背景、动因,以及设计与实现。


01

Background


首先来看一下基于大语言模型的 Agent(LLM-based Agent)通常需要哪些模块。
  • 第一个是 Profile 模块,它定义了 Agent 的个性,即扮演怎样的角色,比如它可以是一个温和的旅游助手,执行旅游管理、数据分析等任务。


  • 第二个是 Memory 模块,包括两部分:一是 Knowledge,包含行业知识和先验知识;二是 Experience,记录 Agent 过去的对话、用户问题、思考过程及行动结果,这些经验将帮助 Agent 改进后续的行为,避免重复错误。


  • 第三个是 Planning 模块,用于将复杂任务拆解成更容易执行的子任务。通过这种方式,Agent 可以在文本交互的基础上完成更广泛的任务。Planning 常见的算法有 Chain of Thought和Tree of Thought,这些就像程序设计中的流程图,用来拆解复杂问题。


  • 第四个是 Action 模块,根据经验和规划执行实际任务。与大模型不同,Agent 不仅仅是文本或图像输入输出,而是能对现实世界产生实际影响。Action 模块的一个关键功能是 Function Calling,让模型调用外部功能,甚至在某些场景中与机械臂等物理设备交互。
这四个模块是我们认为一个基于大语言模型的 Agent 所需的核心组件。

我们来看一个简单的基于 Agent 实现的 RAG 流程。这个 RAG 不同于传统的计算图或工作流,而是通过 Agent 来实现的。
  • 首先,Agent 会从用户那里获取任务,例如用户要求从文档中学习知识,提供了文档链接。


  • 第二步,模型进入思考阶段,决定如何开展任务。这里可以使用 planning 模块中的算法,如 React 或 Chain of Thought。在这个流程中,我们使用了 React 策略,即思考一步,执行一步。


  • 第三步,模型决定采取具体行动。对于 RAG 场景,可以使用工具如 LlamaIndex 或 LangChain 对文档进行解析,或调用 Lucene 和 VectorDB 进行语义检索,甚至进行实时搜索。


  • 第四步,将初始思考、选择的行动及其结果作为三元组(triplet)存储到 Memory 中,来指导后续工作。


  • 第五步,继续循环思考和执行,直到完成用户任务。
特别需要注意的是,右边的工具分为三类:红色的 LlamaIndex 用于计算(CPU/GPU 密集型),绿色的 DB 和 Lucene 访问为 Disk I/O,蓝色的则是网络访问。Agent 任务中涉及这三种不同的计算任务,传统模式可能只处理 CPU 或 CPU+IO,但在这里,一个单任务可能包含复杂的混合工作负载。

在完成 naive RAG Agent 的实现后,接下来就是部署上线。首先,我们将程序封装成一个服务,放入 Docker 中,然后进行部署。我们的 Agent 平台已经有大约 500 个 Agent,开发者可以在平台上使用画布构建并发布他们的 Agent。上图中就是我们的一些案例。

最初,我们的做法很简单,但很快收到了很多用户抱怨。用户常见的问题包括:不清楚为什么 APP 或 Pod 崩溃、缺乏监控 metrics、没有工作负载监控、无法控制流量等。此外,由于混合工作负载,GPU 利用率通常很低。总结起来,这种简单的做法显然不适合生产环境。因此,我们决定将 Agent 平台分布式化,进行生产化改造。在这个过程中,我们发现场景中确实有许多独特的挑战。


02

Motivation

相较于传统计算或服务型 APP,我们认为 Agent 应用具有高度创造性,不断涌现出革命性的创意,这也是近年来大模型和 Agent 概念火热的原因。大家发现这些应用非常有趣,并且持续有新创意涌现,每个创意都需要快速低成本验证,这在创业和商业中尤为重要。


一旦 PoC 验证有效,就希望能迅速部署到线上,但这一步非常困难。上线应用涉及众多模块:服务、数据库、数据来源、分布式框架等,对大公司而言,需要与多个团队合作,小公司虽不需多个团队,但仍需掌握所有技术。因此,PoC 到上线的过程繁琐且漫长。此外,用户任务可能同时涉及 GPU、CPU 和 Service Calling,且 Agent 覆盖不同业务场景,每个场景的技术栈不同,需要大量兼容适配工作。

在分布式 Ray 生产化 Agent 过程中,我们对比了三个技术栈层级:底层的 Kubernetes(简称 K8S)、上层的算法库 LangChain 和中间层的 Ray。Ray 之所以居于中间层,是因为它涵盖丰富的 AI 生态,如 Ray Data 用于数据处理和服务化,以及强化学习和训练。Ray 紧贴 K8S,为分布式执行调度提供支持。


Kubernetes 的优势在于底层 API 的灵活性,允许编写各种 CRD 并整合多种硬件,提供资源控制的完整性;但其缺点是从零开发 AI 程序非常复杂。我们与基于 K8S 的团队交流发现,许多机器学习工程师并不熟悉 K8S。在蚂蚁集团,算法工程师离掌握 K8S 还有较远距离,这种学习曲线使得我们不太可能直接让终端用户使用 K8S。此外,Kubernetes 的 AI 生态相对简陋,主要因其重心仍在底层。


LangChain 作为上层算法库,优点在于丰富且易用,类似的 LlamaIndex 库也非常易上手。它甚至提供 UI 功能,可以一站式开发 Agent 或大模型。然而,其缺点是仅为单机 API。在我们上线简易版 LangChain 后,发现面临许多生产化问题,每个问题都需解决。


接下来我们考虑使用 Ray。Ray 的优势在于提供了一站式的工具箱,支持 AI 工作负载的数据处理、训练和推理。Ray 的一个主要功能是轻松将本地代码转为分布式代码,只需简单加注解即可实现远程进程。并且它在异构资源调度方面表现出色,尤其在 CPU 与 GPU 混合的数据处理中性能优于 Spark。Ray 不绑定特定计算范式(如 MapReduce 或图计算),而是采用纯分布式面向对象编程,提供了高度灵活性。


不过,Ray 也有一些不足:在资源管控上不如 K8S 灵活,因为它是在 K8S 之上再加一层;另外,目前 Ray 在大模型上没有特定 API,一些外部组件如文件传输,需要在 Ray API 中额外封装。


综上,我们最终选择了 Ray,同时也考虑了一些额外的加分项。例如,Ray 的 RuntimeEnv 功能提供了运行时沙箱,利用 container 执行用户代码,非常适合大模型场景中的代码解释器。它能够直接启动一个 Docker 容器,而在其他团队中需要额外工作。另一个优势是 Ray 的面向对象编程模式,与 Agent 的工作模式相似。Agent 的个性和配置可以视为对象的静态资源,操作为成员函数,记忆则是运行时状态,因此 Agent 很像一个对象。

决定使用 Ray 后,我们自然开始开发一个基于 Ray 的 Agent 框架。主要考虑点如下:①该框架需提供 Agent 的 API;②利用 Ray 实现从本地代码到支持异构资源的分布式代码的扩展;③在多 Agent 场景中,每个 Agent 都是一个分布式进程,我们需要一个框架来协调这些进程,即所谓的 environment;④要兼容不同的库,如 MetaGPT 和 AutoGen;⑤希望利用 Ray 的沙箱(sandbox)、批处理能力和跨源调度功能。


03


Design & Impl.


在软件技术栈中,我们使用 Ray 分为以下几层:最上层是业务层,包括开发者已编写的 Agent Apps。其下是 Agent Crafting Platform,这是开发者构建 Agents 的平台。再下一层是算法库,如 LangChain 和 MetaGPT,提供与大模型相关的算法和文档解析功能,这些不在我们的框架实现范围内。


在这三个业务层之下是 Ragent,它提供分布式 Agent SDK 和执行层,支持 Agent 所需的工具、记忆、环境管理、分布式通信及部署等功能。Ragent 不实现具体算法,而是将用户代码分布式化,依赖 Ray 的核心概念如 Task、Actor 和 Object,利用 Ray 的编程原语实现分布式面向对象编程。Ray Data 用于批处理,例如统一清洗和解析用户文档,类似于 Spark。Agent 的服务化通过 reserve 实现。使用 Ray 后,我们获得高编程性能,并具备 Failover(故障转移)能力、分级调度和共享内存的优势。最底层是 K8S,用于资源管理和调度。

使用 Ragent 编写一个 Agent 时,首先要了解 Ragent 提供的 Agent 概念,这是一个具备 Failover 能力的基础单元,并内置消息队列和 Memory。Memory 是 Agent 内部的记忆。由于存在多种 Planning 策略,Ragent 内置了 ReAct 算法,用于重复的 think 和 act 过程。如上图的简化版代码中,通过一个 while True 循环,每次先进行 reasoning(think),获取 thought 和预期执行的 action,然后实际调用 action,持续在循环中执行。

Agent 的能力主要来自于其具备的工具,如文档清洗或制定旅游攻略的能力,这使得 Agent 能够在功能上超越单纯的大模型,因此 Tool 部分至关重要。要为 Agent 定制、加载或注册一个 tool,我们可以通过注解实现。在 Python 代码中,比如对 index_doc 函数输入文档,使用 Ray Data 和 LangChain 进行处理。用 tool 注解这个函数即可将其注册到 Agent 中,使 Agent 理解。注册过程中,需要用自然语言描述其功能、输入输出及用途,类似于编程中的 doc string。注册的每个 tool 会作为 prompt 的一部分输入到大模型,使得整个 Agent 相当于一个 Ray Actor。


实现一个简易版的 RAG Agent 在我们的框架中非常简单,只需几行代码。首先,引入必要的库后,在 main 函数中初始化一个 Agent,使用内置的 ReAct 算法,并指定大模型为 Qwen。在 profile 中赋予静态资源后,为 Agent 注册多个工具,如 Apache Lucene 和 LlamaIndex。我们注册的 action 包括使用 LlamaIndex 进行文档索引,Lucene 用于 Elasticsearch,以及 DB 进行语义搜索,这些工具便可实现一个简单的 RAG。


完成初始化和注册后,Agent 便可与用户交互。用户的第一个 involve 是从 Ray 文档中学习最新功能,此时 Agent 会调用工具,将用户提供的文档索引到 DB 中作为知识的一部分。工具使用 Ray Data 实现,因此在执行阶段,Agent 将其作为 Ray Data 的作业提交,批处理输出到 DB 中每个文档的知识。

接下来,用户可对文档提问,如询问 Ray 最新版本的 Ray Data 功能,此时 Agent 会从 DB 中进行字符和语义检索,经过大模型处理后返回结果。整个过程只需几行代码即可完成一个 RAG Agent,不过这是简易版的。


接下来,我们看一个 Multi-agent 的例子。左边的图是 MetaGPT 的实现,展示了如何利用多个 Agent 构建一个软件公司。每个 Agent 承担不同职责,如产品经理、架构师、代码工程师和测试工程师。对于任务如编写贪吃蛇程序,Agent 按顺序协作。产品经理用工具生成设计图给架构师,架构师再创建技术架构图。工程师根据用户需求编写接口和实现,再交给测试进行 UT,直到程序完成。左图展示了流程,右图是用户交互,比如编写 FlappyBird,此例子被 Ragent 框架分布式化。


在该框架中,我们实现了一个 environment 组件,用于 task 追踪,包含用户任务和每个 Agent 的任务。它构建 workflow,通过 message queue 与 Agent 通信,并保存对话历史。每个 Agent 作为远程进程,由 Agent handler 管理。在代码中,我们先初始化 environment(紫色为  MetaGPT 代码,橙色为框架代码),然后初始化架构师、产品经理和 coder 等 agent,为 MetaGPT 代码进行适配。


初始化四个 Agent 后,将其加入 environment。每个 Agent 描述功能已在 profile 和 system prompt 中定义,注册后 environment 知道各 Agent 职责。目前还需手动指定 Agent 交互顺序,environment 尚不能自动选择。加入后,环境运行应用,如编写 FlappyBird 或贪吃蛇。在实践中,GPT-4 效果较好,能构建设计图和部分可运行代码,但其他模型仍难以实现复杂应用,通常在第一轮生成输出。以上是 Ragent 框架在 Multi-agent 场景的应用。

接下来是我们未来的一些工作。首先是 Agent Mesh。目前,Agent 框架众多,但缺乏统一的通信和流程标准。我们希望通过 Agent Protocol 项目,制定一个协议,整合不同框架,实现类似服务网格的通信环境。右图展示的是我们正在开发的离在线一体架构,这在非 Agent 场景下已实现。由于底层执行层都是 Ray,无论在线还是离线,技术栈相同,我们无需特别定制,能够结合使用。


在 Agent 场景中,文档处理等纯离线操作通过 Ray Data 实现,第一步可用 Ray Data pipeline 完成离线工作。对于单 Agent 或多 Agent 的二三步,可以实现服务化,每个进程用 Agent Protocol 封装,实现互通信。这在 Agent 场景中尚未完成,但在计划中。


我们还需关注底层硬件。目前不需要大量 GPU,但有厂商和开源社区希望支持更多 GPU,如 NPU。以上即是我们的工作计划。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅