Dify工作流中如何实现自动补全
在 Dify 工作流中实现“自动补全”通常指以下三种场景。您可以根据具体需求选择对应的实现方案输入补全引导用户完善问题或查询条件。输出补全自动生成或完善模型回复的内容。代码补全在 IDE 等场景中自动补全代码如 SQL。场景一输入补全引导用户完善问题此场景适用于用户问题不完整时AI 自动引导用户补充必要信息而非直接拒答。实现思路意图与参数提取使用LLM 节点分析用户问题提取关键参数如时间、地点、类型等。条件判断使用IF/ELSE 或Question Classifier 节点判断参数是否齐全。信息补全若参数缺失则通过Template 或LLM 节点生成引导性问题询问用户缺失的信息。最终处理若参数齐全则将完整信息传递给后续节点如知识库检索、API 调用进行处理。核心技巧在 Prompt 中明确设定 AI 的行为逻辑例如“如果缺少以下任何信息[信息A]、[信息B]、[信息C]请用一个友好的问句向用户询问不要自己编造答案。只有在所有信息都齐全时才进行下一步操作。”场景二查询补全知识库检索优化当用户在知识库中进行模糊搜索时如仅输入“粉尘浓度”系统可自动将问题补全为更精确、可检索的语句如“金属露天矿爆破作业粉尘浓度限值是多少”。推荐方案在 Dify 工作流中编排开始节点接收用户输入的user_query。LLM 节点 (查询扩展)使用专门的 Prompt让 LLM 将模糊的user_query扩展为适合检索的完整问句expanded_query。Prompt 示例你是一个查询理解助手。请将用户的自然语言问题改写成一个适合在知识库中检索的、完整且严谨的问句。要求补全问题中缺失的关键信息如时间、地点、设备类型等但不得改变用户原意。输出只返回改写后的问题不要包含任何解释或多余文字。用户输入{{user_query}}知识库检索节点使用expanded_query作为查询语句进行检索。后续节点将检索结果传递给 LLM生成最终答案并输出。多轮对话补全为处理多轮对话可以将对话历史Chat History也作为输入变量传递给“查询扩展”LLM 节点使补全更精准。场景三输出补全优化 AI 回复此场景旨在让 AI 生成的回复更完整、规范例如自动补齐示例、步骤或注意事项。实现方法结构化指令在 Prompt 中强制规定输出格式例如“回答必须包含以下四个部分1. 结论2. 原因3. 示例4. 注意事项。”后置补全在生成初步回复后增加一个LLM 节点 作为“润色器”专门检查并补充缺失的部分。规则兜底使用IF/ELSE 节点 判断前序 LLM 的输出是否满足特定条件如包含代码块若不满足则通过Template 节点 自动补充预设内容如“示例代码...”。场景四代码补全以 SQL 为例Dify 可用于构建 SQL 代码补全功能其核心流程如下开始节点接收当前不完整的 SQL 语句current_sql。表名提取使用LLM 节点 或代码解释器从current_sql中提取涉及的表名。获取表结构通过HTTP 请求节点 调用后端 API获取这些表的详细结构信息字段名、类型等。SQL 补全将current_sql、表结构信息等整合到 Prompt 中调用 LLM 节点生成补全后的 SQL。Prompt 核心你是一个专业的数据库专家。请根据以下信息补全 SQL 语句当前 SQL{{current_sql}}涉及的表结构{{table_schema}}其他上下文{{context}}要求只输出补全后的完整 SQL不要包含任何解释。结束节点返回补全后的 SQL 语句。 通用设计技巧无论哪种场景以下技巧都能提升自动补全的效果明确指令在 Prompt 中清晰定义何时需要补全以及如何补全是提问、填充默认值还是生成内容。分离职责将“判断与提取”和“生成与补全”的逻辑拆分到不同的 LLM 节点中使流程更清晰也便于单独调试。利用历史在多轮对话中务必将对话历史Chat History作为上下文变量这是实现连贯补全的关键。善用变量聚合器 (Variable Aggregator)在不同分支如“已补全”和“未补全”中使用变量聚合器将结果统一输出简化下游逻辑。