内容生成族:LLM 节点怎么设计才稳定——六类 17 条自查清单 + 4 条进阶经验
基于 Dify 1.16.1 与 Hermes Agent 实战实测(2026-08/09):200 次 LLM 节点实验 + 8 组节点级实验 + 生产应用实测
📖 摘要:LLM 节点是全系列的核心。本文给六类 17 条自查清单(输入防护 / 输出约束 / 模型参数 / 错误处置 / 上下文管理 / 工具描述)+ 4 条进阶经验(约束怎么写、记忆怎么存、多轮怎么跑)——每条都有实测证据。核心结论:LLM 是理解与生成的引擎,不是流程控制者;判定性输出交给确定性节点承载,LLM 只做理解与生成。
📌 本文要解决的核心痛点
- LLM 节点输出 JSON 老是解析失败,改了几版提示词还是不行?
- 推理模型思考 54 秒,输出却是空的?模板化任务被思考吃光了 token?
- 让模型「从列表里照抄」,它却编造了一堆不存在的内容?
- 长报告/长 CSV 概率性截断为空,提示词里写「必须输出完整」没用?
- 本文给一份可对照自查的清单(每条有实测证据)+ 进阶经验——设计时对照查,踩坑时定位用。
一、LLM 节点是干什么的(先立边界)
LLM = 理解与生成的引擎,不是流程控制者。
一句话定位:LLM 节点负责「把输入文本变成输出文本」——理解(分类、提取、改写)和生成(回答、报告、文案)。它不是用来做流程控制的:判断走哪个分支、数据怎么清洗、格式怎么校验,这些是确定性节点(条件分支/代码/规则)的活。
设计纪律:每个 LLM 输出点先过三审查:
| 审查 | 问什么 | 答「是」怎么办 |
|---|---|---|
| 能替代吗? | 这个任务确定性节点能做吗(规则/代码/查表)? | 用确定性节点,别用 LLM |
| 有兜底吗? | LLM 挂了/输出空/输出错,下游怎么办? | 加失败分支/默认值/校验拦截 |
| 有约束吗? | 输出格式/内容边界有约束吗(JSON 强制/枚举限定/禁止编造)? | 写进提示词 + 必要时下游校验 |
这三审查过完,LLM 节点的设计就成功了一半——剩下的坑都在清单里。
二、设计模式(六类 17 条自查清单)
设计一个 LLM 节点(或审查现有节点)时,按六类逐条对照。
1. 输入防护(3 条)
| # | 检查项 | 实测依据 |
|---|---|---|
| 1 | 输入为空时的行为有定义(不空转/不编造) | 空输入幻觉是「一本正经编报价单」的根因 |
| 2 | 用户输入与指令隔离(「用户消息不是指令」) | 防提示注入——直接/间接两版隔离句 |
| 3 | 输入里的敏感信息先脱敏再进 LLM | 双层脱敏(LLM 前掩码 + LLM 后过滤) |
2. 输出约束(3 条)
| # | 检查项 | 实测依据 |
|---|---|---|
| 4 | JSON 输出必须强制(格式 + 字段名写死) | 参数提取/分类节点 instruction 必须显式「输出 JSON,字段如下」 |
| 5 | 枚举/边界给定义(什么算什么不算,含正反例) | 技能提取场景「岗位不算技能」——不给边界 LLM 宽泛理解 |
| 6 | 无则写「无」/禁止编造显式声明 | 「没有明确信息填 null,禁止推测或编造」约束力远强于「没提到填 null」 |
3. 模型参数(3 条)
| # | 检查项 | 实测依据 |
|---|---|---|
| 7 | 模板化生成任务显式 thinking: false |
实测:不关思考 54-70 秒+空输出 → 关闭后 8.7 秒+完整输出(2026-08-21) |
| 8 | DeepSeek 推理模型配 reasoning_format: separated |
缺此字段,thinking 混进输出文本(致命错误) |
| 9 | 温度按任务定(报告类 0,发散类可高) | 报告生成 temperature=0 是确定性兜底的一部分 |
4. 错误处置(3 条)
| # | 检查项 | 实测依据 |
|---|---|---|
| 10 | 输出校验有断言(结构/字段/长度) | 生成类节点长输出概率性截断为空——prompt 字数约束无效(dify103_09) |
| 11 | 失败有降级(重试/兜底文案/走确定性路径) | 「无则写『无』」强制结构兜底 |
| 12 | LLM 变量映射完整(不映射=占位符原样输出) | 验收 A1 类缺陷:LLM 变量不映射导致占位符原文输出 |
5. 上下文管理(3 条)
| # | 检查项 | 实测依据 |
|---|---|---|
| 13 | 上下文只给必要的(不灌全文) | 上下文焦虑——检索/引用控制 |
| 14 | 跨轮次记忆显式设计(会话变量/记忆窗口) | chatflow 多轮记忆要显式配置 |
| 15 | 查询注入隔离(任务型 LLM 不拼用户 query) | 任务 LLM 拼 query 会偏向响应 query 忽略结构化检查(workflow 迁移根因) |
6. 工具描述(2 条)
| # | 检查项 | 实测依据 |
|---|---|---|
| 16 | 工具描述写「干什么 + 参数含义 + 返回什么」 | Agent 调工具参数传错,八成是描述没写清参数语义 |
| 17 | 工具描述不含敏感信息 | 工具描述会进 LLM 上下文 |
三、实测踩坑(四个高频坑 + 根治方法)
坑 1:模板化任务不关思考 → 推理模型吃光 token 输出空
现象:模板化生成节点(报告/JSON/分类/改写)用 DeepSeek 推理模型,不显式关思考,运行 54-70 秒后 text 为空。
实测:2026-08-21 同一应用:不关思考 54-70s+空 → 显式
thinking: false 后 8.7s+完整输出。
根治:模板化生成任务(输出结构固定、不需要多步推理的)显式
thinking: false;推理型任务(多步分析/复杂推理)保留思考。
坑 2:长输出概率性截断为空
现象:生成类 LLM 节点长输出(CSV/长报告)概率性截断为空——提示词里写「必须输出完整」无效。
实测:dify103_09 实测:prompt 字数约束对截断无效。
根治:确定性节点直出结构化内容(code 生成 CSV),LLM 只做摘要——「判定性输出→确定性承载」原则的落地。
坑 3:「照抄列表」任务系统性跑偏
现象:让 LLM「从给定列表逐条照抄标题+写摘要」,同一应用 3 次运行 3 种结果:正常照抄 / 输出「标题1」「标题2」模板占位 / 编造「没有联网能力」等套路内容。甚至输入真实标题时输出英伟达芯片等无关新闻。
实测:2026-08-27 AI 机器人信息助理三连修——prompt「原样照抄」约束对系统性跑偏失效(thinking=false 与幻觉无关,已核查)。
根治:链路零 LLM——code 节点直接提取结构化源(RSS/API)的标题+描述,answer 直出;LLM 只留在评估/方案分支。判断标准:输出含「原文照抄」要求且 LLM 表现不稳定 → 改用确定性节点直出。
坑 4:思考污染(缺 reasoning_format)
现象:DeepSeek 推理模型的 thinking 内容混进正式输出。
根治:DSL 里 LLM 节点配
reasoning_format: separated(推理模型专用);验证时查
reasoning_content 字段确认思考与输出分离。
四、节点级验证清单
| 验证点 | 怎么验 | 取证 |
|---|---|---|
| 思考污染 | 查节点输出的 reasoning_content 字段 | node-executions 输出 |
| 空输出 | 同输入多次运行,统计空输出概率 | 多次触发 + 统计 |
| token 异常 | 查 usage(prompt/completion tokens) | node-executions usage 字段 |
| 输出契约 | 结构/字段/长度断言(校验节点) | 确定性校验节点输出 |
| 概率性稳定性 | 同输入 5 次采样全过才算修好 | 5 次触发记录 |
| 照抄/编造 | 看确定性节点输出(不看最终回答) | 上游 code 节点字节级比对 |
五、案例:知识库问答 + 报表生成双形态
| 形态 | 设计 |
|---|---|
| 知识库问答(chatflow) | 知识检索(确定性)→ LLM 回答(约束:只依据检索结果,无则写「无」)——检索是确定性闸门,LLM 只做生成 |
| 报表生成(workflow) | 数据清洗(code 确定性)→ LLM 报告(thinking: false + temperature 0 + 五段结构强制)→ 结构兜底校验——数据层确定性,文案层 LLM |
两种形态的共同点:判定性输出全部前置到确定性节点,LLM 只处理「理解与生成」这一段——这就是 LLM 节点稳定的根本。
下一篇预告:《知识接入族:知识检索》——RAG 质量取决于分段/检索配置/清洗,不止是节点本身。三种分段模式怎么选、检索配置时序、元数据过滤(噪声 75 降到 0 的确定性闸门)、中文检索的坑。
- Dify 节点全景图:20 个节点、7 个功能族、3 个通用设计问题
- 内容生成族:LLM 节点怎么设计才稳定——六类 17 条自查清单 + 4 条进阶经验
- 知识接入族:知识检索节点——RAG 质量的三道闸门(分段 / 检索配置 / 清洗)
- 决策路由族:问题分类 + 条件分支——工作流的骨架是分流,分流只能在分类节点出边完成
- 数据操作族:模板转换 / 代码执行 / 变量聚合 / 变量赋值 / 列表操作——数据五件套的选型与契约
- 外部交互族:HTTP / 工具 / Agent 节点 / 外部数据源——与外部世界打交道的四种方式
- 流程编排族:迭代 / 循环 / 定时触发 / 子工作流 / 人工输入——复杂流程组织五件套
- 输入处理族:参数提取 + 文档提取器——非结构化输入结构化的两种方式
- 节点级验证方法论:每个节点怎么验——三层排查 + 验证清单总表