← 返回文章列表

内容生成族: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 的确定性闸门)、中文检索的坑。

这些 AI 应用能力,如何交付到真实业务场景?看看方案与服务 →

联系我

邮箱contact@fishsun.cn

点击邮箱直接写信 · 扫码加微信沟通

微信

微信二维码

扫码加微信 · 备注「门户」更快通过