用 3 万台 AI 居民复刻北京一天:AgentSociety 如何让大模型真正“生活”在城里?
❝
关键词:大规模 LLM 智能体、社会模拟、并行计算、真实环境、城市行为、AgentSociety 框架
❞
开场白
想象一下,如果明天早上北京的早高峰不再由真人组成,而是 3 万个由大模型驱动的“数字市民”同时出门上班、挤地铁、约咖啡,这座虚拟城市还能不能保持和北京一样的节奏?
清华大学和香港科技大学(广州)团队给出的答案是:「可以,而且比现实跑得更快」。
他们把这套系统叫做 「AgentSociety」。下文用最直白的语言带你拆解:它到底做了什么、怎么做、以及你可以怎样用起来。
一、为什么需要“数字市民”?
传统做法 | 痛点 | AgentSociety 的解法 |
---|---|---|
用固定规则写“人” | 行为僵硬,一放大就失真 | 让大模型自己“长”出行为 |
用游戏地图当城市 | 不像真实道路、真实经济 | 接入 OpenStreetMap 与真实商户数据 |
跑 100 个智能体就卡 | 端口、内存瞬间爆炸 | 24 张 A800 并行,30 000 人还能快过现实时钟 |
二、系统全景:三块积木搭出一座城
为了方便理解,把 AgentSociety 拆成三块积木:
-
「城市空间」(Urban Space) -
「社交空间」(Social Space) -
「经济空间」(Economic Space)
再通过一个「并行交互引擎」把它们粘在一起。
2.1 城市空间:让智能体会“走路”
-
「地图来源」:OpenStreetMap + SafeGraph 商户点位 -
「交通方式」:开车、步行、公交、打车,一秒一步,实时更新位置 -
「路径规划」:Golang 写的离散时间模拟器,1 秒 1 步,能随时改路线
「举个例子」:
数字市民 Alice 想 8:30 到望京 SOHO,系统会立刻算出步行到地铁、换乘 15 号线、出站步行 400 米,全程 42 分钟——和现实导航一样准确。
2.2 社交空间:会发微信、也会“拉黑”
-
「线下社交」:同地点的人自动可见,可闲聊、可结伴走 -
「线上社交」:任何两个智能体都能私信;系统带“内容审查员”,模拟平台删帖、封号 -
「动态关系」:亲密度实时变化,好友可以秒变路人
2.3 经济空间:有工资、有税、有 GDP
角色 | 能力 |
---|---|
个人 | 找工作、领工资、消费、存钱、交税 |
公司 | 发布职位、发薪、裁员 |
银行 | 给利息 |
政府 | 调税、统计 GDP |
国家统计局(NBS) | 实时出宏观指标,比如人均工时 |
所有交易走一个「账本式模拟器」,Golang 实现,支持秒级利率、税率调整。
三、并行引擎:30 000 人同时在线不崩溃的秘诀
3.1 问题背景
-
单进程+多智能体 → 端口耗尽、内存炸、LLM 调用排队 -
每步时间漂移 → 实验不可复现
3.2 三步解决
步骤 | 技术细节 | 效果 |
---|---|---|
「分组并行」 | 把 30 000 人切成若干组,每组一个 Ray Actor,组内共享网络客户端 | 端口占用从“万级”降到“百级” |
「时间对齐」 | 每轮智能体思考固定对应 300 秒模拟世界时间 | 实验结果可复现 |
「消息总线」 | Redis Pub/Sub,支持任意两点通信;外部 GUI 也能插话 | 想采访某个智能体?直接发消息即可 |
四、跑起来有多快?实测数据说话
实验平台:华为云 c7.16xlarge,24× A800 GPU
模型:Qwen2.5-7B-Instruct
智能体数 | 分组数 | 单轮耗时 | 相比现实 |
---|---|---|---|
1 000 | 4 | 13.2 秒 | 快 23× |
3 000 | 8 | 28.9 秒 | 快 10× |
10 000 | 8 | 81.5 秒 | 快 4.4× |
30 000 | 8 | 251.9 秒 | 「快 1.2×」 |
❝
结论:只要 GPU 管够,性能线性增长;30 000 人跑一轮只要 4 分钟,现实里 5 分钟还没过完。
❞
五、真实环境到底多重要?一组对照实验
把同批智能体放在两种场景下:
-
「W-Env」:接入真实道路、商户、通勤时间 -
「WO-Env」:只靠大模型“脑补”距离和时间
指标 | 解释 | W-Env | WO-Env |
---|---|---|---|
Radius | 活动半径越小越真实 | 「0.023」 | 0.427 |
Dayloc | 每日到访地点数越接近真实越好 | 「0.038」 | 0.129 |
itdError | 意图-行为误差越小越好 | 「0.094」 | 0.241 |
一句话总结:「没有真实地图和交通数据,智能体就像无头苍蝇;接入后立刻“像人”。」
六、快速开始:10 行代码跑一次迷你北京
❝
下文所有命令都能在官方代码仓库找到,这里只节选关键步骤。
❞
-
克隆仓库
git clone https://github.com/tsinghua-fib-lab/AgentSociety cd AgentSociety
-
准备地图
python tools/download_map.py --city beijing --bbox 116.2,39.7,117.0,40.3
-
生成 1000 个居民
python scripts/generate_agents.py --num 1000 --config profiles/urban commuter.json
-
启动环境模拟器(Golang)
go run cmd/env/main.go --port 50051
-
启动并行引擎
ray start --head python scripts/run_simulation.py --agents 1000 --groups 4 --llm-endpoint http://localhost:8000/v1
-
看实时大屏
python -m gui.dashboard --db postgresql://user:pwd@localhost/agent_society
七、FAQ:你可能想问这些
「Q1:能跑更大规模吗?」
A:理论上只要 GPU 和内存足够,可以继续水平扩展。作者已在 24 A800 上验证 30 000 人,再大只是钱的问题。
「Q2:只能模拟北京吗?」
A:不是。OpenStreetMap 全球覆盖,换 bbox 即可切到任意城市。
「Q3:能把公司、学校、医院都加进去吗?」
A:可以。POI 数据支持自定义,经济空间也预留了接口给新角色。
「Q4:我不懂 Golang,能只用 Python 吗?」
A:可以。环境模拟器已提供 gRPC 接口,Python 端通过 env_client.py
即可调用。
「Q5:需要多少预算?」
A:30 000 人跑一天,大约 24 张 A800 工作 8 小时。实验室价 ≈ 数千元,云上按需更灵活。
「Q6:会不会泄露隐私?」
A:所有数据来自公开地图和匿名统计,不触及个人可识别信息。
八、局限与下一步
当前局限 | 可能的改进 |
---|---|
公司决策仍是脚本 | 接入企业级 LLM,做供需博弈 |
缺少市场机制 | 引入订单簿、价格波动 |
GPU 成本偏高 | 量化、剪枝、投机解码 |
九、小结:为什么值得你关注
AgentSociety 把三件事做到了一起:
-
「真地图」:OpenStreetMap + SafeGraph,让智能体像人一样导航。 -
「真经济」:工资、税收、GDP 全可算,宏观微观闭环。 -
「真并行」:Ray + Redis 的组策略,让 3 万人同时在线不卡。
这意味着社会学家、城市规划师、甚至商业分析师,都能用「自然语言」设计实验、用「真实数据」验证假设,而不再受限于问卷或游戏地图。
十、延伸阅读 & 引用格式
如果你要在论文或报告中引用,可使用以下 BibTeX:
@inproceedings{zhang2025agentsociety,
title={A Parallelized Framework for Simulating Large-Scale LLM Agents with Realistic Environments and Interactions},
author={Zhang, Jun and Yan, Yuwei and Yan, Junbo and Zheng, Zhiheng and Piao, Jinghua and Jin, Depeng and Li, Yong},
booktitle={Proceedings of the 63rd Annual Meeting of the Association for Computational Linguistics (Volume 6: Industry Track)},
pages={1339--1349},
year={2025}
}
❝
你准备好让数字市民替你“试跑”下一座新城了吗?
把 AgentSociety 拉到本地,10 行命令,就能看见一座 1:1 的迷你北京醒来。❞