大数跨境
0
0

OASIS Environment:让多智能体模拟超越沙盒走向现实!

OASIS Environment:让多智能体模拟超越沙盒走向现实! CAMEL AI
2025-09-11
1
导读:这篇博客中,我们全面介绍了新版本的OASIS Environment框架,赋予了智能体自主调用外部工具(如网页搜索、代码执行等)的能力,将多智能体模拟从沙盒推向现实。

// 背景:模拟技术的兴起

社交媒体不仅仅是人们随手发发猫猫表情包的地方,它其实是由数百万用户互动交织成的复杂网络。这些互动常常会催生出一些意想不到的群体行为,而这些行为是无法通过观察单个用户的行动来预测的。因此,弄清楚这些数字社会如何运作(并预测它们的未来走向)就成了一件非常重要的事情。



随着LLM智能体的相关研究的涌现,人们逐渐关注到了其用于社会模拟的潜能,比如用于经济行为[1]、居民生活[2]、电影推荐[3]等等,这成为了一个方兴未艾的研究方向。


因此,我们开发了OASIS 🏝️,一个旨在提供更逼真、更大规模社会动态模拟的综合性社交媒体模拟框架。它什么都有:专属数据库、推荐系统、智能体模块和时间引擎,能够模拟近百万个 LLM智能体在类似 X 或 Reddit 的平台上聊天、发帖和互动,并对特定的干预作出反应。

Github: https://github.com/camel-ai/oasis


我们的工作流程概述图如下。我们在论文中详细介绍了OASIS的核心模块,并成功复现了一些真实的社会现象论文原文请看:

https://arxiv.org/abs/2411.11581

更多详情也可以查看我们之前的blog:

https://www.camel-ai.org/blogs/project-oasis-automation-or-simulation---the-biggest-potential-of-multi-agent-systems


// OASIS最近有哪些更新?

尽管在论文中我们进行了几个有关流言传播、羊群效应等社会现象的实验, 但是我们认为OASIS本身的潜力远远不止于这几个特定的案例。


我们致力于把OASIS变得更通用、可扩展、功能更多、用户友好,因此我们重构了代码、发布了 PyPI package 和 doc。并继承了 CAMEL 的ChatAgent以支持更广泛的智能体功能。❗️ 具体来说,我们做了两件事:

  • 推出了 OASIS 环境(OASIS Environment) :现在,多智能体模拟可以在一个清晰的“环境-动作-状态”(environment–action–state) 流程下运行,让整个过程更加规范和可控。
  • 支持 agents 访问真实世界信息:包括与 MCP 服务器 的无缝连接,并内置了对数十种工具包的支持。


// OASIS 环境介绍

虽然 LLM智能体逐渐在一些任务中取得不错的表现,但其在模拟人类能力方面仍然存在一定的局限性。如何进一步通过训练提升 LLM 智能体在特定任务或者场景下的表现成为一个值得思考的问题。随着端到端强化学习与LLM智能体相结合的最新进展[4, 5],我们相信一个动态式的交互式情境是智能体学习自适应行为、复杂推理和长期决策技能的重要“数据” 。通过持续交互训练 agents 将变得越来越可行,不仅仅依赖于模仿学习或者提示词工程[6,7]。


对于用于训练多智能体的环境来说,一个很好的例子是用于强化学习的多智能体环境PettingZoo[8]。它具有的标准化可拓展的类Gym接口[9],支持异质化智能体,并提供了允许智能体同时行动的并行模式。我们借鉴了他们接口设计思想,支持客制化每一个智能体,并通过异步机制加速了大量智能体的并发模拟运行。通过OASIS,研究者们可以自由地模拟感兴趣的社会场景或者群体现象,人为干预智能体行为,观察智能体的反应,对智能体设定目标和奖励等等。


正如Gym在强化学习中的作用,我们旨在打造LLM智能体在社会模拟领域的标准化、可复用的环境框架,为广大 LLM智能体领域的研究者扫清工程障碍。


// 快速上手:搭建你的第一个模拟环境

使用 OASIS 只需要以下 3 个步骤 😎

  1. 首先,请安装我们的 camel-oasis 软件包:
pip install camel-oasis

2. 由于需要调用大模型,请先将你的 OpenAI API key 设置为环境变量。如果你还没有key,可以去 https://platform.openai.com/api-keys 这里获取。

export OPENAI_API_KEY=<insert your OpenAI API key>  # For Bashset OPENAI_API_KEY=<insert your OpenAI API key>  # For Windows


