用 3 万台 AI 居民复刻北京一天:AgentSociety 如何让大模型真正“生活”在城里?

关键词:大规模 LLM 智能体、社会模拟、并行计算、真实环境、城市行为、AgentSociety 框架


开场白

想象一下,如果明天早上北京的早高峰不再由真人组成,而是 3 万个由大模型驱动的“数字市民”同时出门上班、挤地铁、约咖啡,这座虚拟城市还能不能保持和北京一样的节奏?
清华大学和香港科技大学(广州)团队给出的答案是:「可以,而且比现实跑得更快」
他们把这套系统叫做 「AgentSociety」。下文用最直白的语言带你拆解:它到底做了什么、怎么做、以及你可以怎样用起来。


一、为什么需要“数字市民”?

传统做法 痛点 AgentSociety 的解法
用固定规则写“人” 行为僵硬,一放大就失真 让大模型自己“长”出行为
用游戏地图当城市 不像真实道路、真实经济 接入 OpenStreetMap 与真实商户数据
跑 100 个智能体就卡 端口、内存瞬间爆炸 24 张 A800 并行,30 000 人还能快过现实时钟

二、系统全景:三块积木搭出一座城

为了方便理解,把 AgentSociety 拆成三块积木:

  1. 「城市空间」(Urban Space)
  2. 「社交空间」(Social Space)
  3. 「经济空间」(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 行代码跑一次迷你北京

下文所有命令都能在官方代码仓库找到,这里只节选关键步骤。

  1. 克隆仓库

    git clone https://github.com/tsinghua-fib-lab/AgentSociety
    cd AgentSociety
    
  2. 准备地图

    python tools/download_map.py --city beijing --bbox 116.2,39.7,117.0,40.3
    
  3. 生成 1000 个居民

    python scripts/generate_agents.py --num 1000 --config profiles/urban commuter.json
    
  4. 启动环境模拟器(Golang)

    go run cmd/env/main.go --port 50051
    
  5. 启动并行引擎

    ray start --head
    python scripts/run_simulation.py --agents 1000 --groups 4 --llm-endpoint http://localhost:8000/v1
    
  6. 看实时大屏

    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 把三件事做到了一起:

  1. 「真地图」:OpenStreetMap + SafeGraph,让智能体像人一样导航。
  2. 「真经济」:工资、税收、GDP 全可算,宏观微观闭环。
  3. 「真并行」: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 的迷你北京醒来。