AI 分类器
AI 分类器节点使用大语言模型对输入文本进行智能分类。它可以根据预定义的类别自动识别内容类型,适用于文本分类、情绪识别、意图判断等场景。
使用场景
典型应用
- 客户反馈分类 - 将客户反馈自动分类为"产品问题"、"功能建议"、"使用咨询"等
- 内容审核 - 识别用户生成内容的类型(正常、垃圾、违规等)
- 意图识别 - 在对话系统中识别用户意图(查询、投诉、购买等)
- 文档分类 - 自动将文档归类到不同主题
- 情感倾向 - 判断文本的情感倾向(积极、消极、中性)
节点配置
基础设置(参数面板)
1. 模型
选择用于分类的 AI 模型。
默认值: openai/gpt-4o
支持的模型:
- OpenAI 系列(GPT-4o, GPT-4, GPT-3.5-turbo 等)
- Anthropic Claude 系列
- 其他兼容 OpenAI API 的模型
提示: 对于简单的分类任务,可以使用成本更低的模型(如 GPT-3.5-turbo);复杂的分类场景建议使用 GPT-4o。
2. 输入文本
要分类的文本内容。
字段属性:
- 必填字段
- 支持表达式
- 支持多行文本输入
示例:
javascript
// 直接输入
"这个产品质量很好,非常满意"
// 使用表达式引用指定节点的数据
$('Webhook触发器').body.feedback
// 引用其他节点
$('HTTP请求').response.comment3. 分类类别
定义可能的分类类别,AI 会从这些类别中选择最合适的一个。
配置要求:
- 至少需要 1 个类别
- 最多支持 10 个类别
- 类别名称不能重复
- 类别名称不能为空
配置示例:
yaml
classes:
- "产品问题"
- "功能建议"
- "使用咨询"
- "账户问题"
- "其他"最佳实践:
- 类别定义要清晰明确,避免模糊或重叠
- 添加一个"其他"类别作为兜底选项
- 类别数量建议控制在 3-7 个,过多会影响分类准确度
- 使用描述性的类别名称,便于 AI 理解
自定义标签:
- 可以为每个类别重命名显示标签
- 点击类别字段的重命名按钮进行修改
高级设置(设置面板)
通用设置
总是输出 (Always Output)
yaml
alwaysOutput: false # 默认 false- 启用后,即使节点失败也会输出数据
- 防止工作流在此节点中断
执行一次 (Execute Once)
yaml
executeOnce: false # 默认 false- 启用后,只处理第一条数据
- 适用于只需要处理单个项目的场景
失败时重试 (Retry on Fail)
yaml
retryOnFail: false # 默认 false
maxTries: 3 # 最大重试次数
waitBetweenTries: 1000 # 重试间隔(毫秒)- 启用后,失败时会自动重试
- 可配置重试次数和间隔时间
错误处理 (On Error)
yaml
onError: "stopWorkflow" # 默认停止工作流选项:
- 停止工作流 - 出错时停止整个工作流
- 继续 - 将错误信息作为输出继续执行
节点描述 (Node Description)
- 添加自定义描述,帮助团队成员理解节点用途
输出数据
数据结构
分类完成后,节点输出以下数据:
javascript
{
"class": "产品问题", // 分类结果
"confidence": 0.95, // 置信度(0-1)
"input": "原始输入文本" // 原始输入内容
}访问输出数据
在后续节点中访问分类结果:
javascript
// 获取分类结果(引用指定节点)
$('AI分类器').class
// 获取置信度
$('AI分类器').confidence
// 获取原始输入
$('AI分类器').input工作流示例
示例 1: 客户反馈自动分类和路由
Webhook 触发器(接收反馈)
→ AI 分类器
classes: ["产品问题", "功能建议", "使用咨询", "账户问题"]
→ 条件分支(根据分类结果)
→ [产品问题] 通知产品团队
→ [功能建议] 添加到需求池
→ [使用咨询] 发送到客服
→ [账户问题] 发送到技术支持示例 2: 内容审核流程
接收用户评论
→ AI 分类器
classes: ["正常内容", "垃圾信息", "违规内容"]
→ 条件分支
→ [正常内容] 发布评论
→ [垃圾信息] 自动过滤
→ [违规内容] 标记并通知审核员示例 3: 多语言意图识别
聊天触发器
→ AI 分类器
input: $('聊天触发器').userMessage
classes: ["查询信息", "投诉", "购买咨询", "技术支持", "闲聊"]
→ 条件分支(根据意图路由)
→ [查询信息] → 知识库检索
→ [投诉] → 升级到人工
→ [购买咨询] → 产品推荐
→ [技术支持] → 技术文档搜索
→ [闲聊] → LLM 节点回复最佳实践
1. 类别设计原则
清晰互斥
yaml
# ✅ 好的设计
classes:
- "技术问题"
- "账户问题"
- "产品咨询"
# ❌ 不好的设计(类别重叠)
classes:
- "问题"
- "技术问题" # 与"问题"重叠
- "咨询"粒度适中
yaml
# ✅ 适中粒度
classes:
- "正面"
- "中性"
- "负面"
# ❌ 粒度过细
classes:
- "非常满意"
- "满意"
- "比较满意"
- "一般"
- "不太满意"
- "不满意"
- "非常不满意"2. 提高分类准确度
提供上下文信息
javascript
// ❌ 只有单句
input: $('Webhook触发器').message
// ✅ 包含上下文
input: `用户类型: ${$('Webhook触发器').userType}
历史记录: ${$('Webhook触发器').history}
当前消息: ${$('Webhook触发器').message}`使用描述性类别名称
yaml
# ❌ 模糊
classes: ["类型A", "类型B", "类型C"]
# ✅ 描述性
classes: ["产品功能问题", "账号登录问题", "支付相关问题"]3. 性能优化
选择合适的模型
- 简单分类任务:使用 GPT-3.5-turbo(速度快,成本低)
- 复杂分类任务:使用 GPT-4o(准确度高)
批量处理
- 如果需要分类大量文本,考虑使用循环节点批量处理
- 设置合适的并发控制避免 API 限流
4. 错误处理
添加置信度检查
AI 分类器
→ 条件分支(检查置信度)
→ [置信度 > 0.8] 自动处理
→ [置信度 < 0.8] 人工复核设置重试策略
yaml
retryOnFail: true
maxTries: 3
waitBetweenTries: 2000常见问题
Q1: 如何处理分类结果置信度低的情况?
A: 可以通过条件分支检查置信度:
AI 分类器
→ 条件分支
条件: $('AI分类器').confidence > 0.7
→ [是] 自动处理
→ [否] 标记为待人工审核Q2: 类别数量有限制吗?
A: 是的,类别数量限制为 1-10 个。
原因:
- 类别过多会降低分类准确度
- 增加 LLM 的处理难度和成本
建议:
- 如需更多类别,考虑使用分层分类
- 第一层做粗分类(如"技术"、"业务"、"其他")
- 第二层在每个大类下做细分
Q3: 如何处理多语言文本?
A: 大多数现代 LLM 支持多语言:
- 单一语言: 直接使用
- 混合语言: 在类别名称中使用对应语言
- 自动识别: 先用语言检测节点,再根据语言选择不同分类器
Q4: 分类结果不准确怎么办?
A: 改进方法:
优化类别定义
- 使用更描述性的类别名称
- 确保类别之间清晰互斥
提供更多上下文
- 增加相关背景信息
- 包含用户历史行为
更换模型
- 尝试更强大的模型(如 GPT-4o)
添加示例
- 在输入中包含分类示例(少样本学习)
Q5: 如何记录分类历史用于优化?
A: 建议流程:
AI 分类器
→ 条件分支(记录低置信度结果)
→ 保存到数据库
- 原始文本
- 分类结果
- 置信度
- 时间戳
→ 定期分析低置信度样本
→ 调整类别定义或添加训练数据