# Dify智能体搭建实战指南：<br>从零构建全能个人助手(保姆级教程)

<div align="center">
  <img src="https://github.com/Tasselszcx.png" width="80" height="80" style="border-radius: 50%;" />
  <br />
  <strong>作者：</strong> <a href="https://github.com/Tasselszcx">Tasselszcx</a>
  <br />
  <em>原创教程 | 保姆级指南 | 完整实践</em>
</div>

## 1. 安装所需插件

在构建智能体之前，需要先完成必要的插件安装和 MCP 配置。如图1所示，按照图中文字指示一步步安装本章节所需插件。

<div align="center">
  <img src="./Extra03-figures/image1.jpg" alt="插件安装示意图" width="90%"/>
  <p>图1 插件安装示意图</p>
</div>

## 2. 配置MCP（Model Context Protocol）

关于 MCP 的详细原理这里不展开，我们重点演示如何使用云端部署的 MCP 服务。本案例使用国内的魔搭社区 MCP 市场进行演示，具体步骤如下：

**(1) 进入ModelScope社区**：[https://www.modelscope.cn/home](https://www.modelscope.cn/home)

**(2) 注册账号并登录**，如图2所示

<div align="center">
  <img src="./Extra03-figures/image2.jpg" alt="ModelScope注册登录界面" width="90%"/>
  <p>图2 ModelScope注册登录界面</p>
</div>

**(3) 进入高德地图MCP配置页面**
   - 登录后，按照图3所示，一步步点击进入高德地图MCP配置页面
   - 页面应如图4所示

<div align="center">
  <img src="./Extra03-figures/image3.jpg" alt="高德地图MCP入口指引" width="90%"/>
  <p>图3 高德地图MCP入口指引</p>
</div>

<div align="center">
  <img src="./Extra03-figures/image4.jpg" alt="高德地图MCP配置页面" width="90%"/>
  <p>图4 高德地图MCP配置页面</p>
</div>

**(4) 进入高德开放平台**：[https://console.amap.com/dev/index](https://console.amap.com/dev/index)
   - 按照图5中文字指示新建应用

<div align="center">
  <img src="./Extra03-figures/image5.jpg" alt="高德开放平台新建应用" width="90%"/>
  <p>图5 高德开放平台新建应用</p>
</div>

**(5) 创建api_key**
   - 如图6所示，一步步创建api_key
   - 将创建好的api_key输入图4的红框中，即可显示配置成功
   - 配置成功页面如图7所示

<div align="center">
  <img src="./Extra03-figures/image6.jpg" alt="创建api_key步骤" width="90%"/>
  <p>图6 创建api_key步骤</p>
</div>

<div align="center">
  <img src="./Extra03-figures/image7.jpg" alt="MCP配置成功页面" width="90%"/>
  <p>图7 MCP配置成功页面</p>
</div>

**至此，整个高德地图MCP配置完成！**

## 3. Agent设计与效果展示

本案例将创建一个全方位的私人助手，涵盖以下功能模块：

- 日常生活问答
- 文案润色优化
- 多模态内容生成（图片、视频）
- MCP 工具集成（高德地图、饮食推荐、新闻资讯）
- 数据查询与可视化分析

整个智能体的编排架构如图8所示。

<div align="center">
  <img src="./Extra03-figures/image8.jpg" alt="智能体编排架构图" width="90%"/>
  <p>图8 智能体编排架构图</p>
</div>

下面介绍如何搭建这样一个智能体的Chatflow：

### （1）创建Chatflow空白应用
- 按照图9及图10，一步步创建Chatflow空白应用

<div align="center">
  <img src="./Extra03-figures/image9.jpg" alt="创建Chatflow步骤1" width="90%"/>
  <p>图9 创建Chatflow步骤1</p>
</div>

<div align="center">
  <img src="./Extra03-figures/image10.jpg" alt="创建Chatflow步骤2" width="90%"/>
  <p>图10 创建Chatflow步骤2</p>
</div>

### （2）创建问题分类器
- 先创建一个问题分类器用于对输入问题进行分类
- 分类器所填内容如图11所示

<div align="center">
  <img src="./Extra03-figures/image11.jpg" alt="问题分类器配置" width="80%"/>
  <p>图11 问题分类器配置</p>
</div>

### （3）日常助手模块实现

这是一个基础的对话模块，配置大语言模型和时间工具，作为兜底的通用问答服务。

**配置说明**：
- 配置说明及连线参考图12
- 具体flow中各节点分别为"开始-问题分类器-LLM-直接回复"
- **后续我们直接用节点flow进行说明每个模块的flow**

<div align="center">
  <img src="./Extra03-figures/image12.jpg" alt="日常助手模块配置" width="90%"/>
  <p>图12 日常助手模块配置</p>
</div>

**LLM节点的system_prompt如下**：
```
# Role: 日常问题咨询专家

## Profile
- language: 中文
- description: 专门回答用户日常生活中的一般性问题，提供实用、准确、易懂的建议和解答
- background: 拥有丰富的生活经验和广泛的知识储备，擅长将复杂问题简单化
- personality: 亲切友好、耐心细致、务实可靠
- expertise: 日常生活、健康养生、家庭管理、人际关系、实用技巧


## Skills

1. 问题分析能力
   - 快速理解: 迅速把握用户问题的核心要点
   - 分类识别: 准确判断问题所属的生活领域
   - 需求挖掘: 深入理解用户潜在需求
   - 优先级排序: 合理评估问题的重要性和紧急性

2. 解答提供能力
   - 知识整合: 综合运用多领域知识提供解答
   - 方案制定: 提供具体可行的解决方案
   - 步骤分解: 将复杂问题拆解为简单步骤
   - 替代方案: 准备多种备选方案供用户选择

3. 沟通表达能力
   - 语言通俗: 使用简单易懂的日常用语
   - 逻辑清晰: 条理分明地组织回答内容
   - 举例说明: 通过具体案例帮助理解
   - 重点突出: 强调关键信息和注意事项

## Rules

1. 回答原则：
   - 实用性优先: 确保提供的建议具有可操作性
   - 准确性保证: 基于可靠信息和常识给出回答
   - 中立客观: 避免个人偏见和主观臆断
   - 适度建议: 根据问题复杂程度提供适当深度的解答

2. 行为准则：
   - 及时响应: 快速回应用户的问题
   - 耐心细致: 对重复或简单问题保持耐心
   - 积极引导: 鼓励用户提供更多背景信息
   - 持续改进: 根据反馈优化回答质量


## Workflows

- 目标: 为用户提供实用、可靠的日常问题解决方案
- 步骤 1: 仔细阅读并理解用户提出的日常问题
- 步骤 2: 分析问题类型和用户潜在需求
- 步骤 3: 基于常识和经验提供具体可行的建议
- 步骤 4: 用通俗易懂的语言组织回答内容
- 步骤 5: 检查回答的实用性和安全性


## Initialization
作为日常问题咨询专家，你必须遵守上述Rules，按照Workflows执行任务。
```

**演示效果**：
如图13所示：

<div align="center">
  <img src="./Extra03-figures/image13.png" alt="日常助手演示效果" width="80%"/>
  <p>图13 日常助手演示效果</p>
</div>

### （4）文案优化模块实现

根据 OpenAI 的数据报告，超过60%的用户使用 ChatGPT 进行文本优化相关任务，包括润色、修改、扩写、缩写等。因此，文案优化是高频需求场景，我们将其作为第二个核心功能模块。

**具体配置**：
- 具体flow中各节点分别为"开始-问题分类器-LLM-直接回复"，同（3）

**LLM节点的system_prompt如下**：
```
# 一、 角色人设（Role）
你是一位专业的文案优化专家，拥有丰富的营销文案写作和优化经验，擅长提升文案的吸引力、转化率和可读性。你的视角是站在目标受众和营销目标的角度，专业度边界限于文案优化领域，不涉及技术实现或产品开发。

# 二、 背景（Background）
用户提供了一段原始文案，需要你对其进行优化，以提升其整体效果。背景信息包括：文案可能用于营销、品牌推广或信息传达等场景，但具体用途未详细说明。已知条件是用户希望文案更吸引人、清晰或具有说服力，但未提供原始文案内容，因此你需要基于通用优化原则工作。

# 三、 任务目标（Task）
- 分析并优化文案的结构、语言和风格，使其更符合目标受众的偏好。
- 提升文案的吸引力、可读性和转化潜力，确保信息传达清晰。
- 根据常见优化原则（如简洁性、情感共鸣、行动号召等）进行调整，不涉及内容重写，除非必要。
- 在保持核心信息的前提下，适当扩展和丰富文案内容，提供更全面的优化版本。

# 四、 限制提示（Limit）
- 避免改变原始文案的核心信息或意图，除非用户明确要求。
- 不要添加虚构或无关内容，确保优化基于逻辑和最佳实践。
- 避免使用过于技术性或专业术语，除非目标受众是专业人士。
- 不涉及对图片、布局或其他非文本元素的优化。

# 五、 输出格式要求（Example）
输出应为优化后的文案文本，结构清晰，语言流畅，内容详实。例如：
- 如果原始文案是“我们的产品很好，快来买吧”
优化后可以是：“在这个充满选择的时代，真正打动人心的从来不是浮夸的宣传，而是经得起时间和用户考验的好产品。我们的产品正是如此。它不仅在设计上注重细节与品质，更在功能上不断打磨与创新，只为给每一位用户带来更好的使用体验。无论是外观的质感，还是性能的稳定，我们始终坚持高标准严要求，力求让每一位选择我们的顾客都能感受到物超所值的惊喜。
我们深知，购买一款产品，不仅仅是一次简单的消费，更是一种对生活方式的选择。因此，我们从选材、工艺到售后服务的每一个环节，都倾注了满满的诚意与专业，用心守护您的每一次体验。无论您是追求实用、注重品质，还是想要与众不同的个性化，我们的产品都能为您提供理想的解决方案。
现在，就让我们用行动来证明一切。真正的好产品，不需要过多修饰，它本身就是最好的代言人。立即行动，选择我们，让品质改变生活，从此拥有与众不同的体验！”
- 输出应直接呈现优化内容，无需额外解释或注释，除非用户要求。请确保优化后的文案内容更加丰富和完整，优化后的文案文本须超过500字。
```


**演示效果**：
如图14所示：

<div align="center">
  <img src="./Extra03-figures/image14.png" alt="文案优化演示效果" width="80%"/>
  <p>图14 文案优化演示效果</p>
</div>

### （5）多模态生成模块（图片，视频）

图片和视频生成是另一个高频应用场景。随着豆包生图、Google Imagen 等模型的进化，以及可灵、Google Veo 3、OpenAI Sora 2 等视频生成技术的突破，多模态内容生成的质量已达到实用水平。

**图片生成配置**：
- 本案例使用豆包插件实现图片和视频生成
- 关于豆包插件的图片、视频生成权限及api_key获取，请参考这篇blog，讲解的极其清晰，建议直接看blog中的第3、4部分：
  [https://blog.csdn.net/sjkflw121150/article/details/148480867#:~:text=3.-,%E8%B0%83%E7%94%A8Doubao%E6%96%87%E7%94%9F%E5%9B%BE%E5%B7%A5%E5%85%B7,-%E8%B0%83%E7%94%A8%20Doubao](https://blog.csdn.net/sjkflw121150/article/details/148480867#:~:text=3.-,%E8%B0%83%E7%94%A8Doubao%E6%96%87%E7%94%9F%E5%9B%BE%E5%B7%A5%E5%85%B7,-%E8%B0%83%E7%94%A8%20Doubao)
- 参考图15，创建豆包生图这一块的flow
- flow中各节点分别为"开始-问题分类器-豆包T2I-直接回复"

<div align="center">
  <img src="./Extra03-figures/image15.jpg" alt="豆包生图flow配置" width="90%"/>
  <p>图15 豆包生图flow配置</p>
</div>

**生图效果**：
如图16所示：

<div align="center">
  <img src="./Extra03-figures/image16.png" alt="豆包生图效果展示" width="80%"/>
  <p>图16 豆包生图效果展示</p>
</div>

**视频生成配置**：
- 视频生成与图片生成同理，火山引擎中开通文生视频权限即可，见图17的说明
- 文生视频flow中各节点分别为"开始-问题分类器-豆包T2V-直接回复"

<div align="center">
  <img src="./Extra03-figures/image17.jpg" alt="文生视频权限开通" width="90%"/>
  <p>图17 文生视频权限开通</p>
</div>

**生视频效果**：
如图18所示：

<div align="center">
  <img src="./Extra03-figures/image18.png" alt="豆包生视频效果展示" width="80%"/>
  <p>图18 豆包生视频效果展示</p>
</div>

### （6）MCP 工具集成（高德地图、饮食推荐、新闻资讯）

在前面我们已经完成了 MCP 的配置，现在将其集成到智能体中。

**配置步骤**（参考图19）：

1. 选择支持 MCP 调用的Agent节点
2. 选择 ReAct 模式
3. 添加"获取时间戳"工具
4. 配置 MCP 服务（找到图7，选择 SSE 模式，删除 mcp-server 前缀后把其他信息复制过来）
5. 填写相应的提示词

<div align="center">
  <img src="./Extra03-figures/image19.jpg" alt="MCP工具集成配置步骤" width="90%"/>
  <p>图19 MCP工具集成配置步骤</p>
</div>

**具体配置**：
- 最后Agent节点填写信息可参考图20
- MCP服务调用的flow中各节点分别为"开始-问题分类器-Agent-直接回复"

<div align="center">
  <img src="./Extra03-figures/image20.jpg" alt="Agent节点配置详情" width="50%"/>
  <p>图20 Agent节点配置详情</p>
</div>

**效果展示**：
- 高德助手效果：如图21所示

<div align="center">
  <img src="./Extra03-figures/image21.png" alt="高德助手效果展示" width="80%"/>
  <p>图21 高德助手效果展示</p>
</div>

- 饮食助手效果：如图22所示

<div align="center">
  <img src="./Extra03-figures/image22.png" alt="饮食助手效果展示" width="80%"/>
  <p>图22 饮食助手效果展示</p>
</div>

- 新闻助手效果：如图23所示

<div align="center">
  <img src="./Extra03-figures/image23.png" alt="新闻助手效果展示" width="50%"/>
  <p>图23 新闻助手效果展示</p>
</div>

### （7）数据查询与分析模块

<strong>数据查询与分析模块</strong>

数据处理是智能体的重要能力之一。本模块演示如何在 Dify 中连接数据库，实现数据查询和可视化分析。

首先安装数据查询工具插件，本案例使用 `rookie-text2data` 插件。数据查询的关键在于为大模型提供清晰的表结构和字段信息，使其能够生成准确的 SQL 查询语句。常见做法包括：

- 直接提供数据表的 DDL 语句
- 提供表名和字段名的对应关系说明

配置数据库连接信息（IP地址、数据库名称、端口、账号、密码等），如图24所示。查询结果需要通过大模型节点进行整理，转换为易于理解的自然语言输出。

<div align="center">
  <img src="./Extra03-figures/image24.png" alt="数据库配置" width="50%"/>
  <p>图24 数据库配置</p>
</div>

**提示词设置：**
```
# 一、 角色人设（Role）
您是一位专业的数据查询师，擅长数据整理，具有清晰的逻辑思维和简洁表达能力。

# 二、 背景（Background）
用户提供了从数据库中查询到的原始数据，这些数据可能存在格式不统一、字段缺失、重复记录等问题，需要经过专业整理后才能有效展示。

# 三、 任务目标（Task）
1. 对原始数据进行归纳和整理
2. 按照正确的逻辑对数据进行分类和排序
3. 数据展示突出关键信息和数据洞察
4. 提供易于理解的数据展示

# 四、 限制提示（Limit）
1. 不得随意删除重要数据
2. 避免使用过于复杂或专业的统计术语
3. 不得篡改原始数据的真实值
4. 避免展示过多冗余信息，保持简洁明了
5. 不得泄露敏感数据或个人隐私信息

# 五、 输出格式要求（Example）
 数据概览：简要说明数据内容即可
```

效果展示如图25所示：

<div align="center">
  <img src="./Extra03-figures/image25.png" alt="数据查询助手效果" width="80%"/>
  <p>图25 数据查询助手</p>
</div>

**提示词设置：**
```
# 一、 角色人设（Role）
你是一位专业的数据分析师，具备数据整理、清洗和可视化能力，能够从原始数据中提取关键信息并转化为直观的可视化展示。

# 二、 背景（Background）
用户已从数据库中查询到一批原始数据，这些数据可能包含多个字段、存在缺失值或格式不一致的情况，需要经过整理后生成可视化图表。

# 三、 任务目标（Task）
#工作流程
1. 数据分析
按照合理的规则进行数据分析整理总结
2. 分析 & 可视化
至少生成 1 幅图表（柱状 / 折线 / 饼图任选其1或以上）
可调用工具：“generate_pie_chart" | "generate_column_chart" | "generate_line_chart"

# 四、 限制提示（Limit）
1. 避免使用过于复杂的图表类型，确保可视化结果易于理解
2. 不要忽略数据质量问题，必须进行必要的数据清洗
3. 避免在可视化中使用过多颜色或元素，保持简洁明了
4. 不要遗漏关键数据的标注和说明
5.必须进行总结和图表生成，不管数据多少

# 五、 输出格式要求（Example）
请按照以下格式输出：
1. 数据概况总结（不要输出字段名称，不要分点，一小段话就行）
2. 展示生成的图表
```

<div align="center">
  <img src="./Extra03-figures/image26.png" alt="数据分析助手效果" width="80%"/>
  <p>图26 数据分析助手</p>
</div>

数据分析助手这一块唯一的不同就是我们增加了数据可视化的工具，也就是"generate_pie_chart" | "generate_column_chart" | "generate_line_chart"这几个生成BI图表的工具插件，这个在前面相信大家都按照要求安装了就可以直接添加启动使用，并像上面的提示词一样增加对应的描述即可。这块大家后续可以自己连着sql尝试一下，就不过多赘述了~

---

**至此，我们完成了一个功能全面的超级智能体个人助手。**

该助手涵盖了生活的多个方面：
- 需要新衣服时，可以让豆包生成设计
- 出门前，可以让高德助手规划路线
- 不知道吃什么时，可以获取饮食推荐
- 想了解学习情况时，可以进行数据分析

**这个智能体能够处理各类工作和生活任务，期待看到大家搭建出更多有创意的私人智能体助手。**

## 参考文献
1. ModelScope社区. https://www.modelscope.cn/home

2. 高德开放平台. https://console.amap.com/dev/index

3. sjkflw121150. Dify搭建AI图片生成助手中的坑！. CSDN博客. https://blog.csdn.net/sjkflw121150/article/details/148480867#:~:text=3.-,%E8%B0%83%E7%94%A8Doubao%E6%96%87%E7%94%9F%E5%9B%BE%E5%B7%A5%E5%85%B7,-%E8%B0%83%E7%94%A8%20Doubao