智能体设计范式与实现模式详解

智能体设计范式与实现模式详解


一、智能体设计范式概述

1.1 范式定义

设计范式(Design Paradigm):智能体系统设计中经过验证的、可复用的解决方案框架,用于解决特定类型的问题。

1.2 范式分类体系

维度 分类 说明
决策方式 反应式、慎思式、混合式 智能体如何做出决策
协作模式 单智能体、多智能体、分层智能体 智能体之间的关系
学习能力 无学习、监督学习、强化学习、自监督学习 智能体如何获取知识
架构风格 管道式、事件驱动、微服务、分层架构 系统组织方式

1.3 主流设计范式

范式 核心思想 代表框架 适用场景
ReAct 推理 + 行动交替进行 LangChain, AutoGPT 动态环境、工具调用
Plan-and-Execute 先规划后执行 LlamaIndex, CrewAI 复杂任务分解
Reflexion 自我反思优化 Reflexion Framework 需要迭代改进的任务
Tree of Thought 树状思维探索 ToT Framework 需要深度思考的问题
Hierarchical 分层决策架构 MetaGPT 大型项目管理
Role-playing 角色扮演协作 ChatDev, MetaGPT 团队协作模拟

二、ReAct 范式

2.1 核心思想

ReAct(Reasoning + Acting):将推理和行动交替进行,智能体在思考过程中决定是否需要调用工具,然后根据工具结果继续推理。

循环流程

复制代码
思考(Reasoning)→ 行动(Action)→ 观察(Observation)→ 思考(Reasoning)→ ...

2.2 架构图

复制代码
┌─────────────────────────────────────────────────────────────┐
│                      ReAct 循环                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│    用户输入                                                  │
│        │                                                    │
│        ↓                                                    │
│    ┌──────────────┐                                         │
│    │   Reasoning  │ ←─────────────────────────────┐         │
│    │   (思考)      │                              │         │
│    └──────┬───────┘                              │         │
│           │                                       │         │
│           ↓                                       │         │
│    ┌──────────────┐                              │         │
│    │    Action    │                              │         │
│    │   (行动)      │                              │         │
│    └──────┬───────┘                              │         │
│           │                                       │         │
│           ↓                                       │         │
│    ┌──────────────┐                              │         │
│    │  Observation │──────────────────────────────┘         │
│    │   (观察)      │                                        │
│    └──────────────┘                                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2.3 代码实现

python 复制代码
class ReActAgent:
    def __init__(self, llm, tools):
        self.llm = llm
        self.tools = tools
        self.max_steps = 10
    
    def run(self, task):
        thoughts = []
        actions = []
        observations = []
        
        for step in range(self.max_steps):
            # 1. 思考阶段
            thought = self._reason(task, thoughts, actions, observations)
            thoughts.append(thought)
            
            # 2. 判断是否完成
            if self._is_complete(thought):
                return self._summarize(thoughts, actions, observations)
            
            # 3. 行动阶段
            action = self._decide_action(thought)
            actions.append(action)
            
            # 4. 执行工具
            observation = self._execute_action(action)
            observations.append(observation)
        
        return "任务未完成,已达到最大步数限制"
    
    def _reason(self, task, thoughts, actions, observations):
        """生成思考内容"""
        history = "\n".join([
            f"步骤{i+1}: 思考={thoughts[i]}, 行动={actions[i]}, 观察={observations[i]}"
            for i in range(len(thoughts))
        ])
        
        prompt = f"""
        任务:{task}
        
        历史记录:
        {history}
        
        可用工具:{self.tools.describe()}
        
        请思考下一步应该做什么,使用以下格式:
        思考:[你的思考内容]
        行动:[工具名称]或[完成]
        参数:[工具参数,如果是完成则为空]
        """
        
        return self.llm.generate(prompt)
    
    def _is_complete(self, thought):
        """判断任务是否完成"""
        return "完成" in thought or "总结" in thought
    
    def _decide_action(self, thought):
        """解析行动"""
        # 简单解析,实际应用中需要更复杂的解析逻辑
        lines = thought.split("\n")
        action_line = [l for l in lines if l.startswith("行动:")][0]
        action = action_line.replace("行动:", "").strip()
        return action
    
    def _execute_action(self, action):
        """执行工具调用"""
        if action in self.tools.get_names():
            return self.tools.call(action)
        return f"无法执行行动:{action}"
    
    def _summarize(self, thoughts, actions, observations):
        """总结结果"""
        prompt = f"""
        请总结以下任务的执行过程和结果:
        
        执行记录:
        {list(zip(thoughts, actions, observations))}
        
        请给出最终总结。
        """
        return self.llm.generate(prompt)

