资讯动态

AI自我反思工作流:用Dify让AI学会审视自己

发布时间:2026/9/28 13:37:57 来源:尧图企业网站定制
1. 为什么会做“hindsight”我厌倦了让AI只答一次先聊个特别常见的场景。我平时会用AI跑各种分析活儿有一次让它做一份销售数据的归因报告模型输出得又快又完整我当时挺满意直接就复制走交差了。结果第二天复盘的时候我盯着原来的原始数据突然发现一个问题——报告中有一处关键的维度切分其实选错了导致后面一长串推断都建立在偏差之上。我当时就想如果让AI在给出初稿之后再回过头重新审视一遍自己给它一次“事后反思”的机会这种低级问题是不是就能被拦下来这个念头后来就变成了一个项目名字就叫hindsight。hindsight本身是英语里“后见之明”的意思也就是事情发生之后你才意识到“当时如果换个做法就好了”。这个认知模型放进AI工作流里恰好就是我现在特别看重的一环让模型在执行完任务之后基于结果和原始目标之间的差距做一次结构化复盘并输出修正意见再迭代生成更高质量的版本。本质上这不是什么科幻概念很多AI Agent的学术框架——比如Reflexion、Self-Refine——玩的都是这套东西。它们的核心思想是一致的生成一次只是起点让模型自己当自己的评论家才可能逼近理想答案。而在实际工程里大多数人的做法还停留在“把提示词改得更好一点”或“让模型多推理几步”很少真正把**“事后审视”**这一动作显式地做成工作流中的一个阶段。hindsight项目在落地的时候我选择在Dify上搭。原因是这套流程特别适合用可视化编排来做初稿生成是一个节点反思是一个节点修正又是一个节点——每个节点的输入输出都清清楚楚我们可以随时替换模型、调整提示词甚至把反思意见单独保存下来喂给别的场景。对于不想从零写Python代码、又希望拥有完整可控流程的人来说Dify这种低代码的思路是性价比最高的路径之一。这篇内容适合几类人一是已经在用各类AI工作流平台、但觉得“简单直出”效果不够好的同学二是做内容生成、数据分析、代码评审相关事情的工程师和运营三是对Agent方法论感兴趣想理解自我反思机制如何在真实产品里落地的人。项目本身不复杂但里面的提示词设计、参数策略和踩坑记录我相信能给你一些别处看不到的参考。2. 工作流骨架把“初稿→反思→修正”清晰串进Dify聊实现之前先想清楚一个问题为什么一定要有“反思”这个环节而不是直接让模型多生成几版选一个当年我也犯过这个错误。以为多采样几次、让用户自己挑就完事了。实际用下来如果模型没有明确的批判标准它生成的三版答案大概率是同一逻辑下的同质化变体换个说法而已问题依旧是那个问题。除非你给它一个“分歧触发点”——比如外部已有的结论、用户的最新反馈、或者自己初稿里的漏洞清单——否则生成多少次都不会有质的飞跃。所以我在Dify里设计的不是一个简单的“单次问答”结构而是一条带反馈回路的流水线。2.1 核心节点链路先给个总览这套工作流我一共用到四类节点开始节点、LLM节点、条件分支节点、结束节点。我见过一些朋友想直接用Agent节点来包办所有事情但我的建议反而是用普通LLM节点拆分角色后面会讲为什么。开始节点接收用户输入。这里不只是保存用户的一长串需求我还会做一步“需求解析”让模型把模糊的需求拆成几个明确的子目标。这个设计来自我前期的教训你让AI“写一篇好的推广文”它真不知道该往哪个方向写但如果你让它先输出“目标用户、核心卖点、语气基调、CALL TO ACTION”这四项后面的写作质量会稳定得多。初稿节点接住解析后的需求进行一次完整的生成。这个节点我的提示词写得比较克制只给它任务和背景不给太细的框架目的是让第一版保持自然和发散。反思节点这是整条链路的核心输入是“用户原始需求”“初稿内容”。它并不直接生成新稿而是生成三样东西问题清单、逐条修改建议、初稿中值得保留的优点。我在提示词里明确要求它必须指出至少两个具体问题且不能只说“不够生动”这种空话必须结合原文片段来说。修正节点把初稿和反思输出合并生成终稿。这里有个细节修正不是把初稿扔了重写而是让它站在“保留原有亮点”的角度去做局部修补和整体调整。我会把反思节点输出的“值得保留的优点”也作为上下文传给修正节点防止模型为了改而改把原本好的东西也弄丢。条件分支节点我在这套流程里留了一个让人非常惊喜的门——如果反思节点识别到的问题少于2条也就是模型自己认为初稿已经足够好了那么流程不再走到修正节点直接把初稿输出。这个机制帮我省下大量token也让表现不弱的初稿免于被强行改造。结束节点用结构化格式把终稿和“反思摘要”一起输出。反思摘要我坚持保留因为当用户看到AI为什么改了、改了什么的时候信任感会明显不同。对运营场景来说这也是一份可以直接转给设计师或剪辑师执行的修改说明。2.2 Dify里的变量传递和迭代Dify工作流的变量传递有个小坑新手容易在这里打转。节点输出变量在下一个节点里引用建议直接在表单侧的“上下文引用”面板里选不要手敲。原因是你手敲的变量名一旦拼错或层级不对日志里只会给你一个模糊的解析错误排查起来很消耗耐心。我记得最早一批用Dify 1.x版本的时候变量名是类似node_1.text这种形式现在新版逻辑上更接近自然语言的节点输出路径好找多了。但需要注意的是迭代节点里的变量作用域与外层不同如果你在迭代块内部想引用最开始的用户输入要确认引用路径是不是被截断了。我自己就遇到过初稿拿得到用户输入但反思节点在循环块里面死活拿不到外层变量。后来我的解法是把用户需求在进循环之前先写入一个临时变量节点避免在迭代内部跨层引用。如果想让流程做多轮反思做法也简单把修正节点的输出接回到初稿节点的输入位置并用迭代节点控制轮次。我一般最多迭代两轮。一开始我贪心设了四轮后来实测发现收益大幅递减第二轮之后模型经常陷入“否定之否定”把上一轮明明正确的东西又改歪了。这个现象我还挺想展开聊一下在本文章第四节。这条链路的另一个好处是可以随时在任意节点上做模型替换。反思节点用强模型初稿节点用快模型修正节点用中等能力的模型——这种混合搭配能显著控制成本。Dify在节点级设置模型的能力是天生支持的不用写任何代码把节点拖出来直接改就能行。3. 反思节点的提示词是把“后见之明”变成生产力的关键如果让我说hindsight项目里最重要的一处设计毫无疑问是反思节点的提示词。你甚至可以跳过其他优化只把反思这一步加入到现有的任意一条AI工作流里效果都会有一个明显的档位提升。但反思这个动作远没有听上去那么简单。很多人在提示词里写“请你检查一下你的回答有没有问题”结果模型回复“你的回答整体质量很高内容全面语言流畅”完事。如果你把这段反思输出拿回来会发现对修正环节半点帮助都没有——这是因为模型缺乏批判的身份感和具体的检查框架。3.1 让模型当严苛编辑而不是当好学生我的做法是给反思节点一个强硬的身份设定它不对初稿负责它的唯一目标就是“挑错”挑不出错就是失职。我实际使用的提示词长下面这个样子你可以直接复制到Dify的LLM节点里体验一下你是一名极其严苛的编辑你的任务是审查一篇初稿并提出修改意见。 审查要求 1. 必须找出至少2个具体问题问题不得为空泛评价如“不够好” 必须引用原文中的具体片段来说明。 2. 审查维度包括但不限于逻辑完整性、事实准确性、目标用户匹配度、 表达感染力、语气一致性、过度冗余。 3. 如果初稿确实质量很高允许给出少于2个问题 但必须明确写出哪些地方做得好并给出“维持原样”的建议。 4. 输出格式要求为JSON字段如下 { problems: [{原文片段: ..., 问题: ..., 修改建议: ...}], strengths: [..., ...], overall_rating: 1-10, verdict: pass 或 revise }这里有个细节值得专门说我让它输出verdict字段值只有pass或revise。Dify的条件分支节点可以直接读这个字段去决定是否进入修正流程。这套设计让工作流具备了“当AI认为自己写得足够好时就不再浪费第二轮成本”的自动化收敛能力实测大概有20%到30%的简单任务会在初稿阶段直接过关。不要小看这个设计。人做评审也是这样——不是所有稿子都需要打回重改好稿子硬改反而改坏。你让AI盲改它每次都会给你挤出一堆“修改建议”哪怕它内心觉得你已经写得很好了。给它一个正式的“pass”出口比让它硬凑建议要诚实也更省资源。重要反思阶段的输出一定是结构化的。原因很简单——你后续要拼接进修正节点的Prompt如果是大段自然语言模型很容易把“反思”和“修改”混在一起。JSON能保证下游准确地引用问题清单和原文片段。我在实测中发现如果反思输出是自然语言修正模型经常只采信最后一句前面的纠偏意见全部被忽略。结构化输出在这方面是降维打击。3.2 写手与评论家角色必须分离另外一个特别重要的原则是在同一个工作流里初稿模型和反思模型不要使用同一个Prompt上下文最好也不要使用同一个模型配置。原因其实不是玄学。当同一个模型被要求“先写、再检查自己写的”它天然有一种确认偏误——它会倾向于认为自己的输出是合理的检查结果是“我认为没有问题”。语言模型的训练目标决定了它要表现得自信和自洽让它同时扮演运动员和裁判裁判几乎总是给运动员打高分。所以我的做法是初稿节点用相对发散、风格自由的提示词temperature建议在0.7左右反思节点用完全不同的提示词强调批判性temperature我调到0.9左右。高点温度的反思能更容易看出一些非标准角度的问题比如语气问题、潜在风险、合规隐患这类敏感点。如果反思节点用低温你会得到一个只会复述你Prompt内容、不敢输出真实评价的“复读机”。修正节点介于两者之间temperature在0.3到0.5保证修改的稳定性不让修正稿偏离初稿骨架太多。有些人会问反思节点要不要接工具或者知识库我的建议是分场景。如果是对着真实数据跑分析一定要接知识检索让模型对照原始数据检查初稿里的数值和分析结论这等于多了一双“对照事实的眼睛”但如果只是文案润色类任务不接外部工具问题不大纯文本评判完全够用接检索反而可能引入一些无关语境干扰判断。实测下来用这套提示词和参数组合生成的反思质量比用一个笼统的“请检查”要高出一个量级。我拿同一篇初稿跑过对比换成hindsight式反思后修正稿中“有明显改进”的比例从不到四成直接跳到七成左右而且用户反馈的“看起来不像AI写的那种模板感”也明显减少。4. 实测中翻过车的四个地方以及对应的调参修复这条工作流不是一次写对就完事了。我在本地跑了大概一周踩了不少坑目前还有两个问题正在持续观察。整理出来这部分是想帮你少走弯路也想说明它的边界在哪里。4.1 翻车点一反思节点把初稿重写了一遍这是我第一次跑通链路时最直观的体验。反思节点用的是通用式的“帮用户改进文案”结果它没有一个“检查后提出建议”的过程而是直接给了一篇全新文案。表面上看好像也没什么问题——初稿被重写了质量似乎还提升了。但当你把新旧两版对照着看时会发现重写稿把初稿里的一个关键事实信息改丢了。这正是这类方案最隐蔽的风险生成模型天然热衷于输出更多内容而不会主动做“保护性修改”。修复之后我在反思节点的Prompt里写死了两句话“你不是在重写你是在审查已有的文字。”和“所有修改建议必须引用原文片段且必须说明修改动机。”这两句话很管用反思就真的收敛成了评论生成内容量也小了很多token成本顺带降了下来。4.2 翻车点二多轮迭代后的“否定之否定”我一开始满怀信心地把迭代轮数设成4轮想着AI每反思一遍质量就应该更高一点。测试做完我就崩溃了——在第3轮时模型把第2轮刚修正的一个比喻又改回了说法理由竟然是“第二版表达不够简洁”。走到第4轮整篇文章被磨成了一个极度平淡、像维基百科词条风格的干巴文本。仔细想想这也不难理解。反思任务天然有一个“必须找出问题”的内在压力两三轮之后已经无可挑剔了模型就硬造出一个“风格问题”来支撑它的修改欲。这就叫过度修正。所以我在工作流里做了两件事迭代最多2轮条件分支在遇到verdict: pass时直接强制结束给反思节点增加一行约束“如果你的评价是pass则禁止输出任何建议性修改意见。”经过这两处调整之后终稿的稳定性明显好转。这个教训我建议所有想上多轮反思的人都记住反思不是轮数越多越好质量会随轮数先升后降关键是教AI学会喊停。4.3 翻车点三上下文窗口被历史记录塞爆第三坑是工程向的。我最初的设计是把“用户原始需求、初稿、上一轮反思意见、修正稿”全部塞进每一个反思节点。看起来信息很全实际上跑三四个任务就出现了上下文过长的报错延长了延迟还把token消耗抬高到一个不太合理的量级。后来参考Dify社区的方案做了两点优化反思节点的输入只保留“本轮初稿本轮用户需求”历史反思意见不进上下文在进入下一轮迭代前用LLM节点把上一轮反思压缩成“一句话摘要”只保留“待办修正项清单”进入下一轮Prompt。这个做法很细但它解决了一个很缠手的问题多轮对话里的有效信息密度其实很低你不知道是哪一段无关紧要的内容占用了宝贵的上下文窗口导致模型越到后面推理越弱。给反思做摘要本质是帮模型卸掉包袱只带最重要的信号进入下一轮。4.4 翻车点四不同任务类型对反思的敏感度完全不同最后这个点更像一个方向性总结。我分别测试过内容创作类、数据分析类、代码生成类任务发现hindsight模式的收益有明显差异任务类型反思效果说明营销文案/社媒写作收益很高初稿常见语气偏差和目标用户不匹配反思很容易发现数据分析报告收益中等但风险高反思容易在数据解读上过度发挥需要结合真实数据校验代码生成收益偏高初稿常存在边界条件遗漏反思 单元测试结合效果最好长文翻译收益不固定直译问题容易发现但文化语境问题模型仍会自我确认这个表格是我跑完一周之后的结论。代码生成的反思我强烈建议接入外部工具做静态检查不能让模型自己凭感觉看代码有没有问题。数据分析类则建议先接知识库把原始数据传给反思节点否则它只能从文风角度挑刺对数字错误无能为力。5. 成本、收敛策略以及把反思沉淀成通用方法论一条带反思回路的工作流成本通常是一次直出的1.8到3倍。如果你跑了迭代循环则可能是3到6倍。这是很多团队一听就劝退的数字但我想说的是把成本除以质量提升来看它依然很划算。不过我们仍然可以想办法让这笔账算得更漂亮。首先要做的是给反思输出限长。我在反思节点明确限制了问题清单最多5条每条不超过50字。别小看这一步——表面上是格式约束实际上一旦模型意识到输出空间有限它的批判质量会显著上升因为它必须做优先级排序挑最核心的问题而不是罗列十个无痛痒的小毛病。其次反思节点可以适当降低模型档位。我实测过用一个能力较弱的小模型来做反思发现它在“格式遵从”上是OK的但在“找出真问题”上明显弱于大模型。折中方案是让大模型负责反思小模型负责初稿修正节点用中间档位的模型。这是一条很典型的混合配置成本能压到直出的1.4倍左右。第三点是关于延展性的。我在hindsight项目里跑通了工作流之后其实一直在思考一个更偏方法论的问题这套“执行-反思-修正”的架构不仅适用于AIGC任务。代码团队做Code Review本质是对提交代码做一次反思运营同学做活动复盘本质是对上一轮活动策略的反思产品经理评审需求文档也是对方案的反思。hindsight真正的产出是给了AI一种从“做完”到“做好”的中间步骤而且这个步骤通用性极强。我目前保留了一个习惯每次反思节点生成的修改意见我都会同步存入一个本地知识库打上任务类型标签。一开始只是想构建一个反思历史库做分析后来发现竟然可以把它当作后续Prompt里的“组织沉淀”——比如做同类型的文案任务时新的反思节点会参考历史上同类任务被指出过的问题直接跳过低级错误。这个玩法相当于让hindsight有了记忆每次反思不再是从零开始。Dify的知识库连接就能实现这一点不需要额外写代码。最后说点个人感觉最深的事。以前用AI的时候我心里总有根刺——你明知道它第一版肯定有毛病可自己又懒得一句一句去盘它于是就将就着用了。hindsight这套工作流真正改变我的不是那个修正稿反而是“让AI学会审视自己”这个动作给了人一种确定性。它让我愿意把更多重要的事情交给AI去完成因为我已经在流程里留了一双“回头检查”的眼睛。对想要在日常工作里更信任AI的人来说一条可靠的回环可能比更强的模型更重要。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