一、前言

ECharts是百度开源的可视化解决方案,基于ZRender矢量渲染引擎构建,提供跨平台、多端适配的交互式数据可视化能力。该库凭借其模块化架构与API设计,支持20余种主流图表类型及多维数据分析功能,在金融、物联网、商业智能等领域实现日均千万级调用。

作为当前国内应用最广的前端可视化工具链,ECharts 7.x版本通过以下技术特性持续领跑市场:

  1. WebGL加速渲染引擎,可承载百万级数据点实时渲染
  2. 声明式配置语法,支持JSON Schema校验与智能提示
  3. 动态数据驱动机制,实现毫秒级增量更新
  4. 完善的响应式设计,适配从4K大屏到移动H5的全场景需求

本次我们将基于Dify.AI的Workflow引擎,构建上证综指5日K线可视化组件。话不多说我们先看一下实现效果。

在这里插入图片描述

工作流展示

在这里插入图片描述

二、echarts展示工作流制作

2.1 开始

首选我们先定义一个开始节点,这个开始节点需要设置1个文本上传输入参数,目前这个主要使用excel。所以我们设置文件类型。

在这里插入图片描述

按照上图设置一个file作为开始节点的输入参数。

2.2 文档提取器

这个地方我们需要接受开始节点上传的excel 文件,通过这个文档提取器提取文档里面的内容。输入变量是file

在这里插入图片描述

2.3 LLM大语言模型

这个地方我们需要设置一个大语言模型,通过这个大语言模型提取 excel文本内容信息。这里模型我们选择deepseekv2.5的模型,使用硅基流动提供的deepseek模型,有的小伙伴可以问为什么不用v3 和R1模型呢?这里我们只提取文本内容,所以不需要非常厉害的模型。另外硅基最近流量比较大我们选个小模型这样反而速度更快点。

系统提示词

