Agent规划算法对比

Agent规划算法对比:从ReAct到Tree of Thought的演进

引言 规划是智能的核心标志之一。一个Agent能否制定合理的计划、在执行过程中动态调整计划、从失败中学习改进计划,直接决定了它的能力上限。 2026年,Agent规划算法已经从简单的ReAct模式发展出多种变体。每种算法都有其适用的场景和局限。本文将系统对比这些算法,帮助开发者做出合适的选择。 一、规划算法分类 Agent规划算法可以从两个维度分类: 探索深度:单步规划 vs 多步规划 探索广度:线性规划 vs 树形规划 由此形成四象限: 线性 树形 单步 ReAct Self-Consistency 多步 Plan-and-Execute Tree of Thought 二、ReAct:推理+行动 2.1 原理 ReAct(Reasoning + Acting)是最基础的Agent规划模式。Agent在每一步中先推理(Thought),再决定行动(Action),观察结果(Observation),然后进入下一步。 Thought: 用户想知道今天北京的天气。我需要查询天气。 Action: search_weather(city="北京") Observation: 北京今天晴,最高温度35°C。 Thought: 我已经获得了天气信息,可以回答用户了。 Answer: 北京今天晴天,最高温度35°C。 2.2 优势 简单直观,易于实现 每一步都有明确的推理过程,可解释性强 适合大多数日常任务 2.3 劣势 每步只考虑当前最优,缺乏全局视角 容易陷入局部最优 在需要回溯的场景中效率低下 Token消耗随步数线性增长 2.4 适用场景 ReAct适合步骤较少(<10步)、每步决策明确、不需要回溯的任务。如信息查询、简单操作执行。 三、Plan-and-Execute:先规划后执行 3.1 原理 Plan-and-Execute将规划与执行分离。Agent首先制定一个完整的计划,然后逐步执行。执行过程中如果发现计划不可行,可以重新规划。 Plan: 1. 搜索北京今天的天气 2. 搜索北京明天的天气 3. 对比两天天气差异 4. 给出穿衣建议 Execute Step 1: search_weather(city="北京", date="today") → 晴,35°C Execute Step 2: search_weather(city="北京", date="tomorrow") → 雨,28°C Execute Step 3: 对比:今天晴热,明天降温有雨 Execute Step 4: 建议今天穿轻薄衣物,明天带伞穿长袖 3.2 优势 全局视角,避免局部最优 计划可审核,用户可以在执行前确认或修改 并行执行:无依赖的步骤可以并行 3.3 劣势 初始计划可能基于不完整信息,需要频繁重新规划 规划阶段消耗大量Token 对动态变化的环境适应性差 3.4 适用场景 适合步骤较多、需要全局规划、允许提前审核计划的任务。如项目管理、复杂工作流执行。 ...

2026-07-02 · 2 min · 322 words · 硅基 AGI 探索者
Prompt工程进阶

Prompt工程进阶:Chain-of-Thought的变体与实践

Chain-of-Thought:让模型"思考" Chain-of-Thought(思维链,简称CoT)于2022年提出,至今仍是Prompt工程领域最具影响力的技术之一。核心思想是:让模型显式输出推理过程,而非直接给出答案。 2026年,CoT已经从单一技术演化为一个完整的技术家族,包括CoT-SC、ToT、GoT、PoT等多种变体。本文将系统梳理这些技术,并提供实战代码。 CoT基础:显式推理 为什么CoT有效? # 对比:标准Prompt vs CoT Prompt # 标准Prompt standard_prompt = """ 问:小明有5个苹果,小红给了他3个, 然后小明吃掉了2个。小明现在有多少苹果? 答: """ # CoT Prompt cot_prompt = """ 问:小明有5个苹果,小红给了他3个, 然后小明吃掉了2个。小明现在有多少苹果? 让我们逐步推理: 1. 小明开始有5个苹果 2. 小红给了他3个,所以:5 + 3 = 8个 3. 小明吃掉了2个,所以:8 - 2 = 6个 答:6个 """ CoT有效的原因: 计算重分配:将计算能力分配给推理过程 注意力锚定:中间步骤提供"锚点" 错误可追溯:发现推理错误时容易定位 CoT触发方法 class CoTTriggerMethods: """ 2026年主流CoT触发方法 """ @staticmethod def few_shot_cot(examples: list[dict]) -> str: """ Few-shot CoT:通过示例展示推理过程 """ prompt = "请在回答时展示完整的推理过程。\n\n" prompt += "示例:\n" for ex in examples: prompt += f"问题:{ex['question']}\n" prompt += "推理过程:\n" for step in ex['reasoning_steps']: prompt += f" {step}\n" prompt += f"答案:{ex['answer']}\n\n" return prompt @staticmethod def zero_shot_cot(question: str) -> str: """ Zero-shot CoT:使用触发词 2026年最佳触发词组合 """ return f"""{question} 请逐步思考(Step by Step),展示完整的推理过程,最后给出答案。""" @staticmethod def auto_cot(dataset: list[dict], model) -> list[dict]: """ Auto-CoT:自动构建CoT示例 1. 使用聚类选择多样性问题 2. 使用模型生成推理过程 3. 验证生成的正确性 """ # 步骤1:问题聚类 embeddings = model.encode([d['question'] for d in dataset]) clusters = cluster(embeddings, n_clusters=10) # 步骤2:从每个簇中选择代表性问题 selected = [] for cluster_id in range(10): cluster_samples = [dataset[i] for i in range(len(dataset)) if clusters[i] == cluster_id] # 选择最接近簇中心的问题 centroid = embeddings[clusters == cluster_id].mean(axis=0) closest = min(cluster_samples, key=lambda x: cosine_sim(x['embedding'], centroid)) selected.append(closest) # 步骤3:生成CoT cot_examples = [] for sample in selected: reasoning = model.generate( f"请逐步推理并给出答案:{sample['question']}" ) # 验证正确性(通过答案对比) if verify_reasoning(reasoning, sample['answer']): cot_examples.append({ 'question': sample['question'], 'reasoning': reasoning, 'answer': sample['answer'] }) return cot_examples CoT-SC:Self-Consistency自洽性 核心思想 Self-Consistency(自洽性)通过多次采样+投票提升推理可靠性。 ...

2026-06-30 · 5 min · 994 words · 硅基 AGI 探索者
鲁ICP备2026018361号