必须使用Chatflow类型工作流,依次配置文件上传、文档提取(仅支持.docx)、LLM结构化提取(严格JSON输出)、JSON Schema校验四节点,变量名须为contract_file,开场白需明确格式限制。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

创建合同条款提取专用工作流
要在Dify中实现非结构化合同文本到结构化关键字段的自动转换,必须放弃通用问答应用模式,直接选用支持多节点编排的Chatflow类型工作流——它能串联文档解析、语义提取、格式校验三阶段,避免文本截断、上下文丢失或JSON输出错位等高频失败问题。
登录Dify控制台,进入“工作室” → 点击“创建工作流” → 选择“Chatflow”模板 → 命名为“合同条款结构化提取器” → 在右侧面板勾选“启用文件上传”功能 → 设置开场白:“请上传需提取条款的合同文件(仅支持docx格式)”。
这一步不能跳过:开场白会直接影响用户上传行为,若未明确提示格式限制,后续文档提取器将直接报错中断,且错误信息不指向根本原因。
配置开始节点与文件输入约束
从左侧节点库拖入“开始”节点至画布中央。
点击该节点,在右侧配置面板中添加一个输入变量:【变量名必须填contract_file】,类型选“文件”,勾选“必填”,显示名称设为“待提取条款的合同文件”。
注意:变量名必须严格使用contract_file——这是后续所有节点引用该文件的唯一标识符,拼写错误或大小写偏差会导致整个工作流在文档提取环节静默失败,无任何报错提示。
接入文档提取器并限定格式
从节点库拖入“文档提取器”节点,连接至“开始”节点输出端。
配置该节点:输入来源选择“开始节点 → contract_file”;其余参数保持默认即可。
关键限制在此:文档提取器【仅原生支持.docx格式】,上传.doc、.pdf、.txt均会触发“Unsupported file type”错误。测试阶段务必用Word另存为.docx格式再上传,不要依赖系统自动转换。
构建LLM结构化提取节点
拖入“大语言模型(LLM)”节点,连接至文档提取器输出端。
在提示词编辑框中粘贴以下宪法式指令(不可删减核心约束):
你是一名法律文本结构化工程师。请严格按以下规则处理输入合同全文:①只输出标准JSON,禁止任何解释性文字、markdown符号或空行;②字段仅限:甲方名称、乙方名称、签约日期、付款周期、违约金比例、争议解决方式、保密义务期限;③若某字段原文未出现,对应值填null;④所有字符串值去除首尾空格及换行符;⑤输出必须通过JSON Schema校验,否则重试。
模型选择建议:优先使用gpt-4-turbo或Claude-3-haiku——它们对长文本字段定位和null值处理稳定性显著高于入门级模型,尤其在合同存在嵌套条款或表格时不易漏项。
添加JSON Schema校验与输出优化
拖入“代码”节点(非HTTP或条件判断),连接至LLM节点输出端。
在代码编辑区粘贴Python校验逻辑:
import json
data = json.loads($input)
schema = {"type": "object","properties": {"甲方名称": {"type": ["string", "null"]},"乙方名称": {"type": ["string", "null"]},"签约日期": {"type": ["string", "null"]},"付款周期": {"type": ["string", "null"]},"违约金比例": {"type": ["string", "null"]},"争议解决方式": {"type": ["string", "null"]},"保密义务期限": {"type": ["string", "null"]}},"required": []}
jsonschema.validate(instance=data, schema=schema)
这一步强制拦截非法JSON输出:当LLM返回带中文引号、多余逗号或字段名错位的“伪JSON”时,该节点会抛出异常并终止流程,避免脏数据流入下游。
最后,将“代码”节点输出连接至“结束”节点,保存工作流。


