你是一个文档提取专家,请根据用户上传文档内容{{#1740472111460.text#}}提取该表格里面的数据返回json格式数据。  
其中内容格式‘上证指数日线行情’、‘open’、‘high’、‘low’、‘close’、‘volume’字段返回信息,返回的结果信息以json格式返回  
 返回数据格式如下:  
{  
"上证指数日线行情": \[  
{  
"date": "2025-02-19 00:00:00",  
"open": 3320.78,  
"high": 3352.09,  
"low": 3320.58,  
"close": 3351.54,  
"volume": 50291300000  
},  
{  
"date": "2025-02-20 00:00:00",  
"open": 3347.59,  
"high": 3355.56,  
"low": 3338.03,  
"close": 3350.78,  
"volume": 50435700000  
}  
\]  
}  

模型的其他设置这里没有过多讲解的地方。

在这里插入图片描述

2.4 echarts代码转换生成

这个地方是本次工作流的一个难点,主要的作用就是通过上个节点的大语言模型提取输出的json格式的数据通过python 代码和echarts来实现数据组装。

代码如下:

import json  
import os  
import re  
  
def main(json\_str: str) \-> dict:  
    try:  
        \# 预处理:清理非 JSON 部分  
        json\_match = re.search(r'\\{.\*\\}', json\_str, re.DOTALL)  
        if not json\_match:  
            return {"result": "Error: Invalid JSON format"}  
          
        \# 提取合法的 JSON 部分  
        cleaned\_json\_str = json\_match.group(0)  
          
        \# 解析JSON数据  
        data = json.loads(cleaned\_json\_str)  
        filename = data.get("filename", "stock\_chart.html")  
        stock\_data = data.get("上证指数日线行情", \[\])  
          
        \# 准备数据格式  
        dates = \[item\['date'\].split(' ')\[0\] for item in stock\_data\]  \# 提取日期部分(去掉时间)  
        open\_prices = \[item\['open'\] for item in stock\_data\]  
        close\_prices = \[item\['close'\] for item in stock\_data\]  
        low\_prices = \[item\['low'\] for item in stock\_data\]  
        high\_prices = \[item\['high'\] for item in stock\_data\]  
        volumes = \[item\['volume'\] / 1e8 for item in stock\_data\]  \# 转换为亿单位  
          
        \# 构建ECharts配置  
        echarts\_config = {  
            "title": {  
                "text": "上证指数日线行情"  
            },  
            "legend": {  
                "data": \["开盘价", "最高价", "最低价", "收盘价", "成交量"\]  
            },  
            "tooltip": {},  
            "dataset": {  
                "source": \[  
                    \["日期", "开盘价", "最高价", "最低价", "收盘价", "成交量"\],  
                    \*\[\[dates\[i\], open\_prices\[i\], high\_prices\[i\], low\_prices\[i\], close\_prices\[i\], volumes\[i\]\]   
                      for i in range(len(dates))\]  
                \]  
            },  
            "xAxis": \[  
                {"type": "category", "gridIndex": 0},  
                {"type": "category", "gridIndex": 1}  
            \],  
            "yAxis": \[  
                {  
                    "gridIndex": 0,  
                    "name": "价格趋势(单位:点)"  
                },  
                {  
                    "gridIndex": 1,  
                    "name": "成交量(单位:亿)"  
                }  
            \],  
            "grid": \[  
                {"bottom": "55%"},  
                {"top": "55%"}  
            \],  
            "series": \[  
                \# 第一个网格中的折线图系列  
                {"type": "line", "seriesLayoutBy": "row", "name": "开盘价"},  
                {"type": "line", "seriesLayoutBy": "row", "name": "最高价"},  
                {"type": "line", "seriesLayoutBy": "row", "name": "最低价"},  
                {"type": "line", "seriesLayoutBy": "row", "name": "收盘价"},  
                \# 第二个网格中的柱状图系列  
                {"type": "bar", "xAxisIndex": 1, "yAxisIndex": 1, "name": "成交量"}  
            \]  
        }  
          
        \# 生成输出文件  
        output = "\`\`\`echarts\\n" + json.dumps(echarts\_config, indent\=2, ensure\_ascii\=False) + "\\n\`\`\`"  
          
        \# 返回结果  
        return {  
            "result": output  
        }  
      
    except Exception as e:  
        return {  
            "result": f"Error: {str(e)}"  
        }

输入参数 json_str 输入值是大语言模型llm string值

输出变量 result 数据类型是字符串string

在这里插入图片描述

2.5 直接回复

这个地方就比较简单,因为上个节点把数据拼装好后,这里就直接显示就可以了。

在这里插入图片描述

以上我们就完成工作流的搭建。

三、验证及测试

上面制作好的工作流(chatflow) 就可以发布出去了

在这里插入图片描述

在这里插入图片描述

项目体验地址:http://dify.duckcloud.fun/chat/HesevIZjlbSYd4NM

为了方便演示我这里上传我的excel 测试数据。地址https://mypicture-1258720957.cos.ap-nanjing.myqcloud.com/Obsidian/%E8%82%A1%E7%A5%A8%E8%A1%A8%E6%A0%BC%E6%95%B0%E6%8D%AE.xls

相关资料和文档可以看源的项目 https://github.com/wwwzhouhui/dify-for-dsl

总结

今天主要带大家了解了如何基于 Dify 的 Workflow 引擎构建上证综指 5 日 K 线可视化组件,详细介绍了使用 ECharts 实现股票价格趋势显示的工作流制作过程。介绍了 ECharts 作为百度开源的可视化解决方案的强大功能及技术特性。通过定义开始节点、使用文档提取器、配置 LLM 大语言模型、进行 echarts 代码转换生成以及直接回复等步骤,完成了工作流的搭建,并进行了验证和测试。还给出了项目体验地址及相关资料文档的开源项目地址。


如何系统学习掌握AI大模型?

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 2024行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

在这里插入图片描述

5. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

Logo

为开发者提供丰富的英特尔开发套件资源、创新技术、解决方案与行业活动。欢迎关注!

更多推荐