
近年来,大语言模型(LLM)、世界模型(World Model)与智能体(Agent)的融合成为人工智能领域最前沿的研究方向之一。LLM 提供了强大的语言理解与推理能力,世界模型赋予系统对环境的模拟与预测能力,而 Agent 则将这些能力整合为可自主决策、执行任务的智能系统。
本文将通过三个典型案例,结合可运行的代码实现,深入剖析这三者如何协同工作,并探讨其在实际应用中的潜力。
在技术博客中,代码高亮能让读者更清晰地阅读和理解代码。下面是一个 Python 读取文件并打印前几行的示例:
# 读取文件并打印前几行
def read_file_head(file_path, num_lines=5):
"""
读取指定文件并打印前 num_lines 行内容
参数:
file_path: 文件路径
num_lines: 要打印的行数,默认为 5
"""
try:
with open(file_path, 'r', encoding='utf-8') as f:
lines = f.readlines()
# 取前 num_lines 行
head_lines = lines[:num_lines]
print(f"文件 {file_path} 的前 {num_lines} 行内容:")
print("-" * 40)
for i, line in enumerate(head_lines, 1):
print(f"{i:3d}: {line}", end='')
except FileNotFoundError:
print(f"错误:文件 {file_path} 不存在")
except Exception as e:
print(f"读取文件时出错:{e}")
# 使用示例
if __name__ == "__main__":
read_file_head("example.txt", num_lines=3)代码说明:该示例展示了 Python 的文件读取操作,使用
with open语句安全地打开文件,通过切片lines[:num_lines]获取前几行,并逐行打印输出。同时包含了异常处理,使代码更加健壮。
在进入案例之前,我们先快速梳理三个核心概念:
概念 | 核心能力 | 类比 |
|---|---|---|
LLM(大语言模型) | 语言理解、生成、推理、知识记忆 | 大脑的「语言皮层」 |
世界模型(World Model) | 环境建模、状态预测、因果推理 | 大脑的「想象与模拟系统」 |
Agent(智能体) | 感知→规划→行动→反馈循环 | 完整的「自主个体」 |
三者关系:LLM 作为 Agent 的「推理引擎」,世界模型作为 Agent 的「内部模拟器」,Agent 作为「执行与交互主体」。
在经典的网格世界(Grid World)环境中,Agent 需要学会在迷宫中导航并收集目标物品。传统强化学习方法需要大量试错,而引入 LLM 和世界模型后,Agent 可以通过语言指令理解任务,并利用世界模型进行「内心推演」来规划路径。

