![图片[1]-Dify智能体Matplotlib 动态图表生成与展示工作流-AI应用集](https://aiseek.oss-cn-shanghai.aliyuncs.com/2025/10/截屏2025-10-04-17.17.45-1024x576.png)
![图片[2]-Dify智能体Matplotlib 动态图表生成与展示工作流-AI应用集](https://aiseek.oss-cn-shanghai.aliyuncs.com/2025/10/截屏2025-10-04-17.16.48-1024x491.png)
📊 Matplotlib 动态图表生成与展示工作流
该工作流是一个在 Dify 平台内直接生成并展示数据可视化图表的应用。它不依赖任何外部图表服务,而是通过执行 Python 代码,利用强大的 matplotlib
库动态创建图表,并将其作为图片直接在聊天中回复给用户。
第一阶段:服务器端图表生成 (代码执行)
- 自动触发 (开始): 工作流被触发后,无需用户输入任何参数,直接进入核心处理环节。
- 执行绘图代码 (代码执行): 这是工作流的核心。一个Python代码节点会执行以下操作:
- 环境配置: 首先通过
Path.home = lambda: Path("/dependencies/home")
这行代码来适应 Dify 的沙盒环境,确保matplotlib
库能够正常初始化。 - 数据生成: 使用
numpy
库生成一组用于绘制正弦波(Sine Wave)的示例数据。 - 图表绘制: 调用
matplotlib.pyplot
库,根据生成的数据绘制一张完整的图表。代码中详细设置了画布大小(8×6英寸,100 DPI,即800×600像素)、标题、X/Y轴标签、网格线和图例。 - 内存内保存: 最关键的一步是,它没有将图表保存为物理文件,而是使用
io.BytesIO()
创建了一个内存缓冲区,并通过plt.savefig(buffer, format='png')
将生成的PNG图像直接写入该缓冲区。 - Base64 编码: 代码随后从内存缓冲区中读取图像的二进制数据,并将其编码为 Base64 格式的字符串。该节点最终输出这个 Base64 字符串。
- 环境配置: 首先通过
第二阶段:前端图片渲染与回复
- 直接回复 (直接回复): 该节点接收上一步生成的图像 Base64 字符串。
- Markdown 图片嵌入: 它使用特殊的 Markdown 语法

,将 Base64 字符串嵌入到回复中。这种格式能够被前端界面直接解析并渲染成一张可见的图片,从而将服务器端生成的图表无缝地展示给用户。
主要特点
- 服务器端动态绘图: 完全在后端利用 Python 和
matplotlib
的强大功能生成复杂的图表,无需依赖前端图表库。 - 无文件化操作: 整个图表的生成和编码过程完全在内存中完成,不产生任何临时文件,流程干净、高效且易于管理。
- Base64 富媒体输出: 通过将图片编码为 Base64 字符串,实现了在纯文本聊天界面中发送丰富视觉内容(如图表)的能力。
- 高度可扩展: 开发者可以轻易修改“代码执行”节点中的 Python 脚本,以生成任意类型的图表(如柱状图、饼图、散点图等),满足各种数据可视化需求。
重要提示
- 运行此工作流需要 Dify 的执行环境中预装了
matplotlib
和numpy
这两个 Python 库。 Path.home
的设置是针对特定沙盒环境的兼容性措施,旨在解决matplotlib
在寻找配置文件时可能遇到的路径问题。- 这是一个展示如何在 Dify 中进行高级数据可视化和生成富媒体回复的绝佳范例。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容