前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >销售数据分析神器:上传表格+分析报告+图表生成!GLM-4-Plus神助攻!

销售数据分析神器:上传表格+分析报告+图表生成!GLM-4-Plus神助攻!

作者头像
陈宇明
发布2025-02-26 15:14:47
发布2025-02-26 15:14:47
8400
代码可运行
举报
文章被收录于专栏:设计模式设计模式
运行总次数:0
代码可运行

前言

在当今数据驱动的商业环境中,销售数据分析已成为企业决策的关键因素。为了帮助企业快速、高效地从海量数据中提取有价值的信息,今天我要分享销售数据分析AI智能体详细搭建全过程。

它是一个能够将数据表格转化为直观图表的AI智能体解决方案。通过这款工具,您只需上传数据表格,即可自动生成数据分析报告以及数据图表,让销售数据洞察变得前所未有的简单。

效果

销售数据表格内容:

销售数据分析总结:

销售数据分析图表:

教程

整体框架上,主要是使用了插件和工作流的组合模式,完成整个流程。

当用户上传表格的时候,调用插件「文件读取」把文件读取后的内容传递隔离了工作流「SellDataAnalysis」。

我们来详细看看工作流

整个流程相对简单一共11个节点

  • 大模型节点x1
  • 消息节点x2
  • 问答节点x1
  • 文本处理x1
  • 自定义插件x1
  • 代码节点x1
  • 图片节点x4

当表格数据进入之后先调用「大模型节点」进行数据的初步总结,在整个过程通过「消息节点」进行实时输出

系统提示词:

代码语言:javascript
代码运行次数:0
复制
你是一个销售总监,帮我根据以下数据写一个销售数据报告,先分析销售数据给出概括以及总结和建议,
然后报告内容可以包含【柱状图】【折线图】【饼图】【雷达图】去做图表展示。

案例:
销售数据报告
一、数据概括

从提供的数据来看,涵盖了 2023 年 1 月 1 日至 1 月 5 日不同产品在不同地区的销售情况。销售额在不同产品和地区之间差异较大,
其中 Product E 的销售额最高为 965,Product G 的销售额最低为 152。折扣方面,部分产品有一定折扣,如 Product F 的折扣为 0.1。
成本也因产品而异,从 160 到 388 不等。利润方面,多数产品有盈利,但 Product G 出现了亏损。

二、总结

产品销售表现差异明显,高销售额产品与低销售额产品差距显著,需要进一步分析产品特点和市场需求,以优化产品策略。
地区销售情况不同,West 和 South 地区的销售额相对较高,可考虑加大在这两个地区的市场推广力度。
折扣对部分产品的销售额有一定影响,需评估折扣策略的合理性,以平衡销售额和利润。
成本控制是提高利润的关键,对于成本较高的产品,需寻找降低成本的途径。

三、建议

针对高销售额产品 Product E,可继续保持市场优势,拓展销售渠道,提高市场份额。
对于低销售额产品 Product G,分析其销售不佳的原因,如产品定位、市场需求等,进行针对性的改进或调整。
在 West 和 South 地区表现较好的情况下,深入研究这两个地区的市场特点和消费者需求,制定更精准的营销策略。
对于有折扣的产品 Product F,评估折扣对销售额和利润的影响,根据实际情况调整折扣策略,以实现利润最大化。
加强成本管理,对各个产品的成本进行详细分析,寻找降低成本的空间,提高产品的利润率。

相关图表
【柱状图】展示不同产品的销售额对比
【折线图】展示不同日期的总销售额变化
【饼图】展示不同地区销售额占比
【雷达图】展示各产品在销售额、成本、利润等方面的综合表现
代码语言:javascript
代码运行次数:0
复制

用户提示词:

代码语言:javascript
代码运行次数:0
复制
销售数据:
{{input}}

当销售分析报告内容生成完成之后会询问用户是否需要生成图表信息,当用户选择「不要生成」结束流程。

当用户选择「需要生成」接下来会进行「文本处理节点」进行图片的提示词组装

难点攻克

这个提示词相对要求比较复杂,需要从上面的内容的总结内容提取出来四个图表的分别要求并且需要输出对应的JSON格式,对大模型的语⾔理解、逻辑推理、指令遵循、⻓⽂本输出⽅⾯要求较高。

