在 Dify 工作流中实现“自动补全”,通常指以下三种场景。您可以根据具体需求选择对应的实现方案:

  1. 输入补全:引导用户完善问题或查询条件。

  2. 输出补全:自动生成或完善模型回复的内容。

  3. 代码补全:在 IDE 等场景中,自动补全代码(如 SQL)。


场景一:输入补全(引导用户完善问题)

此场景适用于用户问题不完整时,AI 自动引导用户补充必要信息,而非直接拒答。

实现思路

  1. 意图与参数提取:使用 LLM​ 节点分析用户问题,提取关键参数(如时间、地点、类型等)。

  2. 条件判断:使用 IF/ELSE​ 或 Question Classifier​ 节点,判断参数是否齐全。

  3. 信息补全:若参数缺失,则通过 Template​ 或 LLM​ 节点生成引导性问题,询问用户缺失的信息。

  4. 最终处理:若参数齐全,则将完整信息传递给后续节点(如知识库检索、API 调用)进行处理。

核心技巧

在 Prompt 中明确设定 AI 的行为逻辑,例如:

“如果缺少以下任何信息:[信息A]、[信息B]、[信息C],请用一个友好的问句向用户询问,不要自己编造答案。只有在所有信息都齐全时,才进行下一步操作。”


场景二:查询补全(知识库检索优化)

当用户在知识库中进行模糊搜索时(如仅输入“粉尘浓度”),系统可自动将问题补全为更精确、可检索的语句(如“金属露天矿爆破作业粉尘浓度限值是多少?”)。

推荐方案:在 Dify 工作流中编排

  1. 开始节点:接收用户输入的 user_query

  2. LLM 节点 (查询扩展):使用专门的 Prompt,让 LLM 将模糊的 user_query扩展为适合检索的完整问句 expanded_query

    • Prompt 示例

      你是一个查询理解助手。请将用户的自然语言问题改写成一个适合在知识库中检索的、完整且严谨的问句。要求:补全问题中缺失的关键信息(如时间、地点、设备类型等),但不得改变用户原意。输出:只返回改写后的问题,不要包含任何解释或多余文字。

      用户输入:{{user_query}}

  3. 知识库检索节点:使用 expanded_query作为查询语句进行检索。

  4. 后续节点:将检索结果传递给 LLM,生成最终答案并输出。

多轮对话补全

为处理多轮对话,可以将对话历史(Chat History)也作为输入变量传递给“查询扩展”LLM 节点,使补全更精准。


场景三:输出补全(优化 AI 回复)

此场景旨在让 AI 生成的回复更完整、规范,例如自动补齐示例、步骤或注意事项。

实现方法

  • 结构化指令:在 Prompt 中强制规定输出格式,例如:“回答必须包含以下四个部分:1. 结论;2. 原因;3. 示例;4. 注意事项。”

  • 后置补全:在生成初步回复后,增加一个 LLM 节点​ 作为“润色器”,专门检查并补充缺失的部分。

  • 规则兜底:使用 IF/ELSE 节点​ 判断前序 LLM 的输出是否满足特定条件(如包含代码块),若不满足,则通过 Template 节点​ 自动补充预设内容(如“示例代码:...”)。


场景四:代码补全(以 SQL 为例)

Dify 可用于构建 SQL 代码补全功能,其核心流程如下:

  1. 开始节点:接收当前不完整的 SQL 语句 current_sql

  2. 表名提取:使用 LLM 节点​ 或代码解释器,从 current_sql中提取涉及的表名。

  3. 获取表结构:通过 HTTP 请求节点​ 调用后端 API,获取这些表的详细结构信息(字段名、类型等)。

  4. SQL 补全:将 current_sql、表结构信息等整合到 Prompt 中,调用 LLM 节点生成补全后的 SQL。

    • Prompt 核心

      你是一个专业的数据库专家。请根据以下信息补全 SQL 语句:

      • 当前 SQL:{{current_sql}}

      • 涉及的表结构:{{table_schema}}

      • 其他上下文:{{context}}

        要求:只输出补全后的完整 SQL,不要包含任何解释。

  5. 结束节点:返回补全后的 SQL 语句。


💡 通用设计技巧

无论哪种场景,以下技巧都能提升自动补全的效果:

  • 明确指令:在 Prompt 中清晰定义何时需要补全,以及如何补全(是提问、填充默认值还是生成内容)。

  • 分离职责:将“判断与提取”和“生成与补全”的逻辑拆分到不同的 LLM 节点中,使流程更清晰,也便于单独调试。

  • 利用历史:在多轮对话中,务必将对话历史(Chat History)作为上下文变量,这是实现连贯补全的关键。

  • 善用变量聚合器 (Variable Aggregator):在不同分支(如“已补全”和“未补全”)中,使用变量聚合器将结果统一输出,简化下游逻辑。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