2.4 适用场景

场景 说明
动态环境交互 需要根据环境变化做出决策
多步工具调用 需要连续调用多个工具
信息收集任务 需要逐步收集信息
探索性任务 需要试错和调整策略

三、Plan-and-Execute 范式

3.1 核心思想

Plan-and-Execute(规划-执行):先对任务进行全局规划,生成详细的执行步骤,然后按步骤依次执行。

两阶段流程

  1. 规划阶段:分析任务,生成步骤列表
  2. 执行阶段:按步骤执行,必要时调整

3.2 架构图

复制代码
┌─────────────────────────────────────────────────────────────┐
│                   Plan-and-Execute                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│    用户输入                                                  │
│        │                                                    │
│        ↓                                                    │
│    ┌──────────────┐                                         │
│    │   Planner    │ ←─── 反馈调整 ───────────────┐          │
│    │   (规划器)    │                             │          │
│    └──────┬───────┘                             │          │
│           │                                     │          │
│           ↓                                     │          │
│    ┌──────────────┐                             │          │
│    │   Plan       │                             │          │
│    │   (计划)      │                             │          │
│    └──────┬───────┘                             │          │
│           │                                     │          │
│           ↓                                     │          │
│    ┌──────────────┐                             │          │
│    │  Executor    │─────────── 执行结果 ─────────┘          │
│    │   (执行器)    │                                        │
│    └──────┬───────┘                                         │
│           │                                                 │
│           ↓                                                 │
│       最终结果                                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3.3 代码实现

python 复制代码
class PlanAndExecuteAgent:
    def __init__(self, planner_llm, executor_llm, tools):
        self.planner = planner_llm
        self.executor = executor_llm
        self.tools = tools
        self.max_retries = 3
    
    def run(self, task):
        # 1. 生成计划
        plan = self._generate_plan(task)
        print(f"生成计划:{plan}")
        
        # 2. 执行计划
        results = []
        for i, step in enumerate(plan["steps"]):
            print(f"\n执行步骤 {i+1}/{len(plan['steps'])}: {step['description']}")
            
            try:
                result = self._execute_step(step, results)
                results.append({"step": step, "result": result, "status": "success"})
            except Exception as e:
                results.append({"step": step, "result": str(e), "status": "failed"})
                
                # 尝试调整计划
                if self.max_retries > 0:
                    plan = self._adjust_plan(task, plan, results)
                    self.max_retries -= 1
        
        # 3. 总结
        return self._summarize(task, plan, results)
    
    def _generate_plan(self, task):
        prompt = f"""
        请为以下任务生成详细的执行计划:
        
        任务:{task}
        
        可用工具:{self.tools.describe()}
        
        请输出 JSON 格式的计划:
        {{
            "goal": "任务目标",
            "steps": [
                {{"step": 1, "description": "步骤描述", "tool": "工具名称", "params": {{参数}}}},
                ...
            ]
        }}
        """
        
        response = self.planner.generate(prompt)
        return self._parse_json(response)
    
    def _execute_step(self, step, previous_results):
        prompt = f"""
        请执行以下步骤:
        
        步骤描述:{step['description']}
        
        可用工具:{step['tool']}
        
        参数:{step.get('params', {})}
        
        前置结果:{previous_results}
        
        请调用工具并返回结果。
        """
        
        return self.executor.generate(prompt)
    
    def _adjust_plan(self, task, plan, results):
        prompt = f"""
        计划执行遇到问题,请调整计划:
        
        原始任务:{task}
        
        当前计划:{plan}
        
        执行结果:{results}
        
        请基于失败情况调整计划,输出新的 JSON 格式计划。
        """
        
        response = self.planner.generate(prompt)
        return self._parse_json(response)
    
    def _summarize(self, task, plan, results):
        prompt = f"""
        请总结以下任务的执行过程:
        
        任务:{task}
        
        计划:{plan}
        
        执行结果:{results}
        
        请给出最终总结。
        """
        
        return self.planner.generate(prompt)
    
    def _parse_json(self, text):
        import json
        try:
            return json.loads(text)
        except:
            # 简单的容错处理
            return {"goal": text, "steps": []}

3.4 适用场景

场景 说明
复杂任务分解 需要多个步骤完成的任务
项目管理 需要规划和执行的项目
文档生成 需要结构化输出的任务
数据分析 需要多步骤处理的分析任务

