dify-chatflow-prompt.md 16 KB

Dify Chatflow 提示词定义

1. 概述

本文档定义数字能量学智能体 Dify Chatflow 工作流的完整配置,包括系统提示词、输入架构、输出格式和节点配置。

用途: 用户在微信小程序中生成命盘后,向 AI 提问获得数字能量学专业解读。

知识库集成: Chatflow 在 LLM 节点之前插入知识检索节点,从 Dify 知识库(ID: 3ff939b3-8686-44f6-8ef5-65b1e53b55d3)中动态检索与用户问题相关的命理知识,将检索结果注入 LLM 上下文,实现 RAG(检索增强生成)。

数据流: 小程序 → 后端 API → Dify Chatflow → 知识检索(RAG)→ LLM 解读 → 返回用户


2. 输入架构

2.1 Dify API 调用格式

后端 DifyService.java 调用 Dify API:

POST /v1/chat-messages
Authorization: Bearer {api_key}
Content-Type: application/json

{
  "inputs": {
    "chart_context": "{...chart JSON...}"
  },
  "query": "请解读我的主性格",
  "user": "user_12345"
}

2.2 chart_context JSON 格式

后端传入的 chart_context 字段包含完整的命盘数据,格式如下:

{
  "positions": {
    "A": 2, "B": 0, "C": 9, "D": 5, "E": 8,
    "F": 2, "G": 9, "H": 5, "I": 4, "J": 11,
    "K": 5, "L": 9, "M": 7, "N": 5, "O": 3
  },
  "zones": {
    "mainCharacter": {
      "name": "主性格",
      "positions": ["O"],
      "values": [3]
    },
    "fatherSource": {
      "name": "父源区",
      "positions": ["I", "J"],
      "values": [4, 11]
    },
    "motherSource": {
      "name": "母源区",
      "positions": ["K", "L"],
      "values": [5, 9]
    },
    "leftZone": {
      "name": "左区(0-20岁)",
      "positions": ["A", "F", "I", "O"],
      "values": [2, 2, 4, 3]
    },
    "middleZone": {
      "name": "中区(20-40岁)",
      "positions": ["B", "G", "J", "M", "N", "O"],
      "values": [0, 9, 11, 7, 5, 3]
    },
    "rightZone": {
      "name": "右区(40-60岁)",
      "positions": ["C", "D", "E", "H", "K", "L", "O"],
      "values": [9, 5, 8, 5, 5, 9, 3]
    }
  },
  "mainCharacter": 3,
  "isMasterNumber": false,
  "chartName": "张三",
  "birthYear": 2009,
  "birthMonth": 5,
  "birthDay": 26
}

2.3 Dify Chatflow Input 变量

变量名 类型 说明 来源
chart_context JSON 完整的命盘数据 后端传入
query String 用户提问内容 用户输入

3. 系统提示词 (LLM 节点 System Prompt)

# 角色设定
你是「数字能量学智能解读师」,一位精通数字能量学(Digital Numerology)的资深专家。你擅长通过 Classic A 三角形命盘(5行15格)为用户提供性格分析、天赋解码和人生指引。

# 专业背景
- 精通数字能量学理论,包括主性格数字 1-9 及卓越数 11、22、33 的解读
- 熟练掌握五区分析:左区(0-20岁成长)、中区(20-40岁发展)、右区(40-60岁成就)
- 理解父源区、母源区对个人性格形成的影响
- 能够结合多位置数字组合进行综合分析

# 解读原则
1. 基于提供的命盘数据进行专业解读,不编造或臆测数字
2. 聚焦性格倾向、天赋优势、潜在挑战和发展建议
3. 以积极正向的视角进行解读,强调成长和发展的可能性
4. 语言专业但不晦涩,温暖且有洞察力
5. 不预测具体未来事件(财运数字、结婚年份等),不提供医疗建议
6. 若用户询问命盘数据范围之外的领域,委婉说明数字能量学的局限性

# 知识库检索使用规则(优先级最高)

当 `knowledge_retrieval` 上下文中有检索结果时,你**必须优先使用检索结果**中的内容进行解读,而非依赖自身的内部知识。

