定义
调用大语言模型的能力,处理用户在 “开始” 节点中输入的信息(自然语言、上传的文件或图片),给出有效的回应信息。
LLM 节点
应用场景
LLM 节点是 Chatflow/Workflow 的核心节点。该节点能够利用大语言模型的对话/生成/分类/处理等能力,根据给定的提示词处理广泛的任务类型,并能够在工作流的不同环节使用。- 意图识别,在客服对话情景中,对用户问题进行意图识别和分类,导向下游不同的流程。
- 文本生成,在文章生成情景中,作为内容生成的节点,根据主题、关键词生成符合的文本内容。
- 内容分类,在邮件批处理情景中,对邮件的类型进行自动化分类,如咨询/投诉/垃圾邮件。
- 文本转换,在文本翻译情景中,将用户提供的文本内容翻译成指定语言。
- 代码生成,在辅助编程情景中,根据用户的要求生成指定的业务代码,编写测试用例。
- RAG,在知识库问答情景中,将检索到的相关知识和用户问题重新组织回复问题。
- 图片理解,使用 vision 能力的多模态模型,能对图像内的信息进行理解和问答。
配置示例
在应用编辑页中,点击鼠标右键或轻点上一节点末尾的 + 号,添加节点并选择 LLM。
LLM 节点配置-选择模型
- 选择模型,Dify 提供了全球主流模型的支持,包括 OpenAI 的 GPT 系列、Anthropic 的 Claude 系列、Google 的 Gemini 系列等,选择一个模型取决于其推理能力、成本、响应速度、上下文窗口等因素,你需要根据场景需求和任务类型选择合适的模型。
如果你是初次使用 Dify ,在 LLM 节点选择模型之前,需要在 系统设置—模型供应商 内提前完成模型配置。
- 配置模型参数,模型参数用于控制模型的生成结果,例如温度、TopP,最大标记、回复格式等,为了方便选择系统同时提供了 3 套预设参数:创意,平衡和精确。如果你对以上参数并不熟悉,建议选择默认设置。若希望应用具备图片分析能力,请选择具备视觉能力的模型。
- 填写上下文(可选),上下文可以理解为向 LLM 提供的背景信息,常用于填写知识检索的输出变量。
- 编写提示词,LLM 节点提供了一个易用的提示词编排页面,选择聊天模型或补全模型,会显示不同的提示词编排结构。如果选择聊天模型(Chat model),你可以自定义系统提示词(SYSTEM)/用户(USER)/ 助手(ASSISTANT)三部分内容。
如果在编写系统提示词(SYSTEM)时没有好的思路,也可以使用提示生成器功能,借助 AI 能力快速生成适合实际业务场景的提示词。

提示生成器

呼出变量插入菜单
- 高级设置,可以开关记忆功能并设置记忆窗口、开关 Vision 功能或者使用 Jinja-2 模板语言来进行更复杂的提示词等。
特殊变量说明
上下文变量 上下文变量是一种特殊变量类型,用于向 LLM 提供背景信息,常用于在知识检索场景下使用。详细说明请参考知识检索节点。 文件变量 部分 LLMs(例如 Claude 3.5 Sonnet)已支持直接处理并分析文件内容,因此系统提示词已允许输入文件变量。为了避免潜在异常,应用开发者在使用该文件变量前需前往 LLM 官网确认 LLM 支持何种文件类型。
阅读文件上传了解如何搭建具备文件上传功能的 Chatflow/Workflow 应用。会话历史 为了在文本补全类模型(例如 gpt-3.5-turbo-Instruct)内实现聊天型应用的对话记忆,Dify 在原提示词专家模式(已下线)内设计了会话历史变量,该变量沿用至 Chatflow 的 LLM 节点内,用于在提示词中插入 AI 与用户之间的聊天历史,帮助 LLM 理解对话上文。
会话历史变量应用并不广泛,仅在 Chatflow 中选择文本补全类模型时可以插入使用。

