今天给大家拆解一款专为客服场景设计的对话分析工具,能够自动化处理和分析客服对话记录,提取关键业务洞察。
应用通过多阶段工作流实现从原始数据到分析结果的全流程处理,大幅提升客服质量管理效率。
思路分析
1. 整体技术架构

2. 核心处理流程
1)数据预处理阶段
-
文件名标准化处理
-
对话内容提取与清洗
-
数据结构化转换
2)并行分析阶段
-
内容摘要生成
-
问题分类打标
-
情感等级评估
-
采用批处理模式同时运行多个分析任务
-
三大分析模块独立工作:
3)结果整合阶段
-
聚合各分析模块结果
-
统一数据结构
-
准备可视化展示
4)用户交互阶段
-
文件上传接口
-
分析进度展示
-
多维结果可视化
详细步骤
1. 智能应用的创建
1)创建智能应用

2)编辑智能应用
完成应用名称、应用介绍及图标的信息

2. preprocess_data数据处理工作流搭建
1)工作流的创建和编辑

完成工作流名称和描述的信息填写

2)开始节点

参数类型选择如下

3)代码节点——处理文件名
开始节点之后增加代码节点

代码(注意:这里是javascript脚本)
// 在这里,您可以通过 ‘params’ 获取节点中的输入变量,并通过 'ret' 输出结果// 'params' 和 'ret' 已经被正确地注入到环境中// 下面是一个示例,获取节点输入中参数名为‘input’的值:// const input = params.input; // 下面是一个示例,输出一个包含多种数据类型的 'ret' 对象:// const ret = { "name": ‘小明’, "hobbies": [“看书”, “旅游”] };function getCleanFileName(url) { // 先通过正则提取完整文件名(包括.xlsx) const fullNameRegex = /([^/?#]+?.xlsx)/i; // 不区分大小写匹配.xlsx结尾的文件名 const match = url.match(fullNameRegex); if (!match) return null; // 未找到.xlsx文件 // 提取匹配到的文件名,并去除.xlsx之后的内容 const fullFileName = match[1]; // 匹配结果中的第一个分组(完整文件名) const tildeIndex = fullFileName.indexOf('~'); // 查找~的位置 if (tildeIndex === -1) { return fullFileName; // 无~符号时直接返回 } else { return fullFileName.substring(0, tildeIndex); // 截取到~之前的内容 }}async function main({ params }: Args): Promise<Output> { // 构建输出对象 const ret = { "filename": getCleanFileName(params.input) }; return ret;}
或者python代码:
import reasync def main(args: Args) -> Output: params = args.params file = params.get("input", "") # 使用正则表达式匹配文件名 pattern = r'/([a-f0-9]{32}).xlsx' match = re.search(pattern, file) filename = match.group(1) if match else "" # 构建输出对象 ret: Output = { "filename": filename } return ret
代码可以让DeepSeek帮你写:
将下列内容输入给deepseek。
我以下字符串数据"{ "input": "https://p26-bot-workflow-sign.byteimg.com/tos-cn-i-mdko3gqilj/5b99172bdb094114ae14307407291da8.xlsx~tplv-mdko3gqilj-image.image?rk3s=81d4c505&x-expires=1785257718&x-signature=aG5j%2B8gwCUg5aMJ77hTh3IEmlgo%3D&x-wf-file_name=9cb7dd8c573849d1a9ebc661de6b3306.xlsx%7Etplv-mdko3gqilj-image.xlsx"}"请用以下python框架,帮我写代码,生成文件名称5b99172bdb094114ae14307407291da8async def main(args: Args) -> Output: params = args.params file = params.get("input","") # 构建输出对象 ret: Output = { } return ret
输出

4)文本处理节点
添加文本处理节点

字符串拼接
# 导入必要的库import pandas as pd# 读取 Excel 文件file_path = '/mnt/data/{{String1}}'df = pd.read_excel(file_path)# 检查是否有 'history_message' 列if 'history_message' in df.columns: # 将 'history_message' 列转换为数组 history_message_array = df['history_message'].tolist() print(history_message_array)else: print('文件中不存在 history_message 列。')
5)代码执行器插件
添加CodeRunner插件工具


输入参数为三个

6)代码节点——将文本信息转成字符串数组
添加代码节点进行重命名
-
输入输出参数参考下图

-
代码(注意:这里是javascript脚本)
function convertTextToArray(text) { // 移除开头和结尾的方括号 const trimmedText = text.trim().replace(/^[/, '').replace(/]$/, ''); // 使用正则表达式分割字符串,考虑转义的单引号 const regex = /(?<!\)'/g; const parts = trimmedText.split(regex); // 处理每个部分,去除首尾可能的引号和转义字符 return parts .map(part => part.trim()) .filter(part => part.length > 0) // 过滤空字符串 .map(part => { // 移除开头和结尾的引号 let cleanPart = part.replace(/^'/, '').replace(/'$/, ''); // 处理转义的单引号和其他转义字符 return cleanPart .replace(/\'/g, "'") .replace(/\n/g, "n") .replace(/\u([0-9A-Fa-f]{4})/g, (_, code) => String.fromCodePoint(parseInt(code, 16))); }) .filter(part => part.trim() !== ","); // 过滤单独的逗号}async function main({ params }: Args): Promise<Output> { // 构建输出对象 const ret = { "content_list": convertTextToArray(params.input) // 使用处理后的数组 }; return ret;}
7)结束节点
结束节点输出变量绑定如下

可以测试整个工作流了。
3. analysis数据分析工作流搭建
1)工作流的创建和编辑
完成工作流名称和描述的信息填写
这块不加图片了,你们自行填写就ok。
2)开始节点
开始节点输入为excel文件类型的参数

3)工作流节点
将第2步中的preprocess_data数据处理工作流作为本工作流的节点;
输入为开始节点的输入参数

4)批处理节点
添加批处理节点
设置并行运行数量为4
输入参数为工作流节点的输出
注意:批处理的输出等批处理体结束之后再绑定数据

批处理体采用了三个大模型分别进行内容总结、问题分类、情感分析,最后将所有数据整个输出。
三个大模型你们也可以按照自己的场景去做分析,去写提示词就可以。

-
代码节点——合并数据
添加代码节点,输入参数如下所示

代码部分(javascript脚本)
async function main({ params }: Args): Promise<Output> { // 构建输出对象 const ret = { "output": { // 输出一个Object "summary": params.summary, "product": params.product, "content": params.content, "experience": params.experience, "rank": params.rank, "text": params.text, }, }; return ret;}
代码节点的输出参数如下

批处理节点的输出如下

5)结束节点
最后连接结束节点
输出批处理参数

界面设计及测试
界面设计及测试

没有问题的话就可以点击右上角进行发布啦。
界面设计包括布局设计、时间绑定、数据绑定,如果你想学智能应用的界面设计,可以学习我的课程。
另外智能体实战系统课程包含扣子搭建智能体基础篇、实战开发篇、界面设计篇等多重内容。


