AWorld

AWorld

轻松构建、评估和运行通用多智能体助手

inclusionAI

研究与数据
访问服务器

README

<p align="center">
  <img src="readme_assets/aworld_logo.png" alt="AWorld Logo" width="100"/>
  <br>
  <span align="center" style="font-size: 24px;">
    <b><span style="color: #1677FF;">A</span><span style="color: var(--color-fg-default, #333333);">World</span></b>
  </span>
</p>

> **轻松构建、评估和运行通用多智能体辅助**

AWorld(Agent World 的缩写)弥合了理论上的 MAS(多智能体系统)能力与实际应用之间的差距,并引导您进入 AGI 世界。*祝您好运!* 🚀

![AWorld 框架](readme_assets/framework.png)

## [核心](aworld/core/README.md) 概念:
- `agent`:由 AI 驱动的组件,可以自主做出决策、使用工具、进行协作等等。
- `swarm`:定义多智能体系统的拓扑结构。
- `environment`:支持智能体之间以及智能体与工具之间通信的运行时环境。
- `task`:完成可运行的特定工作,包括数据集、智能体、环境、评估指标等。
- `client`:提交各种任务以进行高效执行。

## 安装
使用 Python>=3.11:
```bash
python setup.py install

用法

快速开始

from aworld.config.conf import AgentConfig, TaskConfig
from aworld.core.agent.base import Agent
from aworld.core.task import Task

if __name__ == '__main__':
    agent_config = AgentConfig(
        llm_provider="openai",
        llm_model_name="gpt-4o",

        # 通过环境变量或直接配置设置
        llm_api_key="YOUR_API_KEY", 
        llm_base_url="http://localhost:5080"
    )

    search_sys_prompt = "你是一个乐于助人的智能体。"
    search = Agent(
        conf=agent_config,
        name="search_agent",
        system_prompt=search_sys_prompt,
        mcp_servers=["amap-amap-sse"] # 智能体使用的 MCP 服务器名称
    )

    # 定义一个任务
    task = Task(input="杭州西湖最近1公里的酒店", agent=search, conf=TaskConfig())
    task.run()

通过更新配置文件来配置 MCP 服务器:aworld/config/mcp.json

运行预定义的智能体 (演示代码)

以下是演示视频,展示了 AWorld 在不同智能体配置和环境下的功能。

<table> <tr> <th>模式</th> <th>类型</th> <th>演示</th> </tr> <tr> <td rowspan="2">单智能体</td> <td>浏览器使用</td> <td> <a href="https://www.youtube.com/watch?v=R7keOLrRDoM" target="_blank"> <img src="https://img.youtube.com/vi/R7keOLrRDoM/0.jpg" alt="AWorld 浏览器演示(YouTube)" width="95%"> <br> <p align="center">▶️ 在 YouTube 上观看浏览器演示</p> </a> </td> </tr> <tr> <td>手机使用</td> <td> <a href="https://www.youtube.com/watch?v=TYh3iqDeIoQ" target="_blank"> <img src="https://img.youtube.com/vi/TYh3iqDeIoQ/0.jpg" alt="AWorld 移动演示(YouTube)" width="95%"> <br> <p align="center">▶️ 在 YouTube 上观看移动演示</p> </a> </td> </tr> <tr> <td rowspan="3">多智能体</td> <td>合作团队</td> <td> <a href="https://www.youtube.com/watch?v=sEsgasRrlTs" target="_blank"> <img src="https://img.youtube.com/vi/sEsgasRrlTs/0.jpg" alt="AWorld 旅行演示(YouTube)" width="95%"> <br> <p align="center">▶️ 在 YouTube 上观看旅行演示</p> </a> </td> </tr> <tr> <td>竞争团队</td> <td align="center"><i>即将推出</i> 🚀</td> </tr> <tr> <td>混合团队</td> <td align="center"><i>即将推出</i> 🚀</td> </tr> </table>

或创建您自己的智能体 (快速入门教程)

这是一个运行来自 GAIA 基准测试的 level2 任务的多智能体示例:

from aworld.agents.gaia.agent import PlanAgent, ExecuteAgent
from aworld.core.client import Client
from aworld.core.agent.swarm import Swarm
from aworld.core.common import Agents, Tools
from aworld.core.task import Task
from aworld.config.conf import AgentConfig, TaskConfig
from aworld.dataset.mock import mock_dataset

import os
# 需要 OPENAI_API_KEY
os.environ['OPENAI_API_KEY'] = "your key"
# 可选的端点设置,默认为 `https://api.openai.com/v1`
# os.environ['OPENAI_ENDPOINT'] = "https://api.openai.com/v1"

# 初始化客户端
client = Client()

# 一个示例
test_sample = mock_dataset("gaia")

# 创建智能体
plan_config = AgentConfig(
    name=Agents.PLAN.value,
    llm_provider="openai",
    llm_model_name="gpt-4o",
)
agent1 = PlanAgent(conf=plan_config)