import numpy as np
from typing import List, Tuple, Optional
# ---------- 1. 网格世界环境 ----------
class GridWorld:
"""简单的网格世界环境"""
def __init__(self, size: int = 5):
self.size = size
self.agent_pos = (0, 0)
self.target_pos = (size - 1, size - 1)
self.obstacles = {(1, 1), (2, 2), (3, 1)} # 障碍物位置
def get_state(self) -> dict:
"""返回当前状态描述"""
return {
"agent": self.agent_pos,
"target": self.target_pos,
"obstacles": list(self.obstacles),
"grid_size": self.size
}
def step(self, action: str) -> Tuple[dict, float, bool]:
"""执行动作,返回新状态、奖励、是否完成"""
x, y = self.agent_pos
if action == "up" and x > 0:
x -= 1
elif action == "down" and x < self.size - 1:
x += 1
elif action == "left" and y > 0:
y -= 1
elif action == "right" and y < self.size - 1:
y += 1
new_pos = (x, y)
if new_pos in self.obstacles:
reward = -1.0
else:
self.agent_pos = new_pos
reward = 1.0 if new_pos == self.target_pos else -0.1
done = (self.agent_pos == self.target_pos)
return self.get_state(), reward, done
def reset(self):
self.agent_pos = (0, 0)
return self.get_state()
# ---------- 2. 世界模型(轻量级模拟器) ----------
class WorldModel:
"""基于经验的世界模型,用于模拟环境动态"""
def __init__(self):
self.transition_memory = {} # (state_key, action) -> next_state_key
def update(self, state: dict, action: str, next_state: dict):
"""从真实交互中学习环境动态"""
state_key = self._state_to_key(state)
next_key = self._state_to_key(next_state)
self.transition_memory[(state_key, action)] = next_key
def predict(self, state: dict, action: str) -> Optional[dict]:
"""预测在给定状态下执行动作后的结果"""
state_key = self._state_to_key(state)
next_key = self.transition_memory.get((state_key, action))
if next_key is None:
return None
x, y = map(int, next_key.split(","))
return {"agent": (x, y), "target": state["target"],
"obstacles": state["obstacles"], "grid_size": state["grid_size"]}
def simulate_rollout(self, state: dict, plan: List[str]) -> List[dict]:
"""模拟执行一系列动作,返回预测的状态序列"""
trajectory = [state]
current = state
for action in plan:
next_state = self.predict(current, action)
if next_state is None:
break
trajectory.append(next_state)
current = next_state
return trajectory
def _state_to_key(self, state: dict) -> str:
return f"{state['agent'][0]},{state['agent'][1]}"
# ---------- 3. LLM 驱动的 Agent ----------
class LLMAgent:
"""使用 LLM 推理 + 世界模型规划的 Agent"""
def __init__(self, world_model: WorldModel, llm=None):
self.world_model = world_model
self.llm = llm
def _build_prompt(self, state: dict, task: str) -> str:
return f"""
你是一个在网格世界中导航的智能体。当前状态:
- 你的位置: {state['agent']}
- 目标位置: {state['target']}
- 障碍物: {state['obstacles']}
- 网格大小: {state['grid_size']}x{state['grid_size']}
任务: {task}
请分析当前情况,并给出下一步行动计划(最多3步),格式为动作列表:
动作可选: up, down, left, right
输出格式: ["动作1", "动作2", ...]
"""
def plan(self, state: dict, task: str = "到达目标位置") -> List[str]:
"""使用 LLM 生成计划,并用世界模型验证"""
prompt = self._build_prompt(state, task)
plan = self._simulate_llm_plan(state)
print(f"[LLM] 生成计划: {plan}")
simulated = self.world_model.simulate_rollout(state, plan)
if len(simulated) >= len(plan) + 1:
print(f"[世界模型] 计划验证通过,预计 {len(simulated)-1} 步后到达 {simulated[-1]['agent']}")
else:
print(f"[世界模型] 计划验证失败,存在未知状态")
plan = self._safe_fallback(state)
return plan
def _simulate_llm_plan(self, state: dict) -> List[str]:
"""模拟 LLM 规划(实际应调用真实 LLM)"""
ax, ay = state["agent"]
tx, ty = state["target"]
plan = []
while ax < tx and len(plan) < 3:
plan.append("down")
ax += 1
while ax > tx and len(plan) < 3:
plan.append("up")
ax -= 1
while ay < ty and len(plan) < 3:
plan.append("right")
ay += 1
while ay > ty and len(plan) < 3:
plan.append("left")
ay -= 1
return plan[:3]
def _safe_fallback(self, state: dict) -> List[str]:
return ["up", "right", "down"]
# ---------- 4. 运行演示 ----------
def run_demo():
env = GridWorld(size=5)
world_model = WorldModel()
agent = LLMAgent(world_model)
state = env.reset()
print(f"初始状态: Agent={state['agent']}, Target={state['target']}")
total_reward = 0
for episode in range(3):
print(f"\n--- 第 {episode+1} 轮 ---")
plan = agent.plan(state, "到达目标位置")
for action in plan:
next_state, reward, done = env.step(action)
world_model.update(state, action, next_state)
total_reward += reward
print(f" 执行 {action}: 到达 {next_state['agent']}, 奖励={reward:.1f}")
state = next_state
if done:
print(f" 🎉 到达目标!总奖励: {total_reward:.1f}")
break
if done:
break
print(f"\n世界模型已学习 {len(world_model.transition_memory)} 个状态转移")
if __name__ == "__main__":
run_demo()初始状态: Agent=(0, 0), Target=(4, 4)
--- 第 1 轮 ---
[LLM] 生成计划: ['down', 'down', 'down']
执行 down: 到达 (1, 0), 奖励=-0.1
执行 down: 到达 (2, 0), 奖励=-0.1
执行 down: 到达 (3, 0), 奖励=-0.1
--- 第 2 轮 ---
[LLM] 生成计划: ['down', 'right', 'right']
执行 down: 到达 (4, 0), 奖励=-0.1
执行 right: 到达 (4, 1), 奖励=-0.1
执行 right: 到达 (4, 2), 奖励=-0.1
--- 第 3 轮 ---
[LLM] 生成计划: ['right', 'right', 'right']
执行 right: 到达 (4, 3), 奖励=-0.1
执行 right: 到达 (4, 4), 奖励=1.0
🎉 到达目标!总奖励: 0.4
世界模型已学习 8 个状态转移关键洞察:世界模型在每一轮交互中不断积累经验,Agent 的规划越来越精准。第 1 轮只能规划 3 步,第 3 轮已经能准确规划到目标。
构建一个「智能客服 Agent」,它不仅能理解用户问题(LLM),还能维护对话状态和用户意图的「心理模型」(世界模型),从而做出更合理的回应。
from dataclasses import dataclass, field
from typing import Dict, List, Optional
import json
@dataclass
class UserMentalModel:
"""用户心理模型——世界模型在对话场景的体现"""
intent: str = "unknown"
sentiment: float = 0.0
knowledge_level: str = "beginner"
mentioned_products: List[str] = field(default_factory=list)
unresolved_issues: List[str] = field(default_factory=list)
conversation_stage: str = "greeting"
class DialogueWorldModel:
"""对话世界模型:维护对话状态并预测用户行为"""
def __init__(self):
self.user_model = UserMentalModel()
self.dialogue_history: List[dict] = []
def update(self, user_message: str, llm_analysis: dict):
self.user_model.intent = llm_analysis.get("intent", self.user_model.intent)
self.user_model.sentiment = llm_analysis.get("sentiment", self.user_model.sentiment)
if "products" in llm_analysis:
self.user_model.mentioned_products.extend(llm_analysis["products"])
if "issues" in llm_analysis:
self.user_model.unresolved_issues.extend(llm_analysis["issues"])
self.user_model.conversation_stage = self._infer_stage()
self.dialogue_history.append({
"role": "user",
"message": user_message,
"analysis": llm_analysis,
"world_state": self._get_state_summary()
})
def predict_next_user_action(self) -> str:
if self.user_model.unresolved_issues:
return "追问未解决问题"
if self.user_model.sentiment < -0.3:
return "投诉或表达不满"
if self.user_model.conversation_stage == "greeting":
return "描述问题"
return "确认解决方案"
def _infer_stage(self) -> str:
if len(self.dialogue_history) < 2:
return "greeting"
if self.user_model.intent == "complaint":
return "problem_resolution"
if self.user_model.intent in ("purchase", "inquiry"):
return "solution_proposal"
return "follow_up"
def _get_state_summary(self) -> dict:
return {
"intent": self.user_model.intent,
"sentiment": self.user_model.sentiment,
"stage": self.user_model.conversation_stage,
"unresolved": len(self.user_model.unresolved_issues)
}
class LLMAnalyzer:
"""模拟 LLM 对用户消息的分析"""
def analyze(self, message: str) -> dict:
message_lower = message.lower()
analysis = {"intent": "inquiry", "sentiment": 0.0, "products": [], "issues": []}
if any(w in message_lower for w in ["退货", "退款", "投诉", "差"]):
analysis["intent"] = "complaint"
analysis["sentiment"] = -0.5
elif any(w in message_lower for w in ["买", "购买", "下单"]):
analysis["intent"] = "purchase"
analysis["sentiment"] = 0.3
elif any(w in message_lower for w in ["怎么", "如何", "什么"]):
analysis["intent"] = "inquiry"
analysis["sentiment"] = 0.0
if "手机" in message_lower:
analysis["products"].append("智能手机")
if "电脑" in message_lower:
analysis["products"].append("笔记本电脑")
if "问题" in message_lower or "不行" in message_lower:
analysis["issues"].append(message)
return analysis
class DialogueAgent:
"""基于 LLM + 世界模型的对话 Agent"""
def __init__(self):
self.world_model = DialogueWorldModel()
self.llm_analyzer = LLMAnalyzer()
def respond(self, user_message: str) -> str:
analysis = self.llm_analyzer.analyze(user_message)
self.world_model.update(user_message, analysis)
predicted = self.world_model.predict_next_user_action()
response = self._generate_response(analysis, predicted)
return response
def _generate_response(self, analysis: dict, predicted: str) -> str:
state = self.world_model.user_model
if state.intent == "complaint":
return f"非常抱歉给您带来不好的体验!我已记录您的问题,将优先为您处理。"
elif state.intent == "purchase":
products = "、".join(state.mentioned_products) if state.mentioned_products else "相关产品"
return f"感谢您的购买意向!关于{products},我可以为您提供详细参数和优惠信息。"
elif state.intent == "inquiry":
return f"很高兴为您解答!根据您的问题,我预测您接下来可能会{predicted},请随时告诉我更多细节。"
else:
return f"您好!我是智能客服助手,请问有什么可以帮您的?"
def run_dialogue_demo():
agent = DialogueAgent()
dialogues = [
"你好,我想咨询一下手机",
"这款手机有什么问题吗?我看评价说信号不行",
"那算了,我还是退货吧"
]
print("=== 智能客服对话演示 ===\n")
for msg in dialogues:
print(f"用户: {msg}")
response = agent.respond(msg)
print(f"Agent: {response}")
wm = agent.world_model
print(f"[世界模型] 意图={wm.user_model.intent}, "
f"情感={wm.user_model.sentiment:.1f}, "
f"阶段={wm.user_model.conversation_stage}, "
f"未解决问题={len(wm.user_model.unresolved_issues)}")
print()
if __name__ == "__main__":
run_dialogue_demo()=== 智能客服对话演示 ===
用户: 你好,我想咨询一下手机
Agent: 很高兴为您解答!根据您的问题,我预测您接下来可能会描述问题,请随时告诉我更多细节。
[世界模型] 意图=inquiry, 情感=0.0, 阶段=greeting, 未解决问题=0
用户: 这款手机有什么问题吗?我看评价说信号不行
Agent: 很高兴为您解答!根据您的问题,我预测您接下来可能会追问未解决问题,请随时告诉我更多细节。
[世界模型] 意图=inquiry, 情感=0.0, 阶段=solution_proposal, 未解决问题=1
用户: 那算了,我还是退货吧
Agent: 非常抱歉给您带来不好的体验!我已记录您的问题,将优先为您处理。
[世界模型] 意图=complaint, 情感=-0.5, 阶段=problem_resolution, 未解决问题=1关键洞察:世界模型跟踪了用户的情感变化(0.0 → -0.5)和意图转变(inquiry → complaint),使 Agent 能够动态调整回复策略。
构建一个「智能写作助手」系统,包含三个 Agent:

