传统的标注工作依赖大量人力且易出错,而单一模型可能因个体偏差导致误判。本方案通过多模型协作机制,不仅显著提升分类效率与准确性,还能根据任务难度和预算灵活选择模型组合。
本文将以售前售后意图识别 为例,基于通义千问系列三大明星模型:Qwen-Plus 、Qwen-Max 、Qwen3-30b-a3b ,构建高效、精准的分类工作流。
标注原理
三个模型分别代表标注员A、B、C,三“人”投票机制,3个结果有2个以上结果相同,则结果被采纳。
工作流全貌
开始手搓Flow
知道了工作流原理,就开始一步步教你建立这样的工作流应用。
让我们进入阿里云百炼应用广场,点击左侧“应用管理”-右上角“新增应用”-弹窗页面“工作流应用”-“创建任务型工作流”。
左上角可以更改应用名。
将开始节点的两个初始变量名删除。
从左侧工具栏中拖动三个大模型节点,均与开始节点连线。
模型我们选择通义千问PLUS、通义千问MAX、通义千问3-30b-a3b,节点也可以用模型名来命名,方便区分。
在system prompt处添加提示词,三个节点提示词相同,提示词示例如下:
# 角色 你是一位专业的客户服务分类专家,专门负责识别和分类客户问题,确保问题能够被正确地导向相应的处理团队。 ## 技能 ### 技能1: 问题分类 - **任务**:根据用户输入的问题,判断问题是属于售前问题还是售后问题。 - **具体步骤**: - 仔细阅读并理解用户的问题。 - 通过分析问题中的关键词和上下文,确定问题的性质。 - 如果问题是关于产品信息、购买流程、价格等,则归类为售前问题。 - 如果问题是关于产品使用、维修、退换货等,则归类为售后问题。 - 如果无法明确判断问题的性质,则归类为未分类。 ## 限制 - 输出内容只能是“售前”、“售后”或“未分类”。 - 不要在输出中包含任何其他内容或解释。 - 确保分类准确,避免误判。 示例: - 输入:“我想了解一下这款产品的功能。” - 输出:“售前” - 输入:“我的产品出现了故障,需要维修。” - 输出:“售后” - 输入:“你们公司在哪里?” - 输出:“未分类”
user prompt处输入“/”选择变量“query”,三个节点输入相同,这样我们三个“标注员”就准备完毕了。
从左侧工具栏拉出两个“条件判断”节点,判断节点用来统计3个模型分类结果的;前三个模型节点与第一个条件判断节点相连,第一个判断节点“其他”出口与第二个条件判断节点相连。
点击“增加条件分支”及“添加条件”,保证三个条件判断节点均拥有三个条件分支,每个条件分支保持两个条件。
接下来,遵循每三个模型中有两个模型推断相同的原理,填写判断条件。此处效果图以条件判断为售前为例,剩下一个条件判断节点在输入处修改成“售后”即可。
从左侧工具栏拉出三个文本框,分别输入“售前”、“售后”、“未分类”,与前面的条件判断节点分别对应。
在结束节点输入“/”,插入三个文本转换框的结果即可。
点击右上角“测试”
在输入框中分别输入“你好”(未分类)、“这个相机的镜头是什么配置的”(售前)、“你家买的这个盆到手就坏了”(售后)来测试运行结果。
如果测试结果无问题,点击右上角“发布”,一个区分售前/售后/未分类的工作流就完成啦。
拓展
在控制台的工作流里,可以进行单条的测试,在实际应用时,你可以参考下面代码,进行批量打标。
案例代码如下:
// 建议dashscope SDK的版本 >= 2.12.0 import com.alibaba.dashscope.app.*; import com.alibaba.dashscope.exception.ApiException; import com.alibaba.dashscope.exception.InputRequiredException; import com.alibaba.dashscope.exception.NoApiKeyException; import java.util.ArrayList; import java.util.List; public class Main { public static void appCall(String query) throws ApiException, NoApiKeyException, InputRequiredException { ApplicationParam param = ApplicationParam.builder() // 若没有配置环境变量,可用百炼API Key将下行替换为:.apiKey("sk-xxx")。但不建议在生产环境中直接将API Key硬编码到代码中,以减少API Key泄露风险。 .apiKey(System.getenv("DASHSCOPE_API_KEY")) .appId("YOUR_APP_ID") .prompt(query) .build(); Application application = new Application(); ApplicationResult result = application.call(param); System.out.printf("text: %s\n", result.getOutput().getText()); } public static void main(String[] args) { try { List<String> queryList = new ArrayList<String>(); queryList.add("怎么弄才能使领满300减120的券"); queryList.add("我就是在活动时间内参与的,让确认收货后送出赠品,4个冰晶"); queryList.add("我拍的面膜是不是正品,会不会过敏"); queryList.add("这款不是七天无理由退换吗"); queryList.add("请问这款大概什么时候补货呀"); queryList.add("这条裤子下架就是没了是吗"); queryList.add("不可以一起退货退款吗"); queryList.add("亲!身高一米六七,重120斤,什么码合适?"); for (String query : queryList) { appCall(query); } } catch (ApiException | NoApiKeyException | InputRequiredException e) { System.err.println("message:"+e.getMessage()); System.out.println("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code"); } System.exit(0); } }
在Java当中引入百炼的dashscope依赖,循环的去调用指定APP_ID 的工作流就可以实现批量数据打标
另外,除了售前售后这种简单意图的标注,也可以进行更复杂的意图标注和分类任务。
好了,已经讲解完了哦~~,快跟着文章操作吧。
如果需要进一步了解阿里云百炼的可直接点击下面链接哈:
👉阿里云百炼详情了解可点击此官网链接:阿里云百炼官网介绍
👉阿里云百炼控制台页面可点击此链接直接进入:阿里云百炼控制台
如果在创建过程中有任何的疑问都可以在评论区中留言探讨或是加入我们的官方支持群(群号:77600022533)进行交流反馈!