提示词:

代码语言:javascript
代码运行次数:0
复制

你是一个专业的数据分析师,能根据数据内容和图表要求分析用户给到的对应的折线图/饼图/雷达图/柱状图数据,只输出下面数据格式:

##1.折线图:
```json{
  "areaStyle": {
    "opacity": 1
  },
  "data": "[9,11,12,13,15,18]",
  "legend": 1,
  "name": "人口数量",
  "title": "人口曲线测试",
  "xAxis": {
    "data": "[\"2017\",\"2018\",\"2019\",\"2020\",\"2023\",\"2024\"]",
    "name": "年份",
    "type": "category"
  },
  "yAxis": {
    "name": "人口数量(单位:亿)",
    "type": "value"
  }
}```
##2.饼图:
```json{
  "areaStyle": {
    "opacity": 1
  },
  "data": [
    {
      "name": "李白",
      "value": 10
    },
    {
      "name": "王昭君",
      "value": 4
    },
    {
      "name": "孙悟空",
      "value": 15
    },
    {
      "name": "关羽",
      "value": 8
    },
    {
      "name": "成吉思汗",
      "value": 1
    }
  ],
  "legend": 1,
  "name": "皮肤数量",
  "subtitle": "测试用",
  "title": "王者荣耀皮肤对比"
}```
##3.雷达图:
```json{
  "areaStyle": {
    "opacity": 0.8
  },
  "data": [
    {
      "name": "李白",
      "value": [
        900,
        700,
        1000,
        1000,
        200
      ]
    }
  ],
  "legend": 1,
  "name": "雷达图测试",
  "radar": {
    "indicator": [
      {
        "max": 1000,
        "min": 100,
        "name": "打野能力"
      },
      {
        "max": 1000,
        "min": 100,
        "name": "gank能力"
      },
      {
        "max": 1000,
        "min": 100,
        "name": "发育能力"
      },
      {
        "max": 1000,
        "min": 100,
        "name": "伤害"
      },
      {
        "max": 1000,
        "min": 100,
        "name": "防御"
      }
    ]
  },
  "title": "雷达图测试"
}```
##4.柱状图:
```json{
  "data": "[9,10,12,13,35,14]",
  "legend": 1,
  "name": "人口",
  "title": "人口柱状图",
  "xAxis": {
    "data": "[\"2015\",\"2017\",\"2018\",\"2019\",\"2020\",\"2021\"]",
    "name": "年份",
    "type": "category"
  },
  "yAxis": {
    "name": "人口(单位:亿)",
    "type": "value"
  }
}```


## 数据内容:
{{String1}}
## 图表要求:
{{String2}}

这个步骤非常关键,一开始我使用的是自带的「大模型节点」在调试过程遇到了两个问题:

第一,整个推理过程耗时较长

第二,JSON格式错误无法解析

所以我想到了使用「自定义插件」调用了其他大模型,经过多家大模型的测试,最后我选择了智谱GLM-4-Plus大模型。因为 GLM-4-Plus 在各⼤语⾔⽂本能⼒数据集上获得了与 GPT-4o 及 405B 参数量的 Llama3.1 相当的⽔平,作为智谱最新旗舰模型,在语⾔理解、逻辑推理、指令遵循、⻓⽂本输出⽅⾯都有较⼤突破。

在最新的SuperBench⼤模型评测中,GLM-4-Plus 位列世界前三,打破了此前国外模型垄断前三甲的局⾯。

接下来,我们要看来效果对比很明显,同样的提示词和输入参数:

  • Doubao-pro-32k 运行时长 44s
  • GLM-4-Plus 运行时长 16s

如何自定义插件?

首先回到扣子空间主页,选择「资源库」然后点击右上角「+资源」选择「插件」。

输入插件名称、描述、选择「在 Coze IDE 中创建」。

在进入插件详情页创建工具输入名称、介绍。

创建完成后,我们看下如何调用GLM大模型,前往智谱BigModel开放平台的GLM接口文档用HTTP请求的方式

文档地址:https://bigmodel.cn/dev/api/http-call/http-auth

只需要参数三个参数即可,第一个是apikey,第二个是模型编码,第三个是提示词