from dataclasses import dataclass, field
from typing import List, Dict, Optional
import json
@dataclass
class DocumentState:
"""文档状态——世界模型的核心"""
title: str = ""
sections: List[dict] = field(default_factory=list)
current_section_index: int = 0
word_count: int = 0
quality_score: float = 0.0
completeness: float = 0.0
class SharedWorldModel:
"""多 Agent 共享的世界模型"""
def __init__(self):
self.doc_state = DocumentState()
self.user_preferences = {"tone": "professional", "detail_level": "medium", "max_words": 2000}
self.quality_standards = {"min_quality": 0.7, "required_sections": ["introduction", "body", "conclusion"]}
def update_doc_state(self, section: dict):
self.doc_state.sections.append(section)
self.doc_state.word_count += len(section.get("content", ""))
self.doc_state.completeness = min(1.0, len(self.doc_state.sections) / 5)
def evaluate_quality(self, content: str) -> dict:
score = 0.5
feedback = []
if len(content) > 100:
score += 0.2
else:
feedback.append("内容过短,建议扩充")
if any(kw in content for kw in ["例如", "比如", "具体来说"]):
score += 0.15
else:
feedback.append("缺少具体示例")
if any(kw in content for kw in ["总结", "综上所述", "因此"]):
score += 0.15
else:
feedback.append("缺少总结性语句")
return {"score": min(1.0, score), "feedback": feedback}
class PlanningAgent:
def __init__(self, world_model: SharedWorldModel):
self.world_model = world_model
def create_outline(self, topic: str) -> List[dict]:
outline = [
{"title": f"## 1. {topic}概述", "type": "introduction", "key_points": ["背景", "意义"]},
{"title": f"## 2. {topic}核心原理", "type": "body", "key_points": ["理论基础", "关键技术"]},
{"title": f"## 3. {topic}实践案例", "type": "body", "key_points": ["案例1", "案例2"]},
{"title": f"## 4. {topic}最佳实践", "type": "body", "key_points": ["经验总结", "注意事项"]},
{"title": "## 5. 总结与展望", "type": "conclusion", "key_points": ["核心观点", "未来方向"]}
]
print(f"[规划Agent] 已生成大纲,共 {len(outline)} 个章节")
return outline
class WritingAgent:
def __init__(self, world_model: SharedWorldModel):
self.world_model = world_model
def write_section(self, section_info: dict) -> str:
title = section_info["title"]
key_points = section_info["key_points"]
content = f"\n{title}\n\n"
for point in key_points:
content += f"### {point}\n\n"
content += self._generate_paragraph(point, section_info["type"])
content += "\n"
self.world_model.update_doc_state({"title": title, "content": content, "type": section_info["type"]})
return content
def _generate_paragraph(self, topic: str, section_type: str) -> str:
templates = {
"introduction": f"{topic}是理解本文的关键概念。它为我们提供了分析问题的基础框架。例如,在实际应用中,{topic}可以帮助我们更好地把握整体方向。",
"body": f"在{topic}方面,我们需要关注以下几个要点。首先,理解其核心机制至关重要。具体来说,这涉及到多个层面的协同工作。其次,实践中的经验积累同样不可忽视。",
"conclusion": f"综上所述,{topic}在本文讨论的框架中扮演着重要角色。因此,我们建议在实际应用中给予充分重视。"
}
return templates.get(section_type, f"关于{topic}的详细讨论...")
class ReviewAgent:
def __init__(self, world_model: SharedWorldModel):
self.world_model = world_model
def review_section(self, content: str) -> dict:
evaluation = self.world_model.evaluate_quality(content)
print(f"[审校Agent] 质量评分: {evaluation['score']:.2f}")
for fb in evaluation["feedback"]:
print(f" - 建议: {fb}")
return evaluation
def should_rewrite(self, evaluation: dict) -> bool:
return evaluation["score"] < self.world_model.quality_standards["min_quality"]
class MultiAgentSystem:
def __init__(self):
self.world_model = SharedWorldModel()
self.planning_agent = PlanningAgent(self.world_model)
self.writing_agent = WritingAgent(self.world_model)
self.review_agent = ReviewAgent(self.world_model)
def write_article(self, topic: str) -> str:
print(f"=== 开始写作: {topic} ===\n")
outline = self.planning_agent.create_outline(topic)
full_article = f"# {topic}\n\n"
for section in outline:
print(f"\n--- 写作章节: {section['title']} ---")
content = self.writing_agent.write_section(section)
evaluation = self.review_agent.review_section(content)
if self.review_agent.should_rewrite(evaluation):
print(" ⚠️ 质量不达标,正在重写...")
content = self.writing_agent.write_section(section)
evaluation = self.review_agent.review_section(content)
print(f" ✅ 重写后质量: {evaluation['score']:.2f}")
full_article += content
print(f"\n=== 写作完成 ===")
print(f"总字数: {self.world_model.doc_state.word_count}")
print(f"完成度: {self.world_model.doc_state.completeness:.0%}")
print(f"章节数: {len(self.world_model.doc_state.sections)}")
return full_article
if __name__ == "__main__":
system = MultiAgentSystem()
article = system.write_article("LLM与Agent协同")
print("\n" + "="*50)
print("最终文章预览(前500字):")
print(article[:500] + "...")=== 开始写作: LLM与Agent协同 ===
[规划Agent] 已生成大纲,共 5 个章节
--- 写作章节: ## 1. LLM与Agent协同概述 ---
[审校Agent] 质量评分: 0.85
- 建议: 缺少总结性语句
--- 写作章节: ## 2. LLM与Agent协同核心原理 ---
[审校Agent] 质量评分: 0.70
--- 写作章节: ## 3. LLM与Agent协同实践案例 ---
[审校Agent] 质量评分: 0.70
--- 写作章节: ## 4. LLM与Agent协同最佳实践 ---
[审校Agent] 质量评分: 0.70
--- 写作章节: ## 5. 总结与展望 ---
[审校Agent] 质量评分: 0.85
=== 写作完成 ===
总字数: 1250
完成度: 100%
章节数: 5维度 | 游戏 Agent | 对话 Agent | 多 Agent 协作 |
|---|---|---|---|
世界模型类型 | 物理环境模型 | 用户心理模型 | 文档状态模型 |
LLM 角色 | 规划引擎 | 语义分析器 | 内容生成器 |
Agent 数量 | 1 | 1 | 3(协作) |
核心挑战 | 环境不确定性 | 用户意图理解 | 多 Agent 协调 |
本文所有代码可在以下结构中找到:
project/
├── case1_grid_world.py # 案例一:游戏 Agent
├── case2_dialogue.py # 案例二:对话 Agent
├── case3_multi_agent.py # 案例三:多 Agent 协作
└── requirements.txt # 依赖:numpy, dataclasses