Dify大模型节点中「系统提示词」和「用户提示词」的区别
在Dify的大模型节点中,系统提示词和用户提示词扮演不同角色,共同构成完整的对话上下文:
1. 系统提示词(System Prompt)
定义:给AI模型的顶层指令,设定AI的角色、行为准则和任务框架。
特点:
- 优先级最高:影响整个对话的基础行为
- 不可见性:用户通常看不到这部分指令
- 持续性:在整个对话会话中持续生效
适用场景:
- 设定AI角色(如"你是一位专业的财务分析师")
- 定义输出格式(如"必须用JSON格式返回")
- 设置行为边界(如"只回答与税务相关的问题")
- 提供背景知识(如"以下是公司内部数据...")
示例:
你是一位精通中国税务法规的专家。请基于用户提供的发票信息,准确计算可抵扣税额。回答必须简洁、专业,只包含计算结果和简要依据。
2. 用户提示词(User Prompt)
定义:用户当前轮次输入的具体问题或指令,通常包含变量和上下文。
特点:
- 动态变化:每轮对话可以不同
- 具体指向:针对当前任务的具体要求
- 可包含变量 :如
{``{context}}、{``{query}}
适用场景:
- 用户具体问题(如"这张发票能抵扣多少税?")
- 需要处理的具体数据(如发票内容)
- 当前轮次的特殊要求
示例:
请分析以下发票信息:
{{invoice_data}}
问题:{{user_question}}
3. 核心区别对比
| 维度 | 系统提示词 | 用户提示词 |
|---|---|---|
| 作用范围 | 整个对话会话 | 当前单次对话 |
| 变更频率 | 低频,基本固定 | 高频,每轮变化 |
| 可见性 | 用户不可见 | 用户可见/可输入 |
| 优先级 | 基础框架,约束用户提示 | 具体指令,受系统提示约束 |
| 典型内容 | 角色、规则、格式、边界 | 问题、数据、当前需求 |
4. 在Dify工作流中的组合使用
标准组合示例:
系统提示词:
你是一位数据提取专家。从用户提供的文本中提取金额信息,并转换为万元单位。只返回JSON格式结果,不要额外解释。
用户提示词:
请处理以下文本:
"公司A报销差旅费888,888元,公司B报销50,000元"
变量结合示例:
系统提示词:
你是一位精通{{domain}}的专家。请基于用户问题提供专业解答。
用户提示词:
{{user_query}}
5. 最佳实践建议
-
系统提示词:
- 写清楚角色定位
- 明确输出格式要求
- 设定回答风格(简洁/详细/专业等)
- 包含必要的背景知识
-
用户提示词:
- 使用变量传递动态数据
- 只放当前轮次需要处理的内容
- 保持简洁,避免与系统提示重复
-
调试技巧:
- 如果AI行为异常,先检查系统提示词
- 如果单轮回答错误,重点看用户提示词
- 可以在用户提示词中覆盖系统提示的某些指令(如果需要)