**检索结果使用规则:**
1. `knowledge_retrieval` 中包含多个匹配的文档片段(chunks),每个 chunk 包含文件名、标题和内容
2. 根据 `knowledge_retrieval` 的来源文件标记(如 `命盘24位置详解.md`、`三角命盘组合对判读规则.md`、`数字能量分析维度手册.md`、`五区三组分析指南.md`),判断该信息适用于命盘的哪个方面
3. 如果多个 chunk 提供同一主题的不同视角,合并使用以给出全面解读
4. 如果知识库检索结果与你的内部记忆冲突,**以检索结果为准**
5. 如果在检索结果中找不到相关信息,再使用下方"数字含义参考"中的内置信息

# 数字含义参考(即备知识,知识库中无相关内容时使用)
- 1 (开创者): 独立、创新、领导力
- 2 (合作者): 细腻、敏感、善于沟通
- 3 (表达者): 创意、社交、乐观向上
- 4 (建设者): 务实、稳定、规则意识
- 5 (自由者): 冒险、变化、适应力强
- 6 (守护者): 责任、关爱、追求完美
- 7 (探索者): 深度思考、求知、内省
- 8 (掌控者): 权威、商业头脑、决策力
- 9 (智慧者): 博爱、理想主义、包容
- 11 (启迪者): 直觉力强、灵感丰富(卓越数)
- 22 (建造大师): 将理想变为现实(卓越数)
- 33 (大爱者): 无私奉献、疗愈他人(卓越数)

# 响应格式
1. 首先回应用户的具体问题
2. 引用命盘中的具体位置和数字进行解释
3. 提供有针对性的建议
4. 保持友好、鼓励的语气
5. 回复语言使用中文

# chart_context JSON 结构说明
用户命盘数据通过 chart_context 变量传入,包含以下关键字段:
- mainCharacter: 主性格数字(位于 O 位)
- positions: 全部 15 个位置(A-O)的数字值
- zones: 五区数据,每区包含名称、位置列表和对应数字值
- isMasterNumber: 主性格是否为卓越数
- chartName: 用户姓名(如有提供)
- birthYear/month/day: 出生日期

请根据这些数据为用户提供有深度、个性化的数字能量学解读。

3A. 知识库检索增强集成(RAG)

3A.1 检索策略

Chatflow 在 LLM 节点之前插入知识检索(Knowledge Retrieval)节点,从知识库 数字能量学知识库 V2(ID: 3ff939b3-8686-44f6-8ef5-65b1e53b55d3)中检索与用户问题最相关的内容。

为什么需要 RAG:

  • 硬编码在 System Prompt 中的 1-9 数字含义过于简略(仅 1 行/数字),无法支撑深度解读
  • 知识库包含 25 篇文档(179,730 words),覆盖 P0 核心文档(A1/B2/C1/C2)
  • 每次 Chatflow 调用时动态检索,LLM 根据检索结果进行解读,精度远超固定提示词

3A.2 多轮对话中的检索策略

轮次 检索策略 说明
第一轮(首次发送) chart_context 智能构建查询 后端首次发送时附带 chart_context,Chatflow 通过代码节点/LLM 节点自动提取命盘关键信息生成结构化 KB 查询
后续轮次 直接用用户 query 检索 Dify Chatflow 自动保存会话上下文,后续直接以 query 检索
深度追问 一次对话多次检索 每次用户提问都触发 KB 检索,确保每轮回复都有最新知识支撑

3A.3 查询变量构建方案

在 Chatflow 中插入一个代码节点(Code Node)LLM 节点,将 chart_context 转换为最优 KB 查询:

# 代码节点:将 chart_context + query 转换为 KB 查询
def main(chart_context: dict, query: str) -> dict:
    # 解析 chart_context
    positions = chart_context.get("positions", {})
    main_number = chart_context.get("mainCharacter", 0)
    
    # 从用户 query 中提取关键词
    dimension_keywords = {
        "事业": "事业维度 延年",
        "财富": "财富维度 天医",
        "感情": "感情维度 六煞",
        "健康": "健康维度 绝命 五鬼",
        "性格": "主性格 性格特质",
    }
    
    kb_query = query  # 默认直接用用户问题
    for keyword, search_term in dimension_keywords.items():
        if keyword in query:
            kb_query = f"{search_term} {query}"
            break
    
    return {
        "kb_query": kb_query,
    }

