ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

DIFI学习-入门之workflow

2026/8/11 5:14:50 拓冰建站 浏览量
DIFI学习-入门之workflow

制作数据可视化助手:创建workflow,完成用户excel数据柱状图可视化。

基本思路是用户输入文档-然后用文档提取器提取文字--然后用本地模型去清洗数据--然后利用代码

执行模块进行输出显示。

期间遇到的问题

1是本地模型处理速度比在线的大模型慢很多,微调模型参数

模型使用这三个参数从几十秒 缩短至几秒。同时注意提示词

提示词应该也还可以优化

2.代码执行的python程序不会写

实际用豆包生成,实测可行,但需要加约束

豆包生成的显示柱状图的程序:

import csv import json from collections import defaultdict def main(csv_string): try: raw_lines = [line.strip() for line in csv_string.split("\n") if line.strip()] if not raw_lines: return {"output": "```echarts\n{\"error\":\"没有CSV数据\"}\n```"} reader = csv.reader(raw_lines) headers = next(reader) x_axis_name = headers[0] if len(headers)>=1 else "" data_dict = defaultdict(lambda: defaultdict(float)) x_categories = [] for row in reader: if len(row) < 3: continue x_val = row[0].strip() s_val = row[1].strip() if x_val not in x_categories: x_categories.append(x_val) try: num = float(row[2]) except Exception: num = 0.0 data_dict[x_val][s_val] = num all_series_names = sorted({s for x in data_dict for s in data_dict[x]}) series_list = [] for s_name in all_series_names: series_list.append({ "name": s_name, "type": "bar", "data": [data_dict[x].get(s_name, 0) for x in x_categories] }) option = { "tooltip": {"trigger": "axis"}, "legend": { "data": all_series_names, "type": "scroll" }, "grid": { "left": "3%", "right": "4%", "bottom": "20%", "containLabel": True }, "xAxis": { "type": "category", "data": x_categories, "name": x_axis_name, "boundaryGap": True, "axisLabel": { "rotate": 30 } }, "yAxis": { "type": "value", "name": headers[2] if len(headers)>=3 else "" }, "series": series_list } render_text = "```echarts\n" + json.dumps(option, ensure_ascii=False, indent=2) + "\n```" return {"output": render_text} except Exception as e: return {"output": f"```echarts\n{{\"error\":\"程序异常:{str(e)}\"}}\n```"}

豆包生成的显示饼图的程序

import csv import json from collections import defaultdict def main(csv_string): try: raw_lines = [line.strip() for line in csv_string.split("\n") if line.strip()] if not raw_lines: return {"output": "```echarts\n{\"error\":\"没有CSV数据\"}\n```"} reader = csv.reader(raw_lines) headers = next(reader) sum_dict = defaultdict(float) for row in reader: if len(row) <3: continue product = row[1].strip() try: sales = float(row[2]) except: sales =0 sum_dict[product] += sales data_list = [{"name":k,"value":v} for k,v in sum_dict.items()] option = { "tooltip": {"trigger":"item"}, "legend":{"orient":"vertical","left":"left"}, "series":[ { "name":"销售数量", "type":"pie", "radius":"60%", "data":data_list } ] } render_text = "```echarts\n" + json.dumps(option, ensure_ascii=False, indent=2) + "\n```" return {"output": render_text} except Exception as e: return {"output": f"```echarts\n{{\"error\":\"程序异常:{str(e)}\"}}\n```"}

换用本地的千问 4B模型运行速度可以接受。