必须在关键节点前插入断言节点校验输入,使用Python脚本检查user_query字段存在性、字符串类型及非空;LLM节点需通过提示词追加JSON Schema或启用Schema校验开关,并配置error_handler捕获错误。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Dify工作流中,上游节点输出字段缺失、类型错配或空值未校验,会导致下游JSON Schema验证失败、条件分支误判甚至整个流程静默中断。这类问题不会报红但逻辑已偏移,必须在数据进入关键节点前主动拦截。
插入断言节点强制校验输入
在LLM节点或HTTP请求节点前,添加「代码执行」节点,粘贴以下Python脚本:
def main(input_data):
assert "user_query" in input_data, "【缺少 user_query 字段】"
assert isinstance(input_data["user_query"], str), "user_query 必须为字符串类型"
assert len(input_data["user_query"].strip()) > 0, "user_query 内容不能为空或纯空白"
return {"status": "valid", "data": input_data}
这一步操作起来很简单,直接把文件拖进去就行。但注意:若断言失败,该节点会立即抛出 AssertionError 并终止流程,错误信息将完整写入 error 字段供后续分析。
用JSON Schema在LLM节点内嵌校验
方法一:在LLM节点的提示词末尾追加严格输出指令
请严格按如下 JSON Schema 输出,不得添加任何额外字段、注释或说明文字:
{"type":"object","properties":{"summary":{"type":"string"},"keywords":{"type":"array","items":{"type":"string"}}},"required":["summary","keywords"]}
方法二:在LLM节点配置中启用「Schema校验」开关,并粘贴上述Schema文本
启用后,若模型返回内容不满足 required 字段或类型错误,节点状态将标记为 failed,且 error.type = "JSON_SCHEMA_VALIDATION_FAILED"。此时 【必须配置 error_handler 否则流程中断】。
捕获并透传上下文中的错误信息
第一步:确认工作流已启用 trace 功能(.env 中含 WORKFLOW_TRACE_ENABLED=true)
第二步:在任意节点的「输出映射」中添加字段:
last_error → error_info
第三步:在后续条件分支节点中使用表达式判断:
{% if error_info.message contains "user_query" %}走降级路径{% else %}走主路径{% endif %}
这个映射动作不可逆——一旦 last_error 被覆盖,原始错误上下文将永久丢失。务必在首次捕获后立即分流处理,不要在中间节点做无意义的变量重赋值。


