然后我们再回到插件编辑器中,实现HTTP请求代码,需要传入两个动态参数apikey和提示词,model使用的是glm-4-plus,根据GLM模型对比列表说明这款模型是全面性能最优的。

GLM模型对比文档:https://bigmodel.cn/dev/howuse/model

代码语言:javascript
代码运行次数:0
复制
import { Args } from '@/runtime';
import { Input, Output } from "@/typings/GLM/GLM";

/**
  * Each file needs to export a function named `handler`. This function is the entrance to the Tool.
  * @param {Object} args.input - input parameters, you can get test input value by input.xxx.
  * @param {Object} args.logger - logger instance used to print logs, injected by runtime
  * @returns {*} The return data of the function, which should match the declared output parameters.
  * 
  * Remember to fill in input/output in Metadata, it helps LLM to recognize and use tool.
  */

export async function handler({ input, logger }: Args<Input>): Promise<Output> {
  const API_URL = 'https://open.bigmodel.cn/api/paas/v4/chat/completions';
  // 传入参数
  const API_KEY = input.key;
  const COMMAND = input.command;
  
  const headers = {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json',
  };
  const data = {
    'model': 'glm-4-plus',
    'messages': [
      {
        'role': 'user',
        'content': COMMAND,
      },
    ],
  };

  const response = await fetch(API_URL, {
    headers,
    method: 'POST',
    body: JSON.stringify(data),
  });

  const result = await response.json();

  return {
    data: result.choices[0].message.content,
  };
}

代码实现完成后需要切换到「元数据」

  1. 左边区域设置输入和输出的参数
  2. 右边区域输入参数进行运行调试

apikey如何获取?登陆后台找到密钥管理页面,没有的话可以点击右上角添加新的API Key

后台地址:https://zhipuaishengchan.datasink.sensorsdata.cn/t/F2

新增完成直接可以直接复制即可。

确认没有问题之后就可以点击右上角「发布」

发布成功后我们回到工作流点击左上角添加「插件」然后选择「我的工具」就可以使用自定义插件了。

选中GLM插件点击进行添加节点即可。

输入上个节点组装好的提示词以及key即可调用。

输出结构后还需要通过「代码节点」对JSON数据进行提取解析输出成四个数据源分别对应四个不同图表的所需数据

解析代码

代码语言:javascript
代码运行次数:0
复制
async function main({ params }: Args): Promise<Output> {
    const chartPattern = /```json(.*?)```/gs;
    let dataString = params.input;
    let match;
    const charts = [];
    while ((match = chartPattern.exec(dataString)) !== null) {
        // 去除字符串中的多余空格和换行符,然后解析JSON
        const chartJSON = match[1].replace(/\s+/g, ' ').trim();
        const parsedChart = JSON.parse(chartJSON);
        charts.push(parsedChart);
      }
    
    return {
        line:charts[0],
        pie:charts[1],
        radar:charts[2],
        bar:charts[3]
    };
}
代码语言:javascript
代码运行次数:0
复制

「插件节点」使用的是官方的图表大师插件,它支持生成柱状图/饼图/折线图/雷达图。

为了更丰富的展示不同维度的数据,每种图表类型都添加了一个,生成图表后最后统一用「消息节点」进行输出。

整个流程就结束了

总结

在这次搭建销售数据分析AI智能体的过程中,碰到了个问题:生成图表数据时,那些复杂的提示词让内置的大模型有点应付不来。所以,我想分享说:别只盯着那些内置插件看,自己动手自定义插件去寻找解决方案。这样做的好处是,我们的解决方案不会受限,而且还能更灵活。

另外,还得提一句,多试试不同的大模型很关键。拿这次神助攻的 GLM-4-Plus 模型来说,它具有的优势:

  1. 高级语义解析能力:能够深入理解复杂提示词中的意义,能够更准确地提取关键信息,并据此生成符合要求的输出,确保输出的严谨性和准确性。
  2. 精确的结构化输出:能够根据用户的具体要求生成结构化、格式化的文本。这对于需要严格遵循特定格式或模板的输出场景尤为有利。
  3. 灵活的定制化响应:对于复杂的提示词,它能够根据用户设定的输出格式要求,自动调整回答的结构和内容,从而提供更加定制化和严谨的答案。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码个蛋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 效果
  • 教程
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档