四、Reflexion 范式

4.1 核心思想

Reflexion(反思):智能体在执行任务后进行自我反思,分析执行过程中的错误和不足,然后基于反思结果调整策略重新执行。

三阶段流程

  1. 执行阶段:执行任务
  2. 反思阶段:分析执行过程
  3. 优化阶段:调整策略并重试

4.2 架构图

复制代码
┌─────────────────────────────────────────────────────────────┐
│                      Reflexion                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│    用户输入                                                  │
│        │                                                    │
│        ↓                                                    │
│    ┌──────────────┐                                         │
│    │   Execute    │                                         │
│    │   (执行)      │                                         │
│    └──────┬───────┘                                         │
│           │                                                 │
│           ↓                                                 │
│    ┌──────────────┐                                         │
│    │  Reflexion   │                                         │
│    │   (反思)      │                                         │
│    └──────┬───────┘                                         │
│           │                                                 │
│           ↓                                                 │
│    ┌──────────────┐                                         │
│    │   Evaluate   │                                         │
│    │   (评估)      │                                         │
│    └──────┬───────┘                                         │
│           │                                                 │
│           ├── 成功 → 返回结果                                │
│           │                                                 │
│           └── 失败 → 调整策略 → 重新执行                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4.3 代码实现

python 复制代码
class ReflexionAgent:
    def __init__(self, llm, tools):
        self.llm = llm
        self.tools = tools
        self.max_reflections = 3
    
    def run(self, task):
        execution_history = []
        
        for attempt in range(self.max_reflections + 1):
            print(f"\n第 {attempt + 1} 次尝试")
            
            # 1. 执行任务
            result = self._execute(task, execution_history)
            execution_history.append({"attempt": attempt + 1, "result": result})
            
            # 2. 评估结果
            if self._is_success(result):
                return self._summarize(execution_history)
            
            # 3. 反思并调整
            if attempt < self.max_reflections:
                reflection = self._reflect(task, execution_history)
                print(f"反思:{reflection}")
                
                # 调整策略
                task = self._adjust_task(task, reflection)
        
        return f"任务失败,已尝试 {self.max_reflections + 1} 次"
    
    def _execute(self, task, history):
        prompt = f"""
        请执行以下任务:
        
        任务:{task}
        
        可用工具:{self.tools.describe()}
        
        历史尝试:{history}
        
        请给出执行结果。
        """
        
        return self.llm.generate(prompt)
    
    def _is_success(self, result):
        prompt = f"""
        请评估以下执行结果是否成功完成了任务:
        
        结果:{result}
        
        请返回 "成功" 或 "失败"。
        """
        
        return self.llm.generate(prompt) == "成功"
    
    def _reflect(self, task, history):
        prompt = f"""
        请分析以下任务执行失败的原因:
        
        任务:{task}
        
        执行历史:{history}
        
        请回答以下问题:
        1. 失败的主要原因是什么?
        2. 哪些步骤可以改进?
        3. 下次应该采用什么不同的策略?
        """
        
        return self.llm.generate(prompt)
    
    def _adjust_task(self, task, reflection):
        prompt = f"""
        请根据以下反思结果调整任务描述:
        
        原始任务:{task}
        
        反思结果:{reflection}
        
        请生成调整后的任务描述,包含改进策略。
        """
        
        return self.llm.generate(prompt)
    
    def _summarize(self, history):
        prompt = f"""
        请总结以下任务的执行过程:
        
        执行历史:{history}
        
        请给出最终总结,包括解决方法和经验教训。
        """
        
        return self.llm.generate(prompt)

4.4 适用场景

场景 说明
需要迭代改进的任务 需要多次尝试才能完成的任务
调试任务 需要找出问题并修复
复杂推理任务 需要深度思考和自我修正
学习型任务 需要从失败中学习

五、Tree of Thought(ToT)范式

5.1 核心思想

Tree of Thought(思维树):将问题解决过程建模为树状结构,智能体在每个节点上探索多个可能的推理路径,然后选择最优路径继续。

关键特点

  • 广度优先搜索:探索多个分支
  • 评估机制:对每个分支进行评估
  • 剪枝策略:剪去无效分支