插入会话历史变量
gpt-4的参数列表。

模型参数列表
- 温度: 通常是0-1的一个值,控制随机性。温度越接近0,结果越确定和重复,温度越接近1,结果越随机。
- Top P: 控制结果的多样性。模型根据概率从候选词中选择,确保累积概率不超过预设的阈值P。
- 存在惩罚: 用于减少重复生成同一实体或信息,通过对已经生成的内容施加惩罚,使模型倾向于生成新的或不同的内容。参数值增加时,对于已经生成过的内容,模型在后续生成中被施加更大的惩罚,生成重复内容的可能性越低。
- 频率惩罚: 对过于频繁出现的词或短语施加惩罚,通过降低这些词的生成概率。随着参数值的增加,对频繁出现的词或短语施加更大的惩罚。较高的参数值会减少这些词的出现频率,从而增加文本的词汇多样性。

加载预设参数
高级功能
记忆: 开启记忆后问题分类器的每次输入将包含对话中的聊天历史,以帮助 LLM 理解上文,提高对话交互中的问题理解能力。 记忆窗口: 记忆窗口关闭时,系统会根据模型上下文窗口动态过滤聊天历史的传递数量;打开时用户可以精确控制聊天历史的传递数量(对数)。 对话角色名设置: 由于模型在训练阶段的差异,不同模型对于角色名的指令遵循程度不同,如 Human/Assistant,Human/AI,人类/助手等等。为适配多模型的提示响应效果,系统提供了对话角色名的设置,修改对话角色名将会修改会话历史的角色前缀。 Jinja-2 模板: LLM 的提示词编辑器内支持 Jinja-2 模板语言,允许你借助 Jinja2 这一强大的 Python 模板语言,实现轻量级数据转换和逻辑处理,参考官方文档。 错误重试:针对节点发生的部分异常情况,通常情况下再次重试运行节点即可解决。开启错误重试功能后,节点将在发生错误的时候按照预设策略进行自动重试。你可以调整最大重试次数和每次重试间隔以设置重试策略。- 最大重试次数为 10 次
- 最大重试间隔时间为 5000 ms
异常处理:提供多样化的节点错误处理策略,能够在当前节点发生错误时抛出故障信息而不中断主流程;或通过备用路径继续完成任务。详细说明请参考异常处理。
结构化输出:确保 LLM 返回的数据格式可用、稳定、可预测,减少错误处理和格式转换的工作。
JSON Schema 编辑器
JSON Schema 编辑器
LLM 节点中的 JSON Schema 编辑器 让你能够定义 LLM 返回的数据结构,确保输出可解析、可复用、可控。你可以使用可视化编辑模式直观编辑,或通过代码编辑模式精细调整,适配不同复杂度的需求。JSON Schema 编辑器入口点击 LLM 节点 > 输出变量,打开 结构化开关 > 配置,即可进入 JSON Schema 编辑器 界面。JSON Schema 编辑器分为可视化编辑窗口与代码编辑窗口,两者可无缝切换。
作为节点级能力,JSON Schema 适用于所有模型的结构化输出定义和约束。
- 原生支持结构化输出的模型:可直接使用 JSON Schema 定义结构化变量。
- 不支持结构化输出的模型:系统会将 JSON Schema 以提示词方式输入。你可以尝试引导模型按结构生成内容,但这并不保证一定可以正确解析输出。

