LLM 节点总是不稳定?17 条自查清单 + 4 条进阶经验 📅 发布时间:2026/8/28 6:10:29 👁 浏览次数: LLM 节点总是不稳定17 条自查清单 4 条进阶经验从 200 次实验里长出来基于 Dify 1.16.1 与 Hermes Agent 实战实测2026-08Hermes Agent 调教实验 Dify 节点拼装实测 插件开发实测 摘要Dify 的 LLM 节点、Agent 的提示词文件、插件的工具描述——三个看起来不同的场景底层是同一个问题怎么用文本让 LLM 稳定输出符合预期。本文把三次实战200 次实验里踩过的坑提炼成 17 条自查清单六类 4 条进阶经验——清单管「设计时对照查」进阶经验管「约束怎么写、记忆怎么存、多轮怎么跑」。本文要解决的核心痛点LLM 节点输出 JSON 老是解析失败改了几版提示词还是不行输入为空时模型「一本正经」地编造了一整份报价单推理模型思考 54 秒输出却是空的Agent 调工具时参数总是传错工具描述怎么写才靠谱本文给一份六类 17 条的自查清单输入防护 / 输出约束 / 模型参数 / 错误处置 / 上下文管理 / 工具描述 4 条进阶经验约束怎么写、记忆怎么存、多轮怎么跑——每条都有实测证据和落地形态。场景过去一个月我们在三条线同时做「让 LLM 稳定输出」这件事而且一开始都踩了坑Dify 工作流拼装一个报价单比价助手5 个模块串起来跑。模块 2 收到空输入时LLM 直接编造了一整份报价数据——公司名、产品型号、价格全是虚构的下游还当真了。Hermes Agent 调教给一个 AI 助理写行为约束文件。第一版写得又长又抽象模型「照章办事」的达标率惨不忍睹改成「要求 样例」成对的结构化写法后达标率 100%成本还省了。插件开发给工作流加一个工单查询工具。工具描述里写了参数规则和示例模型就能正确生成参数没写它就乱传。三件事看起来毫不相关——一个是可视化编排一个是提示词调教一个是工具封装。但踩完发现坑是同源的。LLM 的行为规律不会因为平台不同就改变空输入它会编格式不约束它会飘描述不清晰它会猜。这篇把三次实战合起来沉淀成一份可以对照自查的清单。结论LLM 输出不稳定根因几乎都能归到六个层面输入没防护、输出没约束、参数没选对、错误没分类、上下文没管理、工具没描述清。对应 17 条自查项 4 条进阶经验——清单拦得住八成的不稳定进阶经验告诉你约束怎么写才不会过度、记忆怎么存才有用、多轮怎么跑才不漂。清单主体六类 17 条#方法为什么实测证据落地形态1空输入校验LLM 节点前必须有输入校验空输入直接走错误出口空输入时 LLM 幻觉编造数据——实测编出了完整报价单公司名/型号/价格全虚构节点前加条件判断空输入 → 错误契约直出2类型/长度/枚举校验先行非法输入进 LLM 浪费 token 且输出不可控节点前代码校验合法才放行2b事实脑补拦截输入不完整字段缺失也拦截信息不完整时 LLM 脑补完整事实实测从局部日志推断出完整实验规模实际是错的节点前校验必填字段集缺字段走错误出口3输出形态 指令 样例成对要求 禁止成对结构化写法实测达标率 100%、成本 1.44× 优于抽象长文「用表格」不如给表格示例system 提示词格式要求 具体示例4JSON 输出格式约束 容错双保险推理模型思考模式默认开输出带think前缀下游 json.loads 必失败关闭思考模式 代码节点剥think5输出长度/预算控制推理吃光输出预算 → 结果为空实测 54-70 秒思考、输出空节点级输出预算长输出场景加大上限并核对6思考模式开关任务可解构成确定步骤 → 关多步推理/数学/代码调试 → 保留关后 8.7 秒 vs 开 54-70 秒模板化任务关掉更稳更省节点级 thinking 配置按任务性质选7温度按确定性需求调确定性任务高温度 → 输出漂移模板化/JSON 任务用低温度8输出不对先判「哪层错」数据/逻辑/工具/提示四桶盲目改提示词是最大浪费——先问一句「是输入/推理/调用/生成哪层的问题」排查流程先分类再对症修9结构化错误出口error_code/error_message/retryable 三件套瞬时错误可重试、业务错误不重试——分不清就全重试越重试越乱子模块输出错误契约上层按错误码路由10关键信息前置角色 → 任务 → 输出格式 → 参考材料全局约束越长达标率越低上下文窗口有限信息有优先级提示词结构固定角色/任务/格式在前材料在后11防跨轮次格式传染多轮对话中历史输出格式会带偏当前轮实测踩坑每轮明确当前输出格式不受历史影响12输入裁剪无关信息不进提示词给什么说什么——给垃圾出垃圾token 即成本节点前过滤字段只传必要内容13工具描述 参数规则 示例描述带「order_id 必须是 WO- 开头 8 位数字如 WO-20260805」→ 模型正确生成参数插件工具 description 写规则 示例14工具边界声明闲聊不调、格式不对先核对写清边界的工具模型不会乱调工具描述/预置提示词里写边界15校验失败显式报错不静默降级显式错误会成为模型自纠错的燃料——实测校验失败后模型能自行纠正工具参数校验失败返回结构化错误15b自纠错循环首调失败≠终局失败Agent 场景首调空参率高——报错后模型读错误消息自纠、参数正确error_message 质量决定自纠成功率错误消息写清「错在哪/怎么改」设重试上限防死循环三个值得展开的故事故事一空输入模型编了一整份报价单比价助手拼装时模块 2 收到的输入为空——代码节点的解析把文本丢了。LLM 节点没有输入校验直接把空输入喂给了模型。结果模型「一本正经」地输出了完整报价数据「上海宏图机电」「三相异步电动机」——公司名、型号、价格全是它编的。下游模块还当真了比价结果煞有介事。修法不是调提示词——是加输入校验空输入直接走错误出口不让 LLM 处理。LLM 是生成器不是守门员空输入它不会说「我没数据」它会编。故事二思考了 54 秒输出是空的一个需要结构化输出的节点用推理模型跑。模型思考模式默认开推理过程吃光了输出预算——结果是 text 字段为空下游 json.loads 直接崩。实测思考开 54-70 秒 输出空 vs 关思考 8.7 秒 完整输出。判断标准任务能被解构成确定步骤模板化生成/确定性解构/延迟敏感/成本敏感就关多步推理/数学逻辑/代码调试/跨文档分析必须保留。思考模式是「模型能力不足的补偿」——任务确定时补偿就是浪费。故事三工具描述怎么写模型就怎么调插件开发时对比实测工具描述写了参数规则和示例「order_id 必须匹配 WO- 后跟 8 位数字例如 WO-20260805」模型就能正确生成参数描述含糊它就乱传。更关键的写了边界声明「闲聊不要调用」「格式不对先核对」模型在格式错误时不会硬调工具而是先提示用户修正。LLM 调用工具是概率行为——描述质量决定成功率。规则 示例 边界三件套。进阶经验清单之外的 4 条约束怎么写、记忆怎么存、多轮怎么跑清单 17 条管「节点/约束设计时查什么」。还有 4 条经验不在清单里——因为它们属于「约束工程」和「交付形态」是 200 次实验里的另一类发现进阶 1铁律会过度验证——约束写得越绝对模型执行越用力实测一条铁律单独写不带样例不带解释模型会过度执行——成本 2.28 倍、单任务 token 消耗飙到 76 万无约束的 3 倍。修法「要求 禁止」成对写、给具体样例——同样是约束结构化写法的成本只有 1.44 倍达标率反而 100%。进阶 2记忆是第二上下文——粒度决定达标率和成本实测三档对照无记忆达标率 94.1%粗粒度5 条一句话达标率持平但成本降到 0.80 倍细结构化10 条分类达标率 98% 但成本 1.24 倍。结论记忆粒度是「精度 vs 成本」的权衡——精度敏感场景用细结构化成本敏感场景用粗粒度不存在免费午餐。进阶 3全局约束有长度副作用——放错层级会拉长所有输出实测把「汇报三要素」写进全局约束每轮输出都被拉长全局约束影响所有会话的输出长度。修法输出长度敏感的要求放任务级 prompt全局层只管行为纪律——约束分层的边界就在这。进阶 4多轮对话即约束——对话本身是最轻的约束手段实测多轮形态6 项验收 30/30 全过纠偏一次到位、追加需求、跨轮记忆、干扰恢复——对话中纠正一次后续轮次自动遵守。修法多轮交付场景不用堆约束文件「对话纠偏 环境事实进记忆」就够了——单轮自动化/批量才需要全套约束。边界与版本实测环境Dify 1.16.1 Hermes Agentdeepseek 系列模型。跨版本/跨模型使用前按「版本钉扎」习惯复核——模型行为随版本演进会变适用任何带 LLM 属性的节点/约束/工具描述设计工作流 LLM 节点、Agent 节点、插件工具、行为约束文件不适用纯确定性逻辑不需要 LLM 的环节不要为了用而用每条的经验值是 2026-08 实测量化边界如温度具体值待更多数据校准第 8 条四桶判断与第 9 条错误契约是交付流程层面的机制详细展开见同专栏《执行驱动交付EDD》系列收尾17 条清单 4 条进阶经验本质是一句话LLM 不会自己变稳稳定是设计出来的——输入你守输出你约参数你选错误你分上下文你管工具你描述约束别写太狠、记忆要选粒度、多轮靠对话。把这句话落成清单和进阶经验设计时对照查一遍比上线后救火省十倍。讨论区你遇到过最离谱的 LLM 输出是什么是空输入编数据还是格式飘到没法解析评论区聊聊一起把这份清单补厚。如果觉得有收获欢迎点赞 收藏 关注这是激励我持续更新的最大动力。本文基于真实项目交付与内部实战实验撰写2026-08。文中数据均来自实测记录方法论部分以「已验证 / 推断待验证」标注边界。