场景介绍
企业日常运营中经常需要处理CRM、ERP等系统导出的JSON或CSV格式业务数据。这类数据包含大量重复的计算和清洗工作(如汇总销售额、筛选有效订单、按区域分组统计等),大模型虽然擅长文本理解和表达,但不适合进行精确的数学计算和复杂的数据操作。
为弥补这一不足,可以在工作流中引入代码节点,利用其执行Python或Node.js代码的能力来处理数据结构化任务;同时配合大模型节点,将计算后的结果转化为通俗易懂的业务分析报告。
本文将演示如何结合代码节点与大模型节点,以销售部门需要将CRM导出的JSON数据转为可读的周报表格为例,构建一个用于数据格式转换与智能分析的工作流。
效果展示
当输入的原始JSON销售数据如下时,转换的销售周报如图1所示。
[
{"client_name": "公司A", "amount": 580000, "product": "企业版套餐", "date": "2025-07-01", "sales_rep": "张三", "region": "华南", "status": "已签约"},
{"client_name": "公司B", "amount": 320000, "product": "标准版套餐", "date": "2025-07-03", "sales_rep": "李四", "region": "华南", "status": "已签约"},
{"client_name": "公司C", "amount": 750000, "product": "旗舰版套餐", "date": "2025-07-05", "sales_rep": "王五", "region": "华北", "status": "已签约"},
{"client_name": "公司D", "amount": 210000, "product": "标准版套餐", "date": "2025-07-06", "sales_rep": "张三", "region": "华南", "status": "跟进中"},
{"client_name": "公司E", "amount": 680000, "product": "企业版套餐", "date": "2025-07-08", "sales_rep": "赵六", "region": "华南", "status": "已签约"},
{"client_name": "公司F", "amount": 450000, "product": "企业版套餐", "date": "2025-07-10", "sales_rep": "李四", "region": "华北", "status": "已签约"},
{"client_name": "公司G", "amount": 180000, "product": "标准版套餐", "date": "2025-07-12", "sales_rep": "王五", "region": "华中", "status": "跟进中"}
]
图1 效果示例
工作流设计
重点介绍工作流中的一些主要节点,每个节点负责特定的任务。以下是各个节点的功能和设计思路。
- 开始节点:作为工作流的入口,开始节点负责接收CRM导出的JSON销售数据。
- 代码节点:通过Python代码解析JSON数据,计算各维度的汇总指标。
- 大模型节点:基于代码节点输出的结构化指标数据,生成自然语言周报。
- 结束节点:展示大模型生成的周报。
图2 数据格式转换工作流全景
步骤一:创建工作流
- 单击左侧导航栏,单击左上角“工作流”页签,进入工作流应用管理界面,单击右上角“创建工作流”。
- 选择创建“对话型工作流”,在对应的创建页面,配置工作流相关信息,具体如图1所示,参数如表1所示。
图3 创建工作流
表1 参数说明
|
参数名称 |
示例 |
说明 |
|
名称 |
数据格式转换工作流 |
支持中英文、数字、下划线、中划线和空格,长度 2~64字符,但不允许以空格开头或结尾。 |
|
描述 |
将CRM导出的JSON数据转为可读的周报表格 |
描述工作流的功能,可直观呈现给用户,长度0~1024个字符。 |
- 配置完成后单击“立即创建”,进入工作流编排页面。
步骤二:添加代码节点
单击开始节点和大模型节点中间的
,添加代码节点,如图4所示。
图4 添加代码节点
添加完成后,如图5所示。
图5 数据格式转换工作流
步骤三:配置工作流节点
工作流各个核心节点的配置方式如下:
表2 节点配置说明
|
节点类型 |
说明 |
示例 |
|
开始节点 |
添加一个必选的输入参数,接收CRM导出的JSON销售数据。
- 参数名称:raw_data
- 参数类型:String
- 描述:CRM导出的SON格式销售数据
- 必填:勾选。
|