5.2 架构图

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    Tree of Thought                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│                        问题                                 │
│                          │                                  │
│        ┌─────────────────┼─────────────────┐                │
│        ↓                 ↓                 ↓                │
│     思路1              思路2              思路3              │
│        │                 │                 │                │
│   ┌────┴────┐      ┌────┴────┐      ┌────┴────┐            │
│   ↓         ↓      ↓         ↓      ↓         ↓            │
│ 子思路1    子思路2 子思路3    子思路4 子思路5    子思路6       │
│   │         │      │         │      │         │            │
│   ↓         ↓      ↓         ↓      ↓         ↓            │
│ 评估→剪枝  评估→保留 评估→保留 评估→剪枝 评估→剪枝 评估→保留   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

5.3 代码实现

python 复制代码
class TreeNode:
    def __init__(self, thought, parent=None):
        self.thought = thought
        self.parent = parent
        self.children = []
        self.score = None
    
    def add_child(self, thought):
        child = TreeNode(thought, self)
        self.children.append(child)
        return child

class TreeOfThoughtAgent:
    def __init__(self, llm, tools, max_depth=3, max_branches=3):
        self.llm = llm
        self.tools = tools
        self.max_depth = max_depth
        self.max_branches = max_branches
    
    def run(self, task):
        root = TreeNode(f"开始解决任务:{task}")
        best_node = self._search(root, depth=0)
        
        return self._extract_solution(best_node)
    
    def _search(self, node, depth):
        if depth >= self.max_depth:
            self._evaluate(node)
            return node
        
        # 生成子思路
        thoughts = self._generate_thoughts(node.thought, depth)
        
        # 创建子节点
        for thought in thoughts[:self.max_branches]:
            child = node.add_child(thought)
            self._search(child, depth + 1)
        
        # 选择最佳子节点
        best_child = max(node.children, key=lambda c: c.score)
        return best_child
    
    def _generate_thoughts(self, context, depth):
        prompt = f"""
        请为以下问题生成 {self.max_branches} 个可能的解决思路:
        
        当前上下文:{context}
        
        当前深度:{depth}
        
        可用工具:{self.tools.describe()}
        
        请列出 {self.max_branches} 个思路,每个思路一行。
        """
        
        response = self.llm.generate(prompt)
        return [t.strip() for t in response.split("\n") if t.strip()]
    
    def _evaluate(self, node):
        prompt = f"""
        请评估以下解决思路的可行性(0-10分):
        
        思路:{node.thought}
        
        请返回分数。
        """
        
        try:
            node.score = int(self.llm.generate(prompt))
        except:
            node.score = 0
    
    def _extract_solution(self, node):
        path = []
        while node:
            path.append(node.thought)
            node = node.parent
        
        return "\n".join(reversed(path))

5.4 适用场景

场景 说明
复杂推理问题 需要多步推理的问题
数学证明 需要逻辑推导的任务
创意生成 需要探索多个可能性
决策分析 需要权衡多个选项

六、Hierarchical(分层)范式

6.1 核心思想

Hierarchical(分层):将智能体系统按层级组织,高层智能体负责规划和决策,低层智能体负责具体执行。

层级结构

  • 顶层:战略规划
  • 中层:战术执行
  • 底层:操作实施

6.2 架构图

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    Hierarchical Agent                       │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│         ┌──────────────────────────────────────────┐        │
│         │          顶层:战略规划                    │        │
│         │      (Strategic Planner)                  │        │
│         └────────────────────┬─────────────────────┘        │
│                              │                              │
│         ┌────────────────────┼─────────────────────┐        │
│         ↓                    ↓                     ↓        │
│    ┌──────────┐        ┌──────────┐         ┌──────────┐   │
│    │ 中层:战术 │        │ 中层:战术 │         │ 中层:战术 │   │
│    │ 执行1     │        │ 执行2     │         │ 执行3     │   │
│    └────┬─────┘        └────┬─────┘         └────┬─────┘   │
│         │                   │                   │           │
│    ┌────┴────┐        ┌────┴────┐         ┌────┴────┐      │
│    │ 底层:   │        │ 底层:   │         │ 底层:   │      │
│    │ 操作实施 │        │ 操作实施 │         │ 操作实施 │      │
│    └─────────┘        └─────────┘         └─────────┘      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

6.3 代码实现

python 复制代码
class HierarchicalAgent:
    def __init__(self):
        self.strategic_planner = StrategicPlanner()
        self.tactical_executors = {
            "research": ResearchExecutor(),
            "design": DesignExecutor(),
            "development": DevelopmentExecutor(),
            "testing": TestingExecutor()
        }
        self.operational_workers = {
            "web": WebWorker(),
            "api": APIWorker(),
            "database": DatabaseWorker()
        }
    
    def run(self, task):
        # 1. 战略规划
        strategy = self.strategic_planner.plan(task)
        print(f"战略规划:{strategy}")
        
        # 2. 战术执行
        results = {}
        for phase in strategy["phases"]:
            executor = self.tactical_executors[phase["type"]]
            results[phase["name"]] = executor.execute(phase, self.operational_workers)
        
        # 3. 结果汇总
        return self.strategic_planner.summarize(results)