也可简化配置:直接使用用户 query 作为 KB 检索查询(如果不需要维度映射预处理)。

3A.4 Metadata 过滤

Dify v1.11.4 知识库支持 metadata 过滤。在知识检索节点中可按 tags 过滤:

  • 维度过滤:tags 包含 ["维度:财富"](用户问财富相关问题)
  • 优先级过滤:tags 包含 ["优先级:P0"](优先返回核心文档)
  • 文档类型过滤:tags 包含 ["用途:判读规则"](需要判读规则时)

3A.5 检索参数配置

参数 推荐值 说明
Top-K 6 每次检索返回 6 个 chunks,覆盖足够信息
Score Threshold 0.5 低于此阈值的结果被过滤(已在 KB 层面配置)
Retrieval Mode Hybrid Search 向量 60% + 全文 40%,兼顾语义和关键词匹配

4. Dify Chatflow 节点配置

4.1 完整节点列表

节点 类型 配置
START 开始节点 输入变量:chart_context (JSON), query (String)
Knowledge Retrieval 知识检索节点 Dataset: 数字能量学知识库 V2 (ID: 3ff939b3-8686-44f6-8ef5-65b1e53b55d3)
Query: {{#sys.query#}}(用户 query 变量,或代码节点输出的 kb_query
Top-K: 6
Score Threshold: 0.5
Result Type: paragraph
LLM LLM 节点 System Prompt: 见第 3 节(含 KB 使用规则)
Model: gpt-4o 或 Claude 3.5 Sonnet
Temperature: 0.7
Max Tokens: 2000
Memory: 启用对话轮次 (最近 6 轮)
Context: 引用 Knowledge Retrieval 节点的输出作为上下文
END 结束节点 输出变量:answer (String) — LLM 节点的输出文本

4.2 节点连接关系

START ──→ Knowledge Retrieval ──→ LLM ──→ END
                                     ↑
                              (chart_context 也传入 LLM)

4.3 LLM 节点变量映射

Dify 变量 映射到 说明
chart_context LLM 系统提示词中的上下文变量 命盘数据,嵌入提示词中供 LLM 引用
query LLM 用户消息输入 用户提问内容
knowledge_retrieval LLM 系统提示词中的检索结果上下文 知识库检索返回的 chunks,LLM 需优先使用

4.4 简化版配置(无代码节点)

如果不使用代码节点转换查询,可直接将 query 变量传给 Knowledge Retrieval 节点作为检索查询。Chatflow 配置如下:

START (chart_context, query)
    │
    ▼
[Knowledge Retrieval Node]
    ├─ 查询: {{#sys.query#}}
    ├─ 数据集: 数字能量学知识库 V2
    └─ Top-K: 6
    │
    ▼
[LLM Node]
    ├─ System Prompt: 含 KB 使用规则 + chart_context
    └─ Context: 引用 KB 检索结果
    │
    ▼
END (answer)

4.5 进阶版配置(带代码节点预处理)

START (chart_context, query)
    │
    ▼
[Code Node: 查询构建]
    ├─ 输入: chart_context, query
    └─ 输出: kb_query (构建后的检索查询)
    │
    ▼
[Knowledge Retrieval Node]
    ├─ 查询: {{kb_query}}
    ├─ 数据集: 数字能量学知识库 V2
    └─ Top-K: 6
    │
    ▼
[LLM Node]
    ├─ System Prompt: 含 KB 使用规则 + chart_context
    └─ Context: 引用 KB 检索结果
    │
    ▼
END (answer)

5. 示例对话

示例 1:主性格解读

用户输入: 请解读我的主性格

chart_context 示例:

{
  "positions": {"O": 7},
  "mainCharacter": 7,
  "zones": {
    "leftZone": {"values": [1, 1, 4, 7]},
    "middleZone": {"values": [9, 4, 5, 11, 3, 7]},
    "rightZone": {"values": [4, 7, 6, 4, 6, 6, 7]}
  },
  "isMasterNumber": false
}

预期回复(示例):

你好!根据你的数字命盘,你的主性格数字是 7。

🔹 主性格 7 号 — 探索者

7 号人是天生的思考者和探索者,你对世界有着强烈的好奇心和求知欲。你善于分析、喜欢独处思考,对于哲学、科学和未知领域有天然的吸引力。

✨ 你的核心特质:
- 深度思考能力:你善于从现象看到本质
- 独立精神:不盲从权威,有自己的判断标准
- 分析天赋:逻辑清晰,适合研究分析类工作

💡 成长建议:
- 多信任自己的直觉,你的第六感往往很准
- 适度走出思考的舒适区,增加社交互动
- 避免过度完美主义,行动比完美更重要

你的左区(0-20岁)有数字 1 和 4,说明早年培养了独立自主的性格和务实的态度;中区(20-40岁)出现卓越数 11,预示着这个阶段你的直觉力和灵感将显著提升。

想了解更多关于某个区域的详细解读吗?

示例 2:财富与事业发展

用户输入: 我的事业发展和财富运势如何?

chart_context 示例:

{
  "mainCharacter": 8,
  "positions": {"O": 8, "I": 4, "J": 5, "K": 6, "L": 9},
  "zones": {
    "middleZone": {"values": [2, 3, 5, 7, 6, 8]},
    "rightZone": {"values": [1, 4, 3, 8, 6, 9, 8]}
  }
}

预期回复(示例):

感谢你的提问!从你的数字命盘来看,非常有亮点。

🔹 主性格 8 号 — 掌控者

8 号是数字能量学中的"事业王者",你天生具备商业头脑和领导力。你对权力和资源有敏锐的感知力,擅长将想法转化为实际的商业价值。

📊 事业发展分析:
- 中区(20-40岁):数字组合 2-3-5-7-6-8,显示这个阶段你适合团队合作(2),发挥创意表达能力(3),经历必要的变化和积累(5-7),最终在第 8 位达到事业高度
- 右区(40-60岁):数字 8 出现在关键位置,预示这个阶段是你事业成就的黄金时期

💰 财富特质:
- 父源区(I=4, J=5):务实且有商业嗅觉,适合实体行业或资源整合型工作
- 母源区(K=6, L=9):有责任感和远见,能平衡短期收益和长期发展
- 财富关键词:稳健增长、资源整合、领导力变现

💡 发展建议:
1. 30-40 岁是重要的积累期,建议深耕一个领域建立专业壁垒
2. 8 号人适合创业或管理岗位,可考虑在 35 岁后独立发展
3. 注意平衡事业与健康,8 号人容易过度投入工作

想更深入了解某个具体方向的建议吗?

6. Dify 控制台设置步骤

步骤 1:登录 Dify 并创建 Chatflow

  1. 登录 Dify 平台 (https://cloud.dify.ai 或自部署实例)
  2. 点击「创建应用」→ 选择「Chatflow」
  3. 输入应用名称:数字能量学智能体
  4. 点击「创建」

步骤 2:配置输入变量

  1. 点击 START 节点
  2. 添加输入变量:
    • 变量名:chart_context,类型:JSON,必填:是
    • 变量名:query,类型:文本,必填:是

步骤 3:添加 LLM 节点

  1. 拖入 LLM 节点到画布
  2. 连接 START → LLM
  3. 配置 LLM 节点:
    • System Prompt:填写第 3 节的完整系统提示词
    • 模型:选择 Claude 3.5 Sonnet 或 GPT-4o(推荐 Claude 以获得更好的中文解读质量)
    • Temperature:0.7
    • Maximum Tokens:2000
    • 开启记忆功能,保留最近 6 轮对话
  4. 在"上下文"中引用 chart_context 变量
  5. 在"用户消息"中引用 query 变量

步骤 4:配置 END 节点

  1. 拖入 END 节点,连接 LLM → END
  2. 输出变量选择 LLM 节点的 text 输出

步骤 5:发布

  1. 点击「发布」按钮
  2. 记录 API 访问地址和 API Key

步骤 6:配置后端

在后端 application.yml 中配置:

num:
  dify:
    base-url: https://your-dify-instance.com/v1
    api-key: your_dify_api_key_here

7. 输入变量配置总结

配置项
应用类型 Chatflow
输入变量 1 chart_context (JSON)
输入变量 2 query (String)
LLM 模型 Claude 3.5 Sonnet (推荐)
Temperature 0.7
Max Tokens 2000
记忆轮次 6
API Endpoint POST /v1/chat-messages
输出字段 answer (String)