3. 然后,运行下方的脚本,和 OASIS 里的智能体们打个招呼吧!

import asyncioimport osfrom camel.models import ModelFactoryfrom camel.types import ModelPlatformType, ModelTypeimport oasisfrom oasis import (ActionType, AgentGraph, LLMAction, ManualAction,                   SocialAgent, UserInfo)async def main():    # Define the model for the agents    openai_model = ModelFactory.create(        model_platform=ModelPlatformType.OPENAI,        model_type=ModelType.GPT_4O_MINI,    )    # Define the available actions for the agents    available_actions = [        ActionType.LIKE_POST,        ActionType.CREATE_POST,        ActionType.CREATE_COMMENT,        ActionType.FOLLOW,    ]    # initialize the agent graph    agent_graph = AgentGraph()    # initialize the agent alice and add it to the agent graph    agent_alice = SocialAgent(        agent_id=0,        user_info=UserInfo(            user_name="alice",            name="Alice",            description="A tech enthusiast and a fan of OASIS",            profile=None,            recsys_type="reddit",        ),        agent_graph=agent_graph,        model=openai_model,        available_actions=available_actions,    )    agent_graph.add_agent(agent_alice)    # initialize the agent bob and add it to the agent graph    agent_bob = SocialAgent(        agent_id=1,        user_info=UserInfo(            user_name="bob",            name="Bob",            description=("A researcher of using OASIS to research "                         "the social behavior of users"),            profile=None,            recsys_type="reddit",        ),        agent_graph=agent_graph,        model=openai_model,        available_actions=available_actions,    )    agent_graph.add_agent(agent_bob)    # Define the path to the database    db_path = "./reddit_simulation.db"    # Delete the old database    if os.path.exists(db_path):        os.remove(db_path)    # Make the environment    env = oasis.make(        agent_graph=agent_graph,        platform=oasis.DefaultPlatformType.REDDIT,        database_path=db_path,    )    # Run the environment    await env.reset()    # Define a manual action for the agent alice to create a post    action_hello = {        env.agent_graph.get_agent(0): [            ManualAction(action_type=ActionType.CREATE_POST,                         action_args={"content""Hello, OASIS World!"})        ]    }    # Run the manual action    await env.step(action_hello)    # Define the LLM actions for all agents    all_agents_llm_actions = {        agent: LLMAction()        for _, agent in env.agent_graph.get_agents()    }    # Run the LLM actions    await env.step(all_agents_llm_actions)    # Close the environment    await env.close()if __name__ == "__main__":    asyncio.run(main())
核心输出大致如下:
Agent 1 performed action: create_comment with args: {'post_id'1'content''Hey there! Excited to be a part of the OASIS World community! 🌍✨'}Agent 0 performed action: create_comment with args: {'post_id'1'content''Hi there! Excited to be part of this community. What are some of your favorite topics to discuss?'}


// 超越沙盒:当模拟照进现实

既往大部分基于LLM智能体的模拟研究都在离线的沙盒中进行[2,10,11],即:一旦模拟开始,LLM  智能体的生活和行为将不会现实世界的任何影响,也不会作用于现实世界。虽然这种设定可以观察智能体在社会环境中的自发变化,但我们认为链接现实会带给模拟更大的潜力。


想象LLM智能体生活在一个我们的数字孪生世界中,他们源源不断的读取我们在互联网上的内容,像人类一样可以写代码、使用计算器,还有自己的账号可以在真实的X上发帖……当有智能体在OASIS中散布谣言时,另一个智能体搜索Google并发评论反对了它;或是其中一个智能体不满足于只跟LLM智能体交互,选择在人类的互联网上分享自己在LLM智能体世界的感悟……


CAMEL强大的LLM智能体生态系统让这一切都成为现实[12],OASIS继承了CAMEL框架中强大的Toolkits集,支持包括浏览器、代码执行、搜索、SymPy 在内的几十种内置工具,并预留了连接任意MCP服务器的接口。在OWL中[13],继承了这些工具的智能体相互协作完成了一系列操作电脑的任务,而OASIS的智能体也可以在操作电脑的同时在社交媒体中互相交流。这是一篇蓝海,代码已准备就绪,期待你提出卓越的研究创想。


以工具包为桥梁

在 OASIS 中,你可以在初始化时为智能体配备外部工具。

例如,你可以给它分配一个 DuckDuckGo 搜索 API,让它具备网页搜索的能力。