class StrategicPlanner:
    def __init__(self):
        self.llm = llm
    
    def plan(self, task):
        prompt = f"""
        请为以下任务制定战略规划:
        
        任务:{task}
        
        请输出 JSON 格式:
        {{
            "goal": "目标",
            "phases": [
                {{"name": "阶段名称", "type": "research/design/development/testing", "description": "描述"}},
                ...
            ]
        }}
        """
        
        response = self.llm.generate(prompt)
        return self._parse_json(response)
    
    def summarize(self, results):
        prompt = f"""
        请总结以下执行结果:
        
        结果:{results}
        
        请给出最终总结。
        """
        
        return self.llm.generate(prompt)

class ResearchExecutor:
    def execute(self, phase, workers):
        print(f"执行研究阶段:{phase['description']}")
        # 调用底层工作者
        return workers["api"].call("research_api")

6.4 适用场景

场景 说明
大型项目管理 需要多阶段管理的项目
企业级应用 需要分层架构的系统
复杂系统开发 需要分工协作的任务
多部门协作 需要跨部门协调的工作

七、Role-playing(角色扮演)范式

7.1 核心思想

Role-playing(角色扮演):多个智能体分别扮演不同的角色,通过协作完成任务。

角色类型

  • 专业角色:产品经理、设计师、工程师、测试员
  • 协调角色:项目经理、架构师
  • 专家角色:领域专家、顾问

7.2 架构图

复制代码
┌─────────────────────────────────────────────────────────────┐
│                   Role-playing Agents                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│                    项目经理                                  │
│         ┌───────────────┼───────────────┐                  │
│         ↓               ↓               ↓                  │
│    ┌─────────┐     ┌─────────┐     ┌─────────┐             │
│    │产品经理 │     │ 设计师   │     │  架构师  │             │
│    └────┬────┘     └────┬────┘     └────┬────┘             │
│         │               │               │                   │
│         └───────┬───────┴───────┬───────┘                   │
│                 ↓               ↓                           │
│            ┌─────────┐     ┌─────────┐                     │
│            │ 开发工程师│     │  测试工程师│                    │
│            └─────────┘     └─────────┘                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

7.3 代码实现

python 复制代码
class RolePlayingSystem:
    def __init__(self, roles):
        self.roles = roles
        self.project_manager = ProjectManager(roles)
    
    def run(self, task):
        # 1. 项目启动
        self.project_manager.kickoff(task)
        
        # 2. 角色协作
        while not self.project_manager.is_complete():
            # 获取当前需要行动的角色
            current_role = self.project_manager.get_next_role()
            
            # 执行角色任务
            result = current_role.execute()
            
            # 更新状态
            self.project_manager.update(result)
        
        # 3. 总结
        return self.project_manager.summarize()

class ProjectManager:
    def __init__(self, roles):
        self.roles = roles
        self.status = "planning"
        self.task_history = []
    
    def kickoff(self, task):
        self.current_task = task
        self.task_history.append({"role": "pm", "action": f"启动项目:{task}"})
    
    def get_next_role(self):
        # 根据状态决定下一个角色
        role_order = ["product_manager", "designer", "architect", "developer", "tester"]
        current_index = role_order.index(self.status)
        return self.roles[role_order[current_index]]
    
    def update(self, result):
        self.task_history.append(result)
        self._advance_status()
    
    def _advance_status(self):
        status_order = ["planning", "designing", "architecting", "developing", "testing", "completed"]
        current_index = status_order.index(self.status)
        if current_index < len(status_order) - 1:
            self.status = status_order[current_index + 1]
    
    def is_complete(self):
        return self.status == "completed"
    
    def summarize(self):
        return f"项目完成!执行历史:{self.task_history}"

class ProductManager:
    def __init__(self, llm):
        self.llm = llm
    
    def execute(self):
        prompt = "请生成产品需求文档"
        return {"role": "product_manager", "action": self.llm.generate(prompt)}

class Developer:
    def __init__(self, llm):
        self.llm = llm
    
    def execute(self):
        prompt = "请根据需求文档编写代码"
        return {"role": "developer", "action": self.llm.generate(prompt)}

