当前位置:首页>python>ABM专栏 | 基于Python+DeepSeek实现生成式社会仿真模拟

ABM专栏 | 基于Python+DeepSeek实现生成式社会仿真模拟

  • 2026-10-11 07:36:31
ABM专栏 | 基于Python+DeepSeek实现生成式社会仿真模拟

引言:为什么需要 GABM?

传统社会科学研究的核心目标通常在于理解个体如何行动、群体如何形成、社会规范如何出现等等。为此,研究者们长期使用一种经典方法 Agent-Based Modeling(ABM)。其核心思想非常直观:

将社会视为由大量“个体”(agent)相互作用构成的复杂系统。

研究者通过定义agent 的属性、行为规则和交互机制,来观察系统如何演化。通过这种方式,研究者可以模拟疫情传播、谣言扩散、市场竞争、社会规范形成等等。

然而,传统 ABM 长期存在一个致命的缺陷,就是人类行为很难被简单规则准确描述。

现实中的人类个体并不是严格理性的,他们会从众、犹豫、情绪化、追随权威、追求身份认同、……。也就是说,我们很多社会行为并不是基于固定规则,而是往往由认知所驱动的。这意味着:传统 ABM 虽然能够模拟交互规则,却难以真正模拟“人的思考过程”。

一、GABM 及其核心思想

随着 ChatGPT、DeepSeek 等大语言模型(LLM)的发展,研究者开始意识到:大语言模型不仅学会了语言表达,更在海量互联网文本中学习了社会互动、群体心理、、社会规范、权威关系等等。于是,一个新的问题被提出:

是否可以让 LLM 替代传统 ABM 中的行为规则?

这便是 Generative Agent-Based Modeling(GABM)。其本质可以概括为 ABM + LLM;其中 ABM 负责社会结构,LLM 负责认知推理。在 GABM 中,研究者不再定义行为规则,而是:response = LLM(prompt),即让 agent 自己思考。这意味着:GABM 不再只是模拟行为规则,而开始尝试模拟认知过程。

GABM 和传统 ABM的主要特征比较,如下:

传统 ABM
GABM
规则驱动
认知驱动
行为预定义
行为生成
研究规则
研究推理
强可解释性
高表达能力

GABM 的两个核心要点包括:

1 Prompt 即社会环境

在 GABM 中,Prompt 不只是输入文本;它实际上承担了社会环境描述的功能,因此其本身已经成为模型结构的一部分。

2 Emergence(涌现)

GABM 中最核心的概念之一是 Emergence(涌现),即:群体层面的复杂现象由个体互动自然产生。例如社会规范、从众行为、权威效应、身份认同、群体极化等,这些行为并不是研究者硬编码的;而是从 agent 的认知推理中自然出现。

二、一个简单模型:办公室着装规范(Blue or Green)

这里,我们给出一个非常简单的仿真实验场景:某办公室中有若干员工(worker agent);每天,每个员工都需要决定穿蓝色(Blue)或绿色(Green)衬衫。

在任一仿真时刻 t,每个 worker agent 可以获得的信息包括:昨天多少人穿蓝色衬衫、多少人穿绿色衬衫,自己的人格特征和自己昨天穿了什么颜色的衬衫。随后,worker agent 使用大语言模型完成推理,并做出新的选择决策。

仿真模型的设计及实现采用模块化结构:

gabm_project/│├── main.py├── agent.py├── llm.py└── config.py
各模块的具体功能如下:
文件
功能
config.py
API 配置
llm.py
DeepSeek 接口封装
agent.py
Agent 定义与决策
main.py
Simulation 主程序

系统中的每个 Worker  agent表示一个办公室员工,其核心状态包括:

self.idxself.personaself.current_colorself.previous_color

分别表示agent ID、人格特征、当前颜色和历史状态。


我们通过build_prompt()函数构建社会环境、人格特征、历史行为和决策任务等;最后,在decide()函数中完成决策行为和状态更新。

import randomfrom llm import ask_llmclass Worker:    def __init__(self, idx, persona):        # initialize the worker attributes        self.idx = idx        self.persona = persona        self.current_color = random.choice([            "blue",            "green"        ])        self.previous_color = self.current_color    # build the prompt for the worker based on the counts of blue and green shirts, the worker's persona, and previous color    def build_prompt(self, blue_count, green_count):        prompt = f"""You work in an office.Yesterday:- {blue_count} workers wore blue shirts- {green_count} workers wore green shirtsYour personality: {self.persona}Yesterday you wore: {self.previous_color}Today decide: blue or green?Return ONLY one word: blue or green"""        return prompt    # use the prompt to ask the LLM and update the worker's current color based on the response    def decide(self, blue_count, green_count):        prompt = self.build_prompt(            blue_count,            green_count        )        response = ask_llm(prompt)        response = response.lower()        if "blue" in response:            self.current_color = "blue"        else:            self.current_color = "green"

三、结果与讨论

在仿真实验过程中,最重要的一点是研究者没有写任何“从众规则”;而是系统中的所有行为完全由 LLM 自主生成。仿真结果发现:LLM 展现了惊人的拟人化推理能力;并且即使不存在显式规则,系统依然会逐渐形成主导颜色、稳定规范和群体行为一致性。

这表明:

大语言模型已经隐含学习了大量人类社会行为模式。

然而,当前 GABM 应用也具有一些局限性,具体包括:

  1. Prompt 敏感性。Prompt 已经成为模型结构的一部分。Prompt 的细微变化都可能导致完全不同的结果。

  2. 黑箱问题。GABM 的可解释性仍有限。研究者无法完全解释LLM 为什么会做出某种推理。

  3. 计算成本问题。如果agent 数量增加、simulation 时间增长、API 调用成本会迅速上升。因此,当前 GABM 更适合小规模实验、方法探索或原型研究。

参考文献:Ghaffarzadegan, et al. (2024). 


最新文章

随机文章