from camel.toolkits import SearchToolkitfrom oasis import SocialAgent, UserInfo, ActionTypesearch_agent = SocialAgent(		agent_id=1,		user_info=UserInfo(		    user_name="bubble",		    name="Bob",		    description="A boy",		    profile=None,		    recsys_type="reddit",		),		tools=[SearchToolkit().search_duckduckgo],		agent_graph=agent_graph,		model=openai_model,		available_actions=[ActionType.CREATE_COMMENT],		single_iteration=False)


接下来,我们往 OASIS 里发了这样一条求助帖:

“现在有人能用 DuckDuckGo 工具吗?我这边打不开了。如果可以的话,能帮我搜一下‘OASIS’吗?”

搜索智能体看到这条消息后,立即调用了DuckDuckGo 工具搜索“OASIS”,并成功地获取了相关结果。

[{'result_id': 1, 'title''Oasis (band) - Wikipedia''description''Oasis are an English rock band formed in Manchester in 1991....'},...]

接着,搜索智能体创建了一条评论(如下所示),将搜索结果分享给了其他智能体。其他智能体纷纷跟帖回复并表示感谢。😀

"I found some great info about Oasis! Here are a few links:\n1. [Oasis (band) - Wikipedia](https://en.wikipedia.org/wiki/Oasis_(band)) - A detailed overview of the band.\n2. [Official Website - Oasis](https://www.oasisinet.com/official-website/) - The new home for Oasis fans.\n3. [Oasis Is FINALLY Rehearsing Music Together](https://www.outkick.com/culture/oasis-finally-rehearsing-together-last) - Exciting news about their reunion!\n\nHope this helps!"

想解锁更多好玩的工具包,或者连接到 MCP 服务器?别担心,我们准备了超详细的为你提供指引~👉https://docs.camel-ai.org/key_modules/tools


总结与展望

我们希望将OASIS打造成LLM智能体领域重要的基础设施,一个既能进行通用模拟,又提供工具接口来连接真实世界的平台。

但我们要做的还不止于此。无论拥有技术背景与否,我们希望能让更多人轻松玩转 OASIS。为此,我们在未来还有更多计划:

  • 支持多模态社交平台:模拟抖音(TikTok)、Instagram 和小红书等平台,让智能体能够创造和消费图像、视频和音频内容。
  • 开发OASIS对应的前后端:通过网页追踪和控制OASIS的运行状态。
  • 部署代码生成智能体:为了让不具备编程背景的研究人员也能无障碍地使用OASIS,我们计划引入代码生成智能体。该功能支持直接解析PDF或Markdown格式的研究提案,自动生成并配置模拟环境,从而实现一键启动OASIS实验,真正做到零代码操作。


我们会持续更新,欢迎大家多多关注、交流和贡献!也欢迎大家去GitHub给OASIS点点星呀~🌟

Github: https://github.com/camel-ai/oasis

Discord: https://discord.camel-ai.org/


也欢迎大家加入我们的微信群进行交流!请大家文明加群,严禁发布任何广告信息。请勿重复加群,所有通知将在各群同步发布~感谢支持!

Reference

[1] https://arxiv.org/abs/2310.10436

[2] https://arxiv.org/abs/2304.03442

[3] https://arxiv.org/abs/2310.10108

[4] https://arxiv.org/abs/2203.02155

[5] https://arxiv.org/abs/2501.12948

[6] https://arxiv.org/abs/2201.11903

[7] https://arxiv.org/abs/2402.02805

[8] https://pettingzoo.farama.org/

[9] https://github.com/openai/gym

[10] https://arxiv.org/abs/2310.11667

[11] https://arxiv.org/abs/2502.08691

[12] https://arxiv.org/abs/2303.17760

[13] https://github.com/camel-ai/owl


往期内容推荐:






CAMEL微信群




加入CAMEL微信群,请添加CAMEL官方微信号CamelAIOrg,会有工作人员通过您的好友申请并邀请您加入我们的微信群~



Join CAMEL Community


www.camel-ai.org


https://github.com/camel-ai/camel


https://discord.camel-ai.org



【声明】内容源于网络
0
0
CAMEL AI
这里是CAMEL-AI开源社区官方公众号,希望让更多的中文开发者们了解最新的Agent行业资讯和CAMEL-AI的更新与改进。
内容 79
粉丝 0
CAMEL AI 这里是CAMEL-AI开源社区官方公众号,希望让更多的中文开发者们了解最新的Agent行业资讯和CAMEL-AI的更新与改进。
总阅读21
粉丝0
内容79