{"id":27837035,"url":"https://github.com/inclusionAI/AWorld","last_synced_at":"2025-05-02T18:05:13.064Z","repository":{"id":284572969,"uuid":"948379879","full_name":"inclusionAI/AWorld","owner":"inclusionAI","description":"Build, evaluate and run General Multi-Agent Assistance with ease","archived":false,"fork":false,"pushed_at":"2025-04-25T02:56:56.000Z","size":154732,"stargazers_count":167,"open_issues_count":3,"forks_count":8,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-04-25T03:31:58.973Z","etag":null,"topics":["agent-swarm","agentic-ai","computer-use","gym-environment","mcp","mcp-server","phone-use","world-model"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inclusionAI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-14T08:30:52.000Z","updated_at":"2025-04-25T03:16:10.000Z","dependencies_parsed_at":"2025-04-10T05:23:23.316Z","dependency_job_id":"a5f51f2d-b2d5-450c-9390-e885ee5782c2","html_url":"https://github.com/inclusionAI/AWorld","commit_stats":null,"previous_names":["inclusionai/aworld"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inclusionAI%2FAWorld","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inclusionAI%2FAWorld/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inclusionAI%2FAWorld/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inclusionAI%2FAWorld/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inclusionAI","download_url":"https://codeload.github.com/inclusionAI/AWorld/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252084813,"owners_count":21692163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-swarm","agentic-ai","computer-use","gym-environment","mcp","mcp-server","phone-use","world-model"],"created_at":"2025-05-02T18:05:10.713Z","updated_at":"2025-05-02T18:05:13.046Z","avatar_url":"https://github.com/inclusionAI.png","language":"Python","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"readme_assets/aworld_logo.png\" alt=\"AWorld Logo\" width=\"100\"/\u003e\n  \u003cbr\u003e\n  \u003cspan align=\"center\" style=\"font-size: 24px;\"\u003e\n    \u003cb\u003e\u003cspan style=\"color: #1677FF;\"\u003eA\u003c/span\u003e\u003cspan style=\"color: var(--color-fg-default, #333333);\"\u003eWorld\u003c/span\u003e\u003c/b\u003e\n  \u003c/span\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Twitter Follow](https://img.shields.io/twitter/follow/AWorld_AI?style=social)](https://x.com/InclusionAI666)\n[![WeChat QR Code](https://img.shields.io/badge/WeChat-Add%20us-green?logo=wechat\u0026logoColor=white)](https://raw.githubusercontent.com/inclusionAI/AWorld/main/readme_assets/aworld_wechat_qr.png)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\u003c/div\u003e\n\n\u003ch3 align=\"center\" style=\"color: #2E86C1; font-size: 1.2em; margin: 10px 0;\"\u003e\n🏆 AWorld ranks 3rd on GAIA benchmark (69.7 avg) with impressive Pass@1 = 58.8, 1st among open-source frameworks. Reproduce with \u003ccode\u003epython examples/gaia/run.py\u003c/code\u003e\n\u003c/h3\u003e\n\n\n\nAWorld (short for Agent World) bridges the gap between theoretical MAS (Multi-Agent System) capabilities and practical implementation in real-world applications and guide you into the AGI World. *GLHF!* 🚀\n\n![AWorld Framework](readme_assets/framework.png)\n\n## [Core](aworld/core/README.md) concepts:\n- `agent`: AI-powered components that autonomously make decisions, use tools, do collaboration, and so on.\n- `swarm`: define the topology structure of a multiple agents system. \n- `environment`: the runtime supporting communication among agents and tools.\n- `task`:  structure containing datasets, agents, tools, metrics, outputs, etc.\n- `runner`: complete a runnable specific workflow and obtain results.\n\n## Installation\nWith Python\u003e=3.11:\n```bash\npip install aworld\n```\n\n## Usage\n### Quick Start\n```python\nfrom aworld.config.conf import AgentConfig\nfrom aworld.core.agent.base import Agent\nfrom aworld.runner import Runners\n\nif __name__ == '__main__':\n    agent_config = AgentConfig(\n        llm_provider=\"openai\",\n        llm_model_name=\"gpt-4o\",\n\n        # Set via environment variable or direct configuration\n        # llm_api_key=\"YOUR_API_KEY\", \n        # llm_base_url=\"https://api.openai.com/v1\"\n    )\n\n    search = Agent(\n        conf=agent_config,\n        name=\"search_agent\",\n        system_prompt=\"You are a helpful agent.\",\n        mcp_servers=[\"amap-amap-sse\"] # MCP server name for agent to use\n    )\n\n    # Run agent\n    Runners.sync_run(input=\"Hotels within 1 kilometer of West Lake in Hangzhou\",\n                     agent=search)\n```\nHere is a MCP server config [example.](examples/mcp_demo/mcp_example.json)\n\n\n\n### Running Pre-defined Agents ([demo code](examples/browsers/run.py))\nBelow are demonstration videos showcasing AWorld's capabilities across different agent configurations and environments.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003eMode\u003c/th\u003e\n    \u003cth\u003eType\u003c/th\u003e\n    \u003cth\u003eDemo\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd rowspan=\"2\"\u003eSingle Agent\u003c/td\u003e\n    \u003ctd\u003eBrowser use\u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://www.youtube.com/watch?v=R7keOLrRDoM\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.youtube.com/vi/R7keOLrRDoM/0.jpg\" alt=\"AWorld Browser Demo on YouTube\" width=\"95%\"\u003e\n        \u003cbr\u003e\n        \u003cp align=\"center\"\u003e▶️ Watch Browser Demo on YouTube\u003c/p\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003ePhone use\u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://www.youtube.com/watch?v=TYh3iqDeIoQ\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.youtube.com/vi/TYh3iqDeIoQ/0.jpg\" alt=\"AWorld Mobile Demo on YouTube\" width=\"95%\"\u003e\n        \u003cbr\u003e\n        \u003cp align=\"center\"\u003e▶️ Watch Mobile Demo on YouTube\u003c/p\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd rowspan=\"3\"\u003eMulti Agent\u003c/td\u003e\n    \u003ctd\u003eCooperative Teams\u003c/td\u003e\n    \u003ctd\u003e\n       \u003ca href=\"https://www.youtube.com/watch?v=sEsgasRrlTs\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.youtube.com/vi/sEsgasRrlTs/0.jpg\" alt=\"AWorld Travel Demo on YouTube\" width=\"95%\"\u003e\n        \u003cbr\u003e\n        \u003cp align=\"center\"\u003e▶️ Watch Travel Demo on YouTube\u003c/p\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eCompetitive Teams\u003c/td\u003e\n     \u003ctd\u003e\n       \u003ca href=\"https://www.youtube.com/watch?v=_CPdhoP4YTg\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.youtube.com/vi/_CPdhoP4YTg/0.jpg\" alt=\"AWorld Debate Demo on YouTube\" width=\"95%\"\u003e\n        \u003cbr\u003e\n        \u003cp align=\"center\"\u003e▶️ Watch Debate Arena on YouTube\u003c/p\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eMixed of both Teams\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ci\u003eComing Soon\u003c/i\u003e 🚀\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### or Creating Your Own Agents ([Quick Start Tutorial](./aworld/agents/README.md))\nHere is a multi-agent example of running a level2 task from the [GAIA](https://huggingface.co/gaia-benchmark) benchmark:\n\n```python\nfrom aworld.agents.gaia.agent import PlanAgent, ExecuteAgent\nfrom aworld.config.common import Agents, Tools\nfrom aworld.core.agent.swarm import Swarm\nfrom aworld.core.task import Task\nfrom aworld.config.conf import AgentConfig, TaskConfig\nfrom aworld.dataset.mock import mock_dataset\nfrom aworld.runner import Runners\n\nimport os\n# Need OPENAI_API_KEY\nos.environ['OPENAI_API_KEY'] = \"your key\"\n# Optional endpoint settings, default `https://api.openai.com/v1`\n# os.environ['OPENAI_ENDPOINT'] = \"https://api.openai.com/v1\"\n\n# One sample for example\ntest_sample = mock_dataset(\"gaia\")\n\n# Create agents\nplan_config = AgentConfig(\n    name=Agents.PLAN.value,\n    llm_provider=\"openai\",\n    llm_model_name=\"gpt-4o\",\n)\nagent1 = PlanAgent(conf=plan_config)\n\nexec_config = AgentConfig(\n    name=Agents.EXECUTE.value,\n    llm_provider=\"openai\",\n    llm_model_name=\"gpt-4o\",\n)\nagent2 = ExecuteAgent(conf=exec_config, tool_names=[Tools.DOCUMENT_ANALYSIS.value])\n\n# Create swarm for multi-agents\n# define (head_node, tail_node) edge in the topology graph\n# NOTE: the correct order is necessary\nswarm = Swarm((agent1, agent2), sequence=False)\n\n# Define a task\ntask = Task(input=test_sample, swarm=swarm, conf=TaskConfig())\n\n# Run task\nresult = Runners.sync_run_task(task=task)\n\nprint(f\"Time cost: {result['time_cost']}\")\nprint(f\"Task Answer: {result['task_0']['answer']}\")\n```\n```\nTime cost: 26.431413888931274\nTask Answer: Time-Parking 2: Parallel Universe\n```\n\u003cp align=\"left\"\u003e\n  \u003cvideo src=\"https://github.com/user-attachments/assets/84ccf675-08df-47c1-bd0e-416480ad7cff\" controls=\"controls\" muted=\"muted\" style=\"width: 45%;\"\u003e\u003c/video\u003e\n\u003c/p\u003e\n\n## Framework Architecture\n\nAWorld uses a client-server architecture with three main components:\n\n1. **Client-Server Architecture**: Similar to [ray](https://github.com/ray-project/ray), this architecture:\n    - Decouples agents and environments for better scalability and flexibility\n    - Provides a unified interaction protocol for all agent-environment interactions\n\n2. **Agent/Actor**: \n   - Encapsulates system prompts, tools, mcp servers, and models with the capability to hand off execution to other agents\n\n    | Field        | Type      | Description                                                           |\n    |--------------|-----------|-----------------------------------------------------------------------|\n    | `id`         | string    | Unique identifier for the agent                                       |\n    | `name`       | string    | Name of the agent                                                     |\n    | `model_name` | string    | LLM model name of the agent                                           |\n    | `_llm`       | object    | LLM model instance based on model_name (e.g., \"gpt-4\", \"claude-3\")    |\n    | `conf`       | BaseModel | Configuration inheriting from pydantic BaseModel                      |\n    | `trajectory`     | object    | Memory for maintaining context across interactions                   |\n    | `tool_names` | list      | List of tools the agent can use                                       |\n    | `mcp_servers` | list      | List of mcp servers the agent can use                                       |\n    | `handoffs`   | list      | Agent as tool; list of other agents the agent can delegate tasks to                 |\n    | `finished`   | bool      | Flag indicating whether the agent has completed its task              |\n\n3. **Environment/World Model**: Various tools and models in the environment\n   - MCP servers\n   - Computer interfaces (browser, shell, functions, etc.)\n   - World Model\n\n   | Tools | Description |\n   |-------|-------------|\n   | `mcp Servers` | AWorld seamlessly integrates a rich collection of MCP servers as agent tools|\n   | `browser` | Controls web browsers for navigation, form filling, and interaction with web pages |\n   | `android` | Manages Android device simulation for mobile app testing and automation |\n   | `shell` | Executes shell commands for file operations and system interactions |\n   | `code` | Runs code snippets in various languages for data processing and automation |\n   | `search` | Performs web searches and returns structured results for information gathering and summary |\n   | `document` | Handles file operations including reading, writing, and managing directories |\n\n\n## Dual Purpose Framework\n\nAWorld serves two complementary purposes:\n\n### Agent Evaluation\n- Unified task definitions to run both customized and public benchmarks\n- Efficient and stable execution environment\n- Detailed test reports measuring efficiency (steps to completion), completion rates, token costs, ect.\n\n### Agent Training\n- Agent models improve to overcome challenges from env\n- World models (environments) evolve to present new, more complex scenarios\n\n## 🔧 Key Features\n\n- ✨ **MCP Servers as Tools** - Powerful integration of MCP servers providing robust tooling capabilities\n- 🌐 **Environment Multi-Tool Support**: \n  - [x] Default computer-use tools; (browser, shell, code, APIs, file system, etc.)\n  - [x] Android device simulation\n  - [ ] Cloud sandbox for quick and stable deployment\n  - [ ] Reward model as env simulation\n\n- 🤖 **AI-Powered Agents**:\n  - [x] Agent initialization\n  - [x] Delegation between multiple agents\n  - [ ] Asynchronous delegation\n  - [ ] Human delegation (e.g., for password entry)\n  - [ ] Pre-deployed open source LLMs powered by state-of-the-art [inference frameworks](https://github.com/alipay/PainlessInferenceAcceleration)\n\n- 🎛️ **Web Interface**:\n  - [ ] UI for execution visualization\n  - [ ] Server configuration dashboard\n  - [ ] Real-time monitoring tools\n  - [ ] Performance reporting\n\n- 🧠 **Benchmarks and Samples**:\n  - [ ] Support standardized benchmarks by default, e.g., GAIA, WebArena\n  - [ ] Support customized benchmarks\n  - [ ] Support generating training samples\n\n## Contributing\nWe warmly welcome developers to join us in building and improving AWorld! Whether you're interested in enhancing the framework, fixing bugs, or adding new features, your contributions are valuable to us.\n\nFor academic citations or wish to contact us, please use the following BibTeX entry:\n\n```bibtex\n@software{aworld2025,\n  author = {Agent Team at Ant Group},\n  title = {AWorld: A Unified Agent Playground for Computer and Phone Use Tasks},\n  year = {2025},\n  url = {https://github.com/inclusionAI/AWorld},\n  version = {0.1.0},\n  publisher = {GitHub},\n  email = {chenyi.zcy at antgroup.com}\n}\n```\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","funding_links":[],"categories":["📚 Projects (1974 total)","Python","Architecture \u0026 Workflow \u003ca id=\"architecture--workflow\"\u003e\u003c/a\u003e","\u003cspan id=\"game\"\u003eGame (World Model \u0026 Agent)\u003c/span\u003e","MCP Servers"],"sub_categories":["MCP Servers","Dynamic Multi‑Agent Workflow \u003ca id=\"dynamic-multi-agent-workflow\"\u003e\u003c/a\u003e","\u003cspan id=\"tool\"\u003eLLM (LLM \u0026 Tool)\u003c/span\u003e","Agent Platforms"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FinclusionAI%2FAWorld","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FinclusionAI%2FAWorld","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FinclusionAI%2FAWorld/lists"}