ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

MDA技术:通过分歧放大提升大语言模型复杂推理能力

MDA技术:通过分歧放大提升大语言模型复杂推理能力 如果你正在使用大语言模型LLM解决复杂推理问题比如数学证明、代码调试或逻辑分析可能已经发现一个瓶颈单次提问的答案质量高度依赖于你给出的提示词Prompt。模型“灵光一现”给出完美答案的概率往往不尽如人意。那么有没有一种方法能系统性地提升模型在复杂任务上的表现甚至让一个中等能力的模型逼近顶级闭源模型如 GPT-4o、Claude 3.5 Sonnet的水平最近一项名为MDAMultiple Disagreement Amplification的技术引起了关注。其核心思想非常反直觉不是让模型“思考得更深”而是主动引导它“想得更多、更分歧”然后通过一套严谨的验证流程从这些分歧中筛选出最可靠的假设。根据公开的评测在特定的数学推理基准如 MATH上通过 MDA 方法一个中等模型经过 8 次实验迭代其表现可以追平甚至在某些任务上超越 Claude 3 Opus4.7版本的水平。这听起来像是一种“穷举”或“暴力”搜索但其精妙之处在于它模拟了人类专家解决未知问题时的思维过程先提出多种可能的猜想假设再设计实验或寻找证据去逐一验证或反驳最终收敛到正确答案。MDA 将这个过程自动化、规模化为 LLM 的复杂问题求解提供了一条全新的工程化路径。本文将深入拆解 MDA 的工作原理、技术实现并提供一个完整的、可运行的代码示例。你将了解到MDA 如何工作以及它为何比简单的思维链Chain-of-Thought或自洽性Self-Consistency更有效。如何从零开始用 Python 实现一个简化版的 MDA 流程。在实际应用中如何调整参数、设计验证器以及需要注意的“坑”。这项技术的边界在哪里它最适合解决哪类问题。无论你是希望提升现有 AI 应用解决复杂问题的能力还是对 LLM 推理的前沿技术感兴趣这篇文章都将提供从理论到实践的完整指南。1. 问题本质为什么单次 LLM 推理不可靠在深入 MDA 之前我们必须先理解它要解决的核心问题。当你向 LLM 提出一个复杂问题时比如“证明勾股定理”或“调试一段存在逻辑错误的 Python 代码”模型的输出质量波动很大。这背后有几个关键原因局部最优陷阱LLM 的生成本质上是基于概率的序列预测。在推理的每一步模型都可能选择了一个“看似合理”但最终导向错误答案的路径。一旦走上歧途很难回头。提示词敏感性微小的提示词改动如增加“逐步思考”或改变举例格式可能导致答案正确率大幅波动。寻找那个“完美提示”成本极高。知识边界与幻觉模型可能缺乏解决特定问题所需的精确知识或产生“幻觉”编造看似合理但错误的推理步骤或事实。传统的增强方法如思维链CoT要求模型展示推理步骤提升了可解释性但并未从根本上解决“一次生成可能跑偏”的问题。自洽性Self-Consistency前进了一步通过采样多个推理路径并投票选择最常见答案但它假设“多数即正确”这在答案空间连续或复杂的问题上可能失效。MDA 的突破点在于它承认并利用了“分歧”的价值。它不追求第一次就生成完美答案而是主动、有策略地生成多个可能错误或片面的“假设”然后通过一个独立的“验证”环节像科学实验一样去伪存真。这更像是一个“假设-检验”的科学发现过程而非简单的“问答”。2. MDA 核心原理分歧不是噪音是信号MDA 的完整流程可以概括为四个核心阶段形成一个迭代循环。下图清晰地展示了这个“提出假设-验证筛选-迭代优化”的完整闭环flowchart TD A[“启动: 初始问题”] -- B[“阶段1: 假设生成br利用分歧提示生成N个可能答案”] B -- C[“阶段2: 假设验证br设计验证器检验每个答案”] C -- D[“阶段3: 答案聚合br综合验证结果得出当前最佳答案”] D -- E{“阶段4: 迭代判断br是否满足停止条件?”} E -- “是” -- F[“输出最终答案”] E -- “否” -- G[“生成反馈与新一轮提示”] G -- B阶段一假设生成Hypothesis Generation这是 MDA 的起点。目标不是直接得到正确答案而是生成一组多样且可能包含错误的候选答案假设。关键技巧分歧提示Disagreement Prompting。提示词会被特意设计成鼓励模型从不同角度、甚至相反的前提进行思考。例如“请给出三种完全不同的方法来解这道题即使有些方法可能最终是错的。”输出得到 N 个候选答案{H1, H2, ..., Hn}。这些答案在推理路径、中间结论或最终答案上应存在显著差异。阶段二假设验证Hypothesis Verification这是 MDA 的“裁判”环节。我们需要一个相对可靠的机制来评估每个候选答案的正确性。验证器Verifier设计验证器本身可以是一个 LLM可能与被验证模型相同或更强也可以是一套规则、代码执行器或查询工具。它的任务是回答“基于已知事实和逻辑假设 Hi 是否可能成立”验证方式逻辑一致性检查检查假设内部的推理步骤是否存在矛盾。事实核查核对假设中声称的事实是否与可靠知识源一致。可执行性测试对于代码或数学问题直接运行代码或计算表达式来验证结果。LLM 作为评判员提示另一个 LLM 实例对比假设和问题陈述给出置信度评分。阶段三答案聚合与筛选Aggregation根据验证结果对所有假设进行排序或筛选。简单策略直接选择验证得分最高的假设作为本轮迭代的“最佳答案”。复杂策略如果验证器给出了每个假设的缺陷报告可以尝试综合多个假设的正确部分合成一个新的、更优的假设。阶段四迭代与反馈Iteration如果当前最佳答案的置信度仍未达到阈值或者我们允许进行更多轮探索则进入下一轮。反馈生成将本轮被验证器“证伪”的假设、以及验证器指出的错误作为反馈信息融入到下一轮的“假设生成”提示词中。例如“上一轮中假设 A 因忽略了 X 条件而被否决假设 B 在计算 Y 时出错。请基于这些信息提出新的、更合理的解决方案。”循环重复阶段一至三直到达到预设的迭代次数或答案置信度足够高。MDA 与自洽性Self-Consistency的关键区别自洽性是从多个采样中找“共识”默认多数是对的。MDA 是主动寻求“分歧”并引入外部验证来裁决不依赖“多数决”。这使得 MDA 在答案不唯一或模型存在系统性偏见时更具优势。3. 环境准备与工具选择在动手实现之前我们需要搭建实验环境。本项目主要依赖 Python 和 OpenAI API或其他兼容的 LLM API。你也可以使用开源的 LLM 模型如 Llama 3、Qwen 等通过ollama或vLLM部署本地服务。3.1 基础环境Python 版本建议使用 Python 3.9 及以上版本。包管理工具pip或conda。3.2 核心 Python 库创建一个新的项目目录并通过requirements.txt文件管理依赖# requirements.txt openai1.0.0 # 用于调用 GPT 系列模型 anthropic0.25.0 # 可选用于调用 Claude 模型作为验证器或生成器 litellm1.30.0 # 可选用于统一不同模型的 API 调用 sympy1.12 # 用于符号数学计算和验证数学问题场景 numpy1.24.0 # 基础数值计算 tenacity8.2.0 # 用于 API 调用的重试装饰器 python-dotenv1.0.0 # 用于管理环境变量如 API Key使用 pip 安装pip install -r requirements.txt3.3 API 密钥配置如果你使用 OpenAI 或 Anthropic 的模型需要配置 API 密钥。强烈建议使用环境变量管理避免将密钥硬编码在代码中。创建.env文件# .env OPENAI_API_KEYsk-your-openai-key-here ANTHROPIC_API_KEYyour-anthropic-key-here # 可选在代码中加载# config.py import os from dotenv import load_dotenv load_dotenv() OPENAI_API_KEY os.getenv(OPENAI_API_KEY) ANTHROPIC_API_KEY os.getenv(ANTHROPIC_API_KEY)4. 实现一个简化版 MDA以数学问题为例让我们以一个具体的数学问题为例实现一个两轮迭代的简化版 MDA 流程。我们将使用 GPT-3.5-turbo 作为“假设生成器”并设计一个简单的“代码执行验证器”来检验数学答案。目标问题求解方程: x^2 - 5x 6 04.1 第一步构建假设生成器假设生成器的任务是产生多个不同的解法即使有些可能是错的。# mda_core.py import openai from tenacity import retry, stop_after_attempt, wait_exponential from typing import List, Dict, Any import json # 初始化 OpenAI 客户端 client openai.OpenAI(api_keyOPENAI_API_KEY) # 假设 OPENAI_API_KEY 已从环境变量获取 retry(stopstop_after_attempt(3), waitwait_exponential(multiplier1, min4, max10)) def generate_hypotheses(problem: str, num_hypotheses: int 3) - List[str]: 生成多个解题假设。 Args: problem: 待解决的问题描述。 num_hypotheses: 需要生成的假设数量。 Returns: 包含多个假设字符串的列表。 prompt f 你是一位数学老师需要帮助学生理解不同的解题思路。对于以下问题请提供 {num_hypotheses} 种截然不同的解法或思路。 这些解法可以包括因式分解法、求根公式法、配方法、图像法甚至包含常见错误思路请注明可能是错误的。 目标是展示思维的多样性而不一定确保每种方法都正确。 问题{problem} 请以清晰的编号列表形式输出每种方法单独一段格式如下 1. [方法名称]: [详细步骤与解释] 2. [方法名称]: [详细步骤与解释] ... try: response client.chat.completions.create( modelgpt-3.5-turbo, messages[ {role: system, content: 你是一个乐于展示多种解题思路的数学助手。}, {role: user, content: prompt} ], temperature0.9, # 提高温度以增加输出多样性 max_tokens800, ) content response.choices[0].message.content # 简单解析按编号分割 hypotheses [line.strip() for line in content.split(\n) if line.strip() and (line.strip()[0].isdigit() or line.startswith(-))] # 如果解析失败返回整个内容作为一个列表 if len(hypotheses) num_hypotheses: hypotheses [content] return hypotheses[:num_hypotheses] except Exception as e: print(f生成假设时出错: {e}) return [] if __name__ __main__: # 测试假设生成 problem 求解方程: x^2 - 5x 6 0 hyps generate_hypotheses(problem, num_hypotheses3) for i, h in enumerate(hyps): print(f假设 {i1}: {h[:100]}...) # 打印前100字符运行上述代码你可能会得到类似下面的输出每次运行可能不同假设 1: 1. 因式分解法: 将方程 x^2 -5x 6 0 因式分解为 (x-2)(x-3)0因此解为 x2 或 x3。 假设 2: 2. 求根公式法: 使用公式 x [5 ± sqrt((-5)^2 - 4*1*6)] / (2*1) [5 ± sqrt(1)] / 2得到 x3 或 x2。 假设 3: 3. 常见错误思路忽略常数项: 错误地写成 x(x-5) -6然后尝试求解这会导致复杂化且可能得不到正确解。4.2 第二步构建验证器对于数学方程求解最可靠的验证器就是直接计算。我们可以使用sympy库来符号化求解方程并验证每个假设中声称的解是否正确。# verifier.py import sympy from sympy import symbols, solve, simplify, Eq from typing import Tuple, Optional def verify_math_solution(problem: str, hypothesis: str) - Tuple[bool, Optional[str], Optional[list]]: 验证数学问题假设。 尝试从假设文本中提取解并与标准求解结果对比。 Args: problem: 原始问题字符串。 hypothesis: 假设文本。 Returns: (is_correct, feedback, extracted_solutions) is_correct: 布尔值假设整体是否正确。 feedback: 验证反馈信息。 extracted_solutions: 从假设中提取出的解列表。 x symbols(x) # 1. 标准解法使用 sympy 求解问题中隐含的方程 # 简单解析问题这里假设问题是“求解方程: [表达式] 0”的格式 try: # 提取表达式部分这是一个简化示例实际需要更健壮的解析 expr_str problem.split(:)[-1].strip().replace(0, ).strip() expr sympy.sympify(expr_str) equation Eq(expr, 0) correct_solutions solve(equation, x) correct_solutions [simplify(sol) for sol in correct_solutions] except Exception as e: return False, f无法解析原问题或求解: {e}, None # 2. 从假设文本中提取解非常简单的正则或关键字匹配实际应用需要更复杂NLP extracted [] # 寻找类似“x2”、“解为 3 和 4”的模式 import re # 匹配数字包括整数、小数、分数 numbers re.findall(rx\s*\s*([-]?\d*\.?\d/?\d*), hypothesis.lower()) numbers.extend(re.findall(r解\s*(?:为|是)\s*([-]?\d*\.?\d/?\d*)\s*(?:和|与|,)\s*([-]?\d*\.?\d/?\d*), hypothesis.lower())) # 扁平化并转换 for num in numbers: if isinstance(num, tuple): for n in num: if n: try: extracted.append(sympy.sympify(n)) except: pass else: try: extracted.append(sympy.sympify(num)) except: pass # 去重 extracted list(set(extracted)) # 3. 验证 if not extracted: return False, 无法从假设中提取出明确的数值解。, None # 判断提取的解是否与正确解集合一致集合比较 if set(extracted) set(correct_solutions): return True, 假设给出的解与标准解完全一致。, extracted else: feedback f假设提取的解为 {extracted}但标准解为 {correct_solutions}。 # 检查是否有部分正确 correct_extracted [sol for sol in extracted if sol in correct_solutions] if correct_extracted: feedback f 其中 {correct_extracted} 是正确的。 return False, feedback, extracted if __name__ __main__: # 测试验证器 problem 求解方程: x^2 - 5x 6 0 hyp1 1. 因式分解法: 将方程 x^2 -5x 6 0 因式分解为 (x-2)(x-3)0因此解为 x2 或 x3。 hyp2 3. 常见错误思路忽略常数项: 错误地写成 x(x-5) -6然后尝试求解这会导致复杂化且可能得不到正确解。 print(验证假设1:) print(verify_math_solution(problem, hyp1)) print(\n验证假设2:) print(verify_math_solution(problem, hyp2))输出可能如下验证假设1: (True, 假设给出的解与标准解完全一致。, [2, 3]) 验证假设2: (False, 无法从假设中提取出明确的数值解。, [])4.3 第三步整合流程与迭代现在我们将生成器和验证器结合起来实现一个简单的两轮 MDA 循环。# mda_pipeline.py import logging from typing import List, Dict, Any from mda_core import generate_hypotheses # 导入之前的函数 from verifier import verify_math_solution logging.basicConfig(levellogging.INFO) logger logging.getLogger(__name__) def run_mda_iteration(problem: str, previous_feedback: str , max_hypotheses: int 3) - Dict[str, Any]: 执行一轮 MDA 迭代。 Args: problem: 待解决的问题。 previous_feedback: 上一轮的验证反馈用于改进本轮生成。 max_hypotheses: 每轮生成的假设最大数量。 Returns: 包含本轮所有假设、验证结果和最佳答案的字典。 # 1. 生成假设 prompt_with_feedback problem if previous_feedback: prompt_with_feedback f{problem}\n\n请注意上一轮的分析反馈{previous_feedback}\n请避免类似的错误提出新的解法。 hypotheses generate_hypotheses(prompt_with_feedback, num_hypothesesmax_hypotheses) logger.info(f生成了 {len(hypotheses)} 个假设。) # 2. 验证每个假设 verification_results [] all_feedback [] best_hypothesis None best_score -1 for idx, hyp in enumerate(hypotheses): is_correct, feedback, solutions verify_math_solution(problem, hyp) score 1.0 if is_correct else 0.0 # 简单评分正确为1错误为0。可根据反馈细节设计更复杂的评分。 verification_results.append({ hypothesis: hyp, is_correct: is_correct, feedback: feedback, solutions: solutions, score: score }) all_feedback.append(feedback) if score best_score: best_score score best_hypothesis hyp # 3. 聚合反馈用于下一轮 aggregated_feedback | .join([f假设{idx1}: {fb} for idx, fb in enumerate(all_feedback)]) return { hypotheses: hypotheses, verification_results: verification_results, best_hypothesis: best_hypothesis, best_score: best_score, aggregated_feedback: aggregated_feedback } def mda_loop(problem: str, max_iterations: int 2) - Dict[str, Any]: 执行多轮 MDA 循环。 Args: problem: 待解决的问题。 max_iterations: 最大迭代轮数。 Returns: 最终结果。 history [] current_feedback for iteration in range(1, max_iterations 1): logger.info(f 开始第 {iteration} 轮迭代 ) result run_mda_iteration(problem, current_feedback) history.append(result) logger.info(f本轮最佳假设得分: {result[best_score]}) logger.info(f最佳假设摘要: {result[best_hypothesis][:150]}...) # 如果已经找到完全正确的解可以提前终止 if result[best_score] 1.0: logger.info(f在第 {iteration} 轮找到完全正确的解提前终止。) break # 准备下一轮的反馈 current_feedback result[aggregated_feedback] # 选择历史中得分最高的作为最终答案 final_best max(history, keylambda x: x[best_score]) return { final_answer: final_best[best_hypothesis], final_score: final_best[best_score], iteration_history: history, total_iterations: len(history) } if __name__ __main__: problem 求解方程: x^2 - 5x 6 0 final_result mda_loop(problem, max_iterations2) print(\n *50) print(MDA 流程最终结果) print(*50) print(f最终答案 (得分: {final_result[final_score]}):) print(final_result[final_answer]) print(f\n总迭代轮数: {final_result[total_iterations]})运行这个流程你可能会看到类似以下的日志和输出INFO:__main__: 开始第 1 轮迭代 INFO:__main__:生成了 3 个假设。 INFO:__main__:本轮最佳假设得分: 1.0 INFO:__main__:最佳假设摘要: 1. 因式分解法: 将方程 x^2 -5x 6 0 因式分解为 (x-2)(x-3)0因此解为 x2 或 x3。... INFO:__main__:在第 1 轮找到完全正确的解提前终止。 MDA 流程最终结果 最终答案 (得分: 1.0): 1. 因式分解法: 将方程 x^2 -5x 6 0 因式分解为 (x-2)(x-3)0因此解为 x2 或 x3。 总迭代轮数: 1在这个简单例子中模型第一轮就生成了正确答案。但对于更复杂的问题多轮迭代和基于反馈的改进将至关重要。5. 运行结果分析与效果验证如何判断你的 MDA 实现是否有效不能只看一个例子。你需要一个评估基准。5.1 构建小型测试集创建一个包含多个数学问题或你的目标领域问题的测试集并记录标准答案。# evaluate.py test_cases [ { problem: 求解方程: x^2 - 5x 6 0, standard_answer: [2, 3] }, { problem: 求解方程: 2x 5 15, standard_answer: [5] }, { problem: 一个直角三角形的两条直角边分别为3和4求斜边长度。, standard_answer: [5] }, # 可以添加更多问题... ] def evaluate_mda_on_dataset(test_cases, max_iterations3): results [] for case in test_cases: final_result mda_loop(case[problem], max_iterationsmax_iterations) # 简单评估检查最终答案中是否包含标准答案这里需要更精确的匹配逻辑 # 为简化我们假设最终答案的文本中包含标准答案数字即算正确。 is_correct any(str(ans) in final_result[final_answer] for ans in case[standard_answer]) results.append({ problem: case[problem], final_answer: final_result[final_answer], is_correct: is_correct, iterations_used: final_result[total_iterations] }) return results # 运行评估 evaluation_results evaluate_mda_on_dataset(test_cases) accuracy sum(1 for r in evaluation_results if r[is_correct]) / len(evaluation_results) print(f测试集准确率: {accuracy:.2%}) for res in evaluation_results: print(f问题: {res[problem][:30]}... | 正确: {res[is_correct]} | 使用轮次: {res[iterations_used]})5.2 验证器的重要性MDA 的效果严重依赖于验证器的质量。一个弱的验证器可能无法识别出错误的假设导致错误答案被选中。在上面的数学例子中我们使用了确定性的符号计算sympy.solve这是非常强的验证器。但在开放领域问题如文章摘要、代码生成中构建可靠的验证器本身就是一大挑战。验证器设计模式黄金标准验证存在唯一标准答案时使用如数学计算、代码执行结果。LLM 作为评判员使用一个更强的 LLM如 GPT-4来评判较弱的 LLM 生成的假设。提示词设计是关键例如“请严格判断以下解决方案是否正确并指出任何逻辑错误或事实错误。”多验证器投票结合多种验证方式如规则检查、代码执行、LLM 评判综合打分。可执行测试套件对于代码生成使用单元测试来验证。6. 常见问题与排查思路在实现和应用 MDA 过程中你可能会遇到以下典型问题问题现象可能原因排查方式解决方案生成的假设多样性不足提示词鼓励分歧不够模型温度temperature设置过低模型本身创造性有限。检查生成提示词是否明确要求“不同方法”或“相反观点”检查temperature参数建议 0.7-1.0尝试不同模型。重写提示词加入种子示例提高temperature使用多个不同的模型生成初始假设池。验证器无法给出确定性判断验证任务本身模糊验证器如 LLM 评判员的提示词不明确验证标准缺失。人工检查验证器对清晰案例的判断是否准确分析验证器输出的理由。将验证任务分解为更小、可客观判断的子任务为验证器提供清晰的评判准则和示例考虑使用非 LLM 的验证方式如代码执行。迭代无法收敛答案质量不提升反馈信息质量差无法指导下一轮生成验证器信号太弱无法区分假设优劣问题超出模型能力范围。查看每轮“聚合反馈”的内容是否包含具体错误信息检查最佳假设得分是否在波动而非上升。改进反馈生成机制提炼具体的、可操作的错误点增强验证器使其能给出更细粒度的置信度分数考虑将问题拆解成子问题分步解决。API 调用成本或时间过高每轮生成多个假设且进行多次验证导致总调用次数多。统计单次任务的总 Token 消耗和 API 调用次数。设置合理的假设数量N和迭代轮次上限对简单问题使用小模型生成假设缓存已验证过的相似假设。提取假设中的结构化信息失败从自然语言假设中自动提取答案如数字、代码块的解析器Parser太脆弱。测试解析器在多样本上的成功率。设计更鲁棒的解析器结合正则、关键词和简单 NLP让生成器以结构化格式如 JSON输出在验证阶段直接使用原始文本让验证器处理。7. 最佳实践与工程建议要将 MDA 从实验代码转化为可用的工程组件需要考虑以下几点明确适用场景MDA 在以下场景效果显著答案可验证存在相对可靠的验证手段计算、测试、规则。问题有挑战性单次生成正确率不高。成本可接受多轮生成和验证的额外开销在预算内。典型场景数学推理、代码生成与调试、逻辑谜题、基于知识的问答需检索验证。设计分层验证策略不要所有验证都依赖最贵的 LLM 或最慢的执行器。第一层快速过滤。用规则或简单模型筛掉明显错误或格式不符的假设。第二层精确验证。对通过第一层的假设使用可靠的验证器如代码执行、符号计算、强 LLM 评判。第三层综合裁决。如果第二层仍有多个高置信度答案使用投票或更复杂的融合策略。管理迭代与停止条件绝对条件达到最大迭代次数找到验证器满分答案。相对条件连续 N 轮最佳答案得分无提升所有假设的得分方差低于阈值。成本条件累计 Token 消耗或 API 调用次数超预算。优化提示工程生成提示明确要求多样性。例如“请列出 3 种截然不同的方案包括一种你认为可能激进但有趣的思路。”验证提示对于 LLM 作为评判员使用思维链CoT让其逐步推理。例如“请先逐步分析该解决方案的每一步然后给出最终正确性判断和理由。”反馈提示将验证器的输出错误原因转化为建设性的指导。例如“上一轮方案因忽略了边界条件 X 而失败。请在新的方案中特别注意这一点。”记录与可观测性在生产系统中完整记录每一轮生成的假设、验证得分和反馈。这有助于调试流程、分析模型弱点以及后续优化提示词和验证策略。8. 总结与展望MDA 为我们提供了一种超越简单提示和采样的 LLM 复杂问题求解框架。它的核心价值不在于“让模型变得更聪明”而在于设计了一个系统性的“试错-验证-改进”流程将人类科学研究的朴素思想应用于 AI 的推理过程。通过本文的拆解和实现你可以看到即使使用像 GPT-3.5-turbo 这样的模型配合一个可靠的验证器如 Sympy也能在特定任务上获得稳定、高质量的输出。而要让 MDA 在更广泛的领域如代码生成、科学假设生成、安全分析发挥作用关键在于领域专用验证器的设计。未来的探索方向可能包括验证器的自动化学习能否从历史纠错数据中自动学习或微调一个验证模型假设的主动探索能否不依赖于模型的随机发散而是主动引导生成覆盖“答案空间”最不确定区域的假设与工具使用Tool Use结合将验证过程本身转化为一系列工具调用计算器、搜索引擎、代码解释器形成闭环的 Agent 系统。对于开发者而言理解并尝试实现 MDA 这样的高级提示模式是深入掌握 LLM 应用潜力的重要一步。它提醒我们LLM 不仅是“问答机”更是可以被嵌入到更大、更严谨的认知工作流中的“假设生成器”。建议你从本文的数学示例出发尝试将其改造应用于你熟悉的领域例如调试一段复杂的 SQL 查询或为一篇技术文章生成多个可能的大纲亲自体会“分歧”如何成为提升 AI 推理可靠性的关键燃料。
返回列表