7.4 适用场景

场景 说明
团队协作模拟 需要多角色协作的任务
软件开发 模拟开发团队
创意生成 需要多视角思考
教育训练 模拟真实工作场景

八、范式选择指南

8.1 选择决策树

复制代码
任务是否需要工具调用?
    ├── 是 → ReAct 范式
    └── 否 → 任务是否需要多步推理?
                ├── 是 → Plan-and-Execute 或 ToT
                └── 否 → 任务是否需要迭代改进?
                            ├── 是 → Reflexion
                            └── 否 → 简单 LLM 调用

8.2 范式对比表

维度 ReAct Plan-and-Execute Reflexion ToT Hierarchical Role-playing
自主性
可控性
推理深度 极高
实现复杂度
适用场景 工具调用 复杂任务 迭代改进 深度推理 大型项目 团队协作

8.3 组合使用策略

在实际应用中,可以组合多种范式:

python 复制代码
class HybridAgent:
    def __init__(self, llm, tools):
        self.react_agent = ReActAgent(llm, tools)
        self.reflexion_agent = ReflexionAgent(llm, tools)
    
    def run(self, task):
        # 先用 ReAct 执行
        result = self.react_agent.run(task)
        
        # 如果失败,用 Reflexion 优化
        if not self._is_success(result):
            result = self.reflexion_agent.run(task)
        
        return result

九、实战示例:多范式协作

9.1 场景描述

任务:开发一个电商网站的用户分析系统

9.2 架构设计

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    多范式协作系统                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. Hierarchical 分层管理                                   │
│     ├── 战略层:确定系统目标                                 │
│     ├── 战术层:分解任务到各角色                             │
│     └── 操作层:执行具体任务                                 │
│                                                             │
│  2. Role-playing 角色协作                                   │
│     ├── 产品经理:定义需求                                   │
│     ├── 架构师:设计系统架构                                 │
│     ├── 开发工程师:实现功能                                 │
│     └── 测试工程师:验证质量                                 │
│                                                             │
│  3. Plan-and-Execute 任务规划                               │
│     ├── 规划:确定开发步骤                                   │
│     └── 执行:按步骤实现                                     │
│                                                             │
│  4. ReAct 工具调用                                          │
│     ├── 数据查询工具                                         │
│     ├── 可视化工具                                           │
│     └── 报告生成工具                                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

9.3 代码实现

python 复制代码
class ECommerceAnalyticsSystem:
    def __init__(self):
        # 初始化各层组件
        self.hierarchical_agent = HierarchicalAgent()
        self.role_playing_system = RolePlayingSystem({
            "product_manager": ProductManager(llm),
            "architect": Architect(llm),
            "developer": Developer(llm),
            "tester": Tester(llm)
        })
        self.plan_execute_agent = PlanAndExecuteAgent(planner_llm, executor_llm, tools)
    
    def build(self, requirements):
        # 1. 战略规划
        strategy = self.hierarchical_agent.strategic_planner.plan(requirements)
        
        # 2. 角色协作
        design_doc = self.role_playing_system.run(strategy)
        
        # 3. 任务规划与执行
        implementation = self.plan_execute_agent.run(design_doc)
        
        return implementation

十、总结

核心要点

  1. ReAct:推理+行动交替,适合工具调用和动态环境
  2. Plan-and-Execute:先规划后执行,适合复杂任务分解
  3. Reflexion:自我反思优化,适合需要迭代改进的任务
  4. ToT:树状思维探索,适合深度推理问题
  5. Hierarchical:分层决策架构,适合大型项目管理
  6. Role-playing:角色扮演协作,适合团队协作模拟

选型建议

场景 推荐范式 理由
工具调用 ReAct 动态决策,灵活调用
复杂任务 Plan-and-Execute 结构化规划
迭代优化 Reflexion 自我修正能力
深度推理 ToT 探索多个路径
大型项目 Hierarchical 分层管理
团队协作 Role-playing 角色分工

学习路径

复制代码
简单范式(ReAct)→ 进阶范式(Plan-and-Execute, Reflexion)→ 
高级范式(ToT)→ 系统范式(Hierarchical, Role-playing)→ 组合应用

下一步建议

  1. 从 ReAct 范式开始实践,掌握工具调用机制
  2. 学习 Plan-and-Execute 进行任务分解
  3. 探索 Reflexion 实现自我优化
  4. 尝试组合多种范式解决复杂问题