Dify搭建WorkFlow
工作流实现数据一次性对话。
1.创建应用

2.添加变量

3.准备本地文档

4.文档提取器
大模型没法直接读取文件,所以在文件和大模型之间需要添加哥“文档提取器”
5.添加大模型
将{{#context#}}中的数据整理成csv格式并输出,只需要输出结果,不需要输出额外的解释

6.代码执行
import csv import json from collections import defaultdict def main(csv_string: str): """ 将CSV字符串转换为ECharts柱状图,并以markdown格式输出 Args: csv_string: CSV格式的字符串,例如:'名称,数值\nA,10\nB,20\nC,15' Returns: 包含ECharts图表的markdown字符串 """ # 使用defaultdict存储数据 data = defaultdict(list) # 解析CSV lines = csv_string.strip().split('\n') reader = csv.reader(lines) # 获取表头 headers = next(reader) # 准备数据 categories = [] values = [] for row in reader: if len(row) >= 2: categories.append(row[0]) try: values.append(float(row[1])) except ValueError: values.append(0) data[row[0]].append(row[1]) # 构建ECharts配置 chart_title = f"{headers[0]} vs {headers[1]} 柱状图" if headers else "数据柱状图" option = { 'title': { 'text': chart_title, 'left': 'center' }, 'tooltip': { 'trigger': 'axis', 'axisPointer': { 'type': 'shadow' } }, 'xAxis': { 'type': 'category', 'data': categories, 'name': headers[0] if headers else '类别', 'axisLabel': { 'rotate': 45 if len(categories) > 5 else 0 } }, 'yAxis': { 'type': 'value', 'name': headers[1] if len(headers) > 1 else '数值' }, 'series': [{ 'name': headers[1] if len(headers) > 1 else '数值', 'type': 'bar', 'data': values, 'itemStyle': { 'color': '#5470c6', 'borderRadius': [5, 5, 0, 0] }, 'barWidth': '50%', 'label': { 'show': True, 'position': 'top', 'formatter': '{c}' } }], 'grid': { 'left': '10%', 'right': '8%', 'bottom': '15%', 'top': '15%', 'containLabel': True } } # 转换为JSON字符串 chart_config = json.dumps(option, ensure_ascii=False) # 生成markdown格式的输出 output = "\n```echarts\n" + chart_config + "\n```" return {"output": output}
7.输出
整体流程:


浙公网安备 33010602011771号