exec_config = AgentConfig(
    name=Agents.EXECUTE.value,
    llm_provider="openai",
    llm_model_name="gpt-4o",
)
agent2 = ExecuteAgent(conf=exec_config, tool_names=[Tools.DOCUMENT_ANALYSIS.value])

# 创建多智能体群
# 定义拓扑图中的 (head_node, tail_node) 边
# 注意:正确的顺序是必要的
swarm = Swarm((agent1, agent2))

# 定义一个任务
task = Task(input=test_sample, swarm=swarm, conf=TaskConfig())

# 运行任务
result = client.submit(task=[task])

print(f"任务完成: {result['success']}")
print(f"耗时: {result['time_cost']}")
print(f"任务答案: {result['task_0']['answer']}")
Task completed: True
Time cost: 26.431413888931274
Task Answer: Time-Parking 2: Parallel Universe

<p align="left"> <video src="https://github.com/user-attachments/assets/84ccf675-08df-47c1-bd0e-416480ad7cff" controls="controls" muted="muted" style="width: 45%;"></video> </p>

框架架构

AWorld 使用客户端-服务器架构,包含三个主要组件:

  1. 客户端-服务器架构:类似于 ray,此架构:

    • 解耦智能体和环境,以实现更好的可扩展性和灵活性
    • 为所有智能体-环境交互提供统一的交互协议
  2. 智能体/Actor

    • 封装系统提示、工具、mcp 服务器和模型,并具有将执行权移交给其他智能体的能力
    字段 类型 描述
    id string 智能体的唯一标识符
    name string 智能体的名称
    model_name string 智能体的 LLM 模型名称
    _llm object 基于 model_name 的 LLM 模型实例(例如,“gpt-4”,“claude-3”)
    conf BaseModel 从 pydantic BaseModel 继承的配置
    trajectory object 用于在交互中维护上下文的内存
    tool_names list 智能体可以使用的工具列表
    mcp_servers list 智能体可以使用的 mcp 服务器列表
    handoffs list 智能体作为工具;智能体可以委托任务的其他智能体列表
    finished bool 指示智能体是否已完成其任务的标志
  3. 环境/世界模型:环境中的各种工具和模型

    • MCP 服务器
    • 计算机接口(浏览器、shell、函数等)
    • 世界模型
    工具 描述
    mcp Servers AWorld 无缝集成了丰富的 MCP 服务器集合作为智能体工具
    browser 控制 Web 浏览器进行导航、表单填写以及与网页的交互
    android 管理 Android 设备模拟,用于移动应用测试和自动化
    shell 执行 shell 命令以进行文件操作和系统交互
    code 运行各种语言的代码片段以进行数据处理和自动化
    search 执行 Web 搜索并返回结构化结果以进行信息收集和摘要
    document 处理文件操作,包括读取、写入和管理目录

双重用途框架

AWorld 具有两个互补的用途:

智能体评估

  • 统一的任务定义,可以运行自定义和公共基准测试
  • 高效稳定的执行环境
  • 详细的测试报告,用于衡量效率(完成步骤)、完成率、token 成本等。

智能体训练

  • 智能体模型不断改进以克服来自环境的挑战
  • 世界模型(环境)不断发展以呈现新的、更复杂的场景

🔧 主要特性

  • MCP 服务器作为工具 - 强大的 MCP 服务器集成,提供强大的工具功能

  • 🌐 环境多工具支持

    • [x] 默认的计算机使用工具;(浏览器、shell、代码、API、文件系统等)
    • [x] Android 设备模拟
    • [ ] 用于快速稳定部署的云沙箱
    • [ ] 作为环境模拟的奖励模型
  • 🤖 AI 驱动的智能体

    • [x] 智能体初始化
    • [x] 多个智能体之间的委托
    • [ ] 异步委托
    • [ ] 人工委托(例如,用于密码输入)
    • [ ] 由最先进的 推理框架 提供支持的预部署开源 LLM
  • 🎛️ Web 界面

    • [ ] 用于执行可视化的 UI
    • [ ] 服务器配置仪表板
    • [ ] 实时监控工具
    • [ ] 性能报告
  • 🧠 基准测试和示例

    • [ ] 默认情况下支持标准化基准测试,例如 GAIA、WebArena
    • [ ] 支持自定义基准测试
    • [ ] 支持生成训练样本

贡献

我们热烈欢迎开发者加入我们,共同构建和改进 AWorld! 无论您是对增强框架、修复错误还是添加新功能感兴趣,您的贡献对我们都非常有价值。

对于学术引用或希望与我们联系,请使用以下 BibTeX 条目:

@software{aworld2025,
  author = {蚂蚁集团智能体团队},
  title = {AWorld: 用于计算机和手机使用任务的统一智能体游乐场},
  year = {2025},
  url = {https://github.com/inclusionAI/AWorld},
  version = {0.1.0},
  publisher = {GitHub},
  email = {chenyi.zcy at antgroup.com}
}

许可证

此项目已获得 MIT 许可证的许可 - 有关详细信息,请参阅 LICENSE 文件。

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python