Skip to content

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.comment

3. 分类类别

定义可能的分类类别,AI 会从这些类别中选择最合适的一个。

配置要求:

  • 至少需要 1 个类别
  • 最多支持 10 个类别
  • 类别名称不能重复
  • 类别名称不能为空

配置示例:

yaml
classes:
  - "产品问题"
  - "功能建议"
  - "使用咨询"
  - "账户问题"
  - "其他"

最佳实践:

  1. 类别定义要清晰明确,避免模糊或重叠
  2. 添加一个"其他"类别作为兜底选项
  3. 类别数量建议控制在 3-7 个,过多会影响分类准确度
  4. 使用描述性的类别名称,便于 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 支持多语言:

  1. 单一语言: 直接使用
  2. 混合语言: 在类别名称中使用对应语言
  3. 自动识别: 先用语言检测节点,再根据语言选择不同分类器

Q4: 分类结果不准确怎么办?

A: 改进方法:

  1. 优化类别定义

    • 使用更描述性的类别名称
    • 确保类别之间清晰互斥
  2. 提供更多上下文

    • 增加相关背景信息
    • 包含用户历史行为
  3. 更换模型

    • 尝试更强大的模型(如 GPT-4o)
  4. 添加示例

    • 在输入中包含分类示例(少样本学习)

Q5: 如何记录分类历史用于优化?

A: 建议流程:

AI 分类器
  → 条件分支(记录低置信度结果)
    → 保存到数据库
      - 原始文本
      - 分类结果
      - 置信度
      - 时间戳
  → 定期分析低置信度样本
  → 调整类别定义或添加训练数据

下一步

相关资源