Dify 提示词编写实战:从原理到最佳实践
·
背景与痛点
在构建基于 Dify 的对话系统时,开发者常遇到以下问题:
- 意图模糊:提示词未能清晰定义任务边界,导致系统响应偏离预期
- 响应不一致:相同提示词在不同场景下输出结果差异较大
- 可控性差:难以通过提示词精确控制输出格式和内容范围

技术原理
Dify 提示词工作机制包含三个核心层面:
- 语义解析层:将自然语言提示转换为可执行的任务表示
- 上下文管理:维护对话历史和多轮状态
- 输出约束:通过结构化指令控制生成范围
关键设计要素:
- 指令模板:使用
## 指令标识核心任务 - 示例演示:通过
->符号展示输入输出范例 - 格式规范:JSON Schema 定义返回值结构
编写规范
基础结构
## 角色定义
你是一个专业的客服助手
## 指令
根据用户问题提供准确解答
## 约束
- 仅回答产品相关问题
- 拒绝敏感话题
## 示例
用户:如何退货?
-> 查看订单页面点击"申请退货"按钮
高级技巧
-
动态变量:
{{产品名称}} 支持以下功能:... -
多轮对话:
[历史] 用户:查询订单 系统:请提供订单号

代码示例
客服场景
"""
## 角色
电商客服机器人
## 指令
处理订单查询请求
## 输出格式
{
"status": "shipped|delivered",
"tracking_number": str
}
"""
知识问答
"""
## 指令
回答编程问题,给出可执行代码
## 示例
用户:Python如何反转列表?
-> ```python
lst = [1,2,3]
print(lst[::-1]) """
## 性能优化
1. **长度控制**:
- 核心指令保持在200字内
- 示例不超过5组
2. **复杂度管理**:
- 避免嵌套条件语句
- 使用明确的枚举值替代开放描述
## 避坑指南
- ❌ 模糊指令:"回答用户问题"
- ✅ 明确指令:"根据订单号查询物流状态"
- ❌ 开放约束:"不要回答不合适的内容"
- ✅ 具体约束:"不讨论政治、宗教话题"
## 实践任务
设计一个餐厅推荐提示词,要求:
1. 支持按菜系筛选
2. 输出包含人均价格
3. 限制推荐范围为3公里内
提交格式:
```markdown
## 指令
...
## 示例
...
期待在评论区看到大家的创意实现!
更多推荐


所有评论(0)