|
|
代码节点 |
此节点通过Python代码解析JSON数据,计算各维度的汇总指标。
- 执行方式:
本次执行
- 输入参数:
raw_data:引用开始节点的raw_data。
- 输出参数:
参数名称:result
参数类型:String
描述:计算后的结构化指标(JSON字符串)
- 代码:填入如下代码
import json
from collections import defaultdict
def main(args: dict) -> dict:
"""
运行代码节点会调用此函数,请勿对下面的函数名做修改
:param args: 输入固定为args字典类型,kv为输入参数键值对
:return: 输出参数为字典类型,kv为输出参数键值对
"""
# 从args字典中获取原始数据字符串
raw_data = args.get('raw_data', '')
data = json.loads(raw_data)
# ========== 1. 整体指标 ==========
total_sales = sum(item['amount'] for item in data)
deal_count = len(data)
avg_deal = round(total_sales / deal_count, 2) if deal_count > 0 else 0
signed_deals = [d for d in data if d['status'] == '已签约']
signed_amount = sum(d['amount'] for d in signed_deals)
pipeline_deals = [d for d in data if d['status'] == '跟进中']
pipeline_amount = sum(d['amount'] for d in pipeline_deals)
# ========== 2. Top 客户 ==========
sorted_by_amount = sorted(data, key=lambda x: x['amount'], reverse=True)
top3_clients = [
{"name": d['client_name'], "amount": d['amount'], "product": d['product']}
for d in sorted_by_amount[:3]
]
# ========== 3. 按销售代表汇总 ==========
rep_stats = defaultdict(lambda: {"count": 0, "total": 0})
for d in data:
rep = d['sales_rep']
rep_stats[rep]["count"] += 1
rep_stats[rep]["total"] += d['amount']
rep_summary = [
{"name": rep, "deal_count": stats["count"], "total_amount": stats["total"]}
for rep, stats in rep_stats.items()
]
rep_summary.sort(key=lambda x: x['total_amount'], reverse=True)
# ========== 4. 按区域汇总 ==========
region_stats = defaultdict(lambda: {"count": 0, "total": 0})
for d in data:
region = d['region']
region_stats[region]["count"] += 1
region_stats[region]["total"] += d['amount']
region_summary = [
{"region": region, "deal_count": stats["count"], "total_amount": stats["total"]}
for region, stats in region_stats.items()
]
region_summary.sort(key=lambda x: x['total_amount'], reverse=True)
# ========== 5. 按产品汇总 ==========
product_stats = defaultdict(lambda: {"count": 0, "total": 0})
for d in data:
product = d['product']
product_stats[product]["count"] += 1
product_stats[product]["total"] += d['amount']
product_summary = [
{"product": product, "deal_count": stats["count"], "total_amount": stats["total"]}
for product, stats in product_stats.items()
]
product_summary.sort(key=lambda x: x['total_amount'], reverse=True)
# ========== 汇总输出 ==========
result = {
"overview": {
"total_sales": total_sales,
"deal_count": deal_count,
"avg_deal_size": avg_deal,
"signed_amount": signed_amount,
"signed_count": len(signed_deals),
"pipeline_amount": pipeline_amount,
"pipeline_count": len(pipeline_deals)
},
"top3_clients": top3_clients,
"by_sales_rep": rep_summary,
"by_region": region_summary,
"by_product": product_summary
}
# 构造返回字典(严格遵循输出格式)
ret = {
"result": json.dumps(result, ensure_ascii=False)
}
return ret
|

|
|
大模型节点 |
此节点基于代码节点输出的结构化指标数据,生成自然语言周报。
- 模型配置:选择Kimi-K2模型。
- 输入参数:
- query,引用开始节点的query。
- data,引用代码节点的result。
- 提示词配置:
|

|
|
结束节点 |
此节点用于展示大模型生成的周报。
- 输入参数:result,引用大模型节点的raw_output。
- 指定回复:
{{result}}
|

|
步骤四:调试工作流
- 配置完成后,在工作流编排界面单击右上角
,在试运行配置中的raw_data框中,输入CRM导出的JSON销售数据。如图6所示。配置完成后单击“开始运行”。
输入JSON销售数据示例:
[
{"client_name": "公司A", "amount": 580000, "product": "企业版套餐", "date": "2025-07-01", "sales_rep": "张三", "region": "华南", "status": "已签约"},
{"client_name": "公司B", "amount": 320000, "product": "标准版套餐", "date": "2025-07-03", "sales_rep": "李四", "region": "华南", "status": "已签约"},
{"client_name": "公司C", "amount": 750000, "product": "旗舰版套餐", "date": "2025-07-05", "sales_rep": "王五", "region": "华北", "status": "已签约"},
{"client_name": "公司D", "amount": 210000, "product": "标准版套餐", "date": "2025-07-06", "sales_rep": "张三", "region": "华南", "status": "跟进中"},
{"client_name": "公司E", "amount": 680000, "product": "企业版套餐", "date": "2025-07-08", "sales_rep": "赵六", "region": "华南", "status": "已签约"},
{"client_name": "公司F", "amount": 450000, "product": "企业版套餐", "date": "2025-07-10", "sales_rep": "李四", "region": "华北", "status": "已签约"},
{"client_name": "公司G", "amount": 180000, "product": "标准版套餐", "date": "2025-07-12", "sales_rep": "王五", "region": "华中", "status": "跟进中"}
]
图6 输入JSON销售数据
- 在“试运行”对话框中,输入“请转换”,效果如图7所示。
图7 效果示例
步骤五:发布工作流
- 工作流试运行成功后,在工作流编排页面,单击右上角“提交版本”。
- 输入版本号与版本描述,如图8所示。
图8 发布工作流
- 发布完成后选择上方“渠道管理”页签,可进入渠道管理页面。
在
分享渠道页签,
云商店发布渠道的
操作列单击
“发布”按钮后将出现
“立即访问”、
“复制链接”文字按钮。
图9 发布工作流应用
- 立即访问:单击当前页面的“立即访问”按钮,可立即跳转至我的云商店界面。
图10 立即访问云商店界面
- 复制链接:单击当前页面的“复制链接”按钮,可直接复制网页URL嵌入或分享到其他应用场景。
图11 复制智能体访问地址