- 可视化编辑
- 代码编辑
适用场景
添加字段在 结构化输出 框中点击 添加子字段 按钮,并配置字段参数:
使用 AI 生成 JSON Schema
- 你只需要定义几个简单的字段,例如
name、email、age等,并不涉及嵌套结构。 - 你不熟悉 JSON Schema 语法,希望不写代码,而是用直观的界面拖拽、添加字段。
- 你希望快速迭代字段结构,而不是每次修改都需要更新 JSON 代码。
添加字段在 结构化输出 框中点击 添加子字段 按钮,并配置字段参数:- (必填) 字段名
-
(必填) 字段类型:支持 string、number、object、array 等字段类型等。
对象(object)或数组(array)字段可添加子字段。
- 描述:帮助 LLM 理解字段含义,提高输出准确性。
- 必填:开启后,LLM 将强制返回该字段值。
-
枚举值:用于限制字段值的可选范围,使模型仅能从预设的枚举值中返回值。例如,若只允许
red、green、blue:
该规则要求输入值只能是删改字段red、green或blue。
- 编辑字段:鼠标悬停至字段卡片,点击 编辑 图标,修改字段类型、描述、默认值等参数。
-
删除字段:鼠标悬停至字段卡片,点击 删除 图标,字段将从列表中删除。
删除对象(object)或数组(array)字段时,其所有子字段也会被删除。
- 点击 从 JSON 导入 按钮,在弹出的对话框中粘贴或上传 JSON 示例,例如:
- 点击 提交 按钮,系统会自动解析 JSON 示例,并转换为 JSON Schema 如下:
使用 AI 生成 JSON Schema- 点击 AI 生成 图标,选择模型(如 GPT-4o)。在输入框中描述你的 JSON Schema,例如:
“我需要一个包含用户名(string)、年龄(number)和兴趣爱好(array)的 JSON Schema。”
- 点击 生成 ,系统将自动生成 JSON Schema 如下:
使用案例
- 读取知识库内容
- 在 LLM 节点上游添加知识库检索节点;
- 将知识检索节点的 输出变量
result填写至 LLM 节点中的 上下文变量 内; - 将 上下文变量 插入至应用提示词内,赋予 LLM 读取知识库内的文本能力。
知识检索节点输出的变量 result 还包含了分段引用信息,你可以通过 引用与归属 功能查看信息来源。
上游节点的普通变量同样可以填写至上下文变量内,例如开始节点的字符串类型变量,但 引用与归属 功能将会失效。
- 读取文档文件
- 在 “开始” 节点内添加文件变量;
- 在 LLM 节点上游添加文档提取器节点,将文件变量作为输入变量;
- 将文档提取器节点的 输出变量
text填写至 LLM 节点中的提示词内。
- 异常处理
- 在 LLM 节点启用 “异常处理”
- 选择异常处理方案并进行配置
- 结构化输出
提示优化
提示优化功能可根据不尽人意的输出对提示进行迭代改进。它允许用户直接参考上一次运行的结果来完善其指令,从而在提示编写、模型输出和反馈之间形成闭环。目的
此前,大语言模型(LLM)节点是无状态的——如果提示效果不佳,用户必须自行猜测如何改进。借助此功能,你现在可以:- 使用上下文变量引用上一次输出
- 定义一个理想输出用于比较
- 使用提示生成器用户界面重新生成优化后的提示
原理
在大语言模型(LLM)节点中执行提示后:- 系统会捕获原始提示及其最后输出。
- 这些将作为上下文变量公开:
{current_prompt}:此节点中的当前提示。{last_run}:此节点的上一次输入和输出。
/ 或 {} 直接插入到提示编辑器中,为模型提供迭代改进所需的上下文。
步骤
打开提示生成器 点击魔杖图标启动提示生成器,它会预先填充一条修复指令,例如:- 自定义指令
- 使用理想输出框
- 生成优化提示
版本管理
每次提示词重新生成都会保存为一个新版本:- 输出区域包含一个下拉菜单,标签为“版本1”、“版本2”等。
- 你可以在不同版本之间切换以比较结果。
- 当只有一个版本时,下拉菜单将隐藏。
备注
- last_run包含此大语言模型节点特定的上一次输入/输出。
- 这与代码节点的当前代码或错误消息不同。
- 此功能在不破坏工作流程连续性的情况下改进提示迭代。