基于论文原文(特别是第3.1节及附录C的提示词示例),以下详细解析如何通过提示工程将大语言模型改造为世界模型:
一、世界模型的功能定位与提示工程目标
根据第3.1节,世界模型需实现状态转移预测:
"世界模型将预测推理的下一状态 st+1s_{t+1}st+1... 具体而言,我们复用同一大语言模型来获取状态转移分布 p(st+1∣st,at,c′)p(s_{t+1}|s_t, a_t, c')p(st+1∣st,at,c′)"
提示工程的核心目标:通过特定提示词 c′c'c′,将原本作为生成模型的LLM,重新定位为状态转移模拟器------即给定当前状态 sts_tst 和动作 ata_tat,输出预测的新状态 st+1s_{t+1}st+1。
二、提示工程的三重机制
1. 角色重塑(Role Repurposing)
通过提示词明确指令LLM扮演世界模型角色,而非推理智能体。以Blocksworld为例(附录C.1):
text
在给定一个初始状态和一个动作后,给出执行该动作后的新状态。
此指令明确界定了LLM的任务边界:不生成行动计划,而是模拟物理状态变化。
2. 输入输出结构化(Structured I/O)
提示词严格定义了状态表示的格式,使LLM输出可作为下一轮的确定性输入。
Blocksworld示例(附录C.1):
- 输入格式:[状态0] 当前状态为:白色积木顶部空闲,青色积木顶部空闲... [动作] 拾取棕色积木
- 输出格式:[状态变化] 机械手由空闲变为持有棕色积木,棕色积木由桌面上变为在机械手中... [状态1] 当前状态为:...
这种结构化设计确保了状态 st+1s_{t+1}st+1 可被解析为下一轮的 sts_tst,形成马尔可夫链。
3. 上下文学习(In-Context Learning)
通过少样本示例(few-shot demonstrations)教会LLM状态转移规则,无需微调。
关键设计:示例需展示状态变化的因果机制,而非仅展示正确答案。如附录C.1中的示例:
text
[状态0] 当前状态为:白色积木顶部空闲...棕色积木置于桌面上。
[动作] 拾取棕色积木。
[状态变化] 机械手由空闲变为持有棕色积木,棕色积木由桌面上变为在机械手中...
[状态1] 当前状态为:...棕色积木在机械手中...
这些示例显式编码了领域物理规则(如"拾取"动作导致"手持有积木"且"积木不在桌面"),使LLM通过模式匹配学习状态转移逻辑。
三、分领域的提示工程实现
1. Blocksworld(物理规划)
世界模型任务:模拟积木世界的物理状态转移。
提示词结构(附录C.1):
- 前置规则:先列出动作约束(如"只有当积木位于桌面上且处于清空状态时才能拾起")
- 状态描述协议:使用固定模板描述积木配置("X积木顶部空闲"、"Y积木置于桌面"、"机械手持有Z")
- 转移逻辑示例:展示动作如何改变具体状态谓词(如"清空状态"变为"持有状态")
运作机制:
当智能体执行动作 ata_tat="将蓝色积木从黄色积木上取下"时,提示词构造如下输入:
text
[状态0] <当前蓝色积木在黄色积木上,手空闲...>
[动作] 将蓝色积木从黄色积木上取下
[状态变化]
LLM根据示例中的模式(如"移开"动作导致"手持有被移开积木"、"被移开积木不再位于原积木上"),生成:
text
机械手由空闲变为持有蓝色积木,蓝色积木由黄色积木顶部变为在机械手中...
2. 数学推理(GSM8K)
世界模型任务:模拟数学问题的中间变量状态转移。
提示词设计(附录C.2):
- 状态定义:中间变量的取值(如"穆罕默德现在的年龄"、"科迪四年前的年龄")
- 动作定义:子问题的提出(如"穆罕默德现在多大?")
- 状态转移:通过回答子问题更新变量值
示例片段:
text
问题1.1:穆罕默德现在多大?
答案1.1:他目前是30 * 2 = 60岁。答案是60。
问题1.2:四年前穆罕默德多大?
答案1.2:四年前,他应该是60 - 4 = 56岁。答案是56。
在此框架下,LLM作为世界模型,接收当前状态(已知穆罕默德现在60岁)和动作(子问题"四年前他多大"),输出新状态(56岁)。这与CoT的关键区别在于:状态被显式实例化为可验证的数值,而非仅作为文本生成。
3. 逻辑推理(PrOntoQA)
世界模型任务:模拟逻辑事实的演绎推导。
提示词设计(附录C.3):
- 状态:当前关注的事实(如"莎莉是昆虫")
- 动作:选择逻辑规则(如"每个昆虫都有六条腿")
- 状态转移:应用规则生成新事实
关键提示词结构:
text
给定一组事实和一个当前主张,输出一个可能的事实作为下一步。
...
主张1.1:莎莉是一种昆虫。
下一步1.1:每个昆虫都有六条腿。
此处LLM作为世界模型,模拟逻辑规则的适用性:给定当前事实状态(莎莉是昆虫)和动作(选择规则"每个昆虫都有六条腿"),预测下一状态(可推导出莎莉有六条腿)。
四、技术细节:与智能体角色的区分
第3.1节强调同一LLM被复用但功能不同:
| 角色 | 提示词特征 | 输出分布 | 示例(Blocksworld) |
|---|---|---|---|
| 智能体 | 提示词 ccc 包含目标描述和示例计划 | p(a∣st,c)p(a|s_t, c)p(a∣st,c)-生成动作 | "拾起橙色积木" |
| 世界模型 | 提示词 c′c'c′ 包含物理规则和状态转移示例 | p(st+1∣st,at,c′)p(s_{t+1}|s_t, a_t, c')p(st+1∣st,at,c′)- 预测新状态 | "手持有橙色积木,橙色积木不在桌面" |
关键提示工程技巧(附录C.1):
- 截断历史:在计算奖励 rtr_trt 时,"仅将当前状态输入大语言模型并隐藏历史信息"(第4.1节案例研究)。这确保世界模型基于当前状态 sts_tst 而非完整轨迹进行预测,强化马尔可夫性。
- 确定性约束:通过提示词要求"请务必复制事实中的确切句子。不要改动任何措辞"(附录C.3),确保状态表示的规范性,便于后续解析。
五、总结
通过提示工程构建世界模型的本质,是利用LLM的上下文学习能力,通过精心设计的少样本示例和角色指令,将其从文本生成器重新配置为状态转移模拟器。这一过程不涉及模型参数更新("我们采用冻结的大型语言模型",第6节),而是通过提示词 c′c'c′ 的条件分布 p(st+1∣st,at,c′)p(s_{t+1}|s_t, a_t, c')p(st+1∣st,at,c′) 实现世界模型的功能。