1. 模型与参数:先把 “硬件” 拉满

  • 模型选择分类任务必须用强推理模型

    • GPT-3.5-turbo / GPT-4
    • 通义千问 Pro / 文心 4.0 / 字节豆包 Pro小模型(7B、1.8B)分类准确率天生差,不建议用于意图判断。
  • 参数设置(关键)

    • Temperature = 0 ~ 0.1越低越稳定、越不会乱分类。
    • Top P = 0.1 ~ 0.3
    • 禁止开启 “创意模式”“自由发挥”

2. 只让分类器看当前问题,不要看历史对话

这是90% 人准确率低的核心原因。用户前面聊别的,后面突然问新问题,分类器会被上下文带偏。

正确做法:Question Classifier 的输入只传:

plaintext

sys.query

不要传入历史对话、不要传入系统提示。

3. 类别设计必须清晰、互斥、不重叠

类别越模糊,准确率越低。原则:

  • 类别之间不能有歧义
  • 一个问题只能属于一个类别
  • 类别数量不要太多(建议 3~8 类)
  • 必须加一个 【其他】兜底

错误示例:

  • 投资、融资、找机构、找资金 → 应该合并为【找投资】
  • 需求、项目、产品、痛点 → 合并为【找需求】

4. 提示词结构:固定格式 = 高准确率

给你一个Dify 分类器专用高准确率提示词,直接复制:

plaintext

你是一个严格的意图分类器。
规则:
1. 只根据用户当前这句话判断,不看上下文。
2. 必须且只能选择一个类别。
3. 语义不明确时,一律返回【其他】。

类别定义:

【找投资】
用户询问融资、投资人、基金、投资偏好、合作、资金、IPO、并购、退出。

【找需求】
用户询问项目、产品需求、市场机会、客户痛点、解决方案、功能设计。

【AI赛道】
涉及大模型、LLM、RAG、Agent、提示词、AI应用、AIGC、向量库。

【智能制造】
涉及机器人、工业自动化、芯片、硬件、装备、产线、工厂、精密制造。

【其他】
不属于以上任何类别。

用户问题:{user_query}
只输出类别名称,不要任何多余内容。

5. 给每个类别提供 3~5 个示例句(非常有效)

LLM 最喜欢示例,有示例准确率直接提升一档。在提示词里加:

plaintext

示例:
1. 我想融资 → 【找投资】
2. 有什么好项目 → 【找需求】
3. 怎么做RAG → 【AI赛道】
4. 工业机器人前景 → 【智能制造】
5. 今天吃什么 → 【其他】

6. 禁止输出解释,只输出类别名

分类器一旦开始解释,就容易跑偏。强制要求:

  • 只输出类别名称
  • 不要理由
  • 不要分析
  • 不要 JSON(除非你必须用 JSON)

简单输出最稳定。

7. 用 “强制格式指令” 锁死输出

在最后加一句:

plaintext

输出格式:仅输出【】内的类别名称,不输出任何其他内容。

8. 避免类别太细、太相似

例如:

  • 不要分:早期投资、成长期投资、PE 投资
  • 统一叫【找投资】细分类可以在后续节点再判断,不要让分类器一次性做太难的任务。

9. 测试集验证 & Bad Case 优化

准备 20~50 条测试问句,反复跑,把分错的句子加入提示词作为反例

例如:

plaintext

反例:
“我有项目想找钱” → 不属于【找需求】,属于【找投资】

反例越多,模型越不容易错。

10. 进阶:用 JSON 结构化输出(更稳定)

如果你希望后续流程更稳,可以让分类器输出 JSON:

plaintext

{
  "category": "找投资"
}

JSON 格式比纯文本更不容易乱输出。


最简单总结(照着做就能提高)

  1. 用强模型,温度 0.1
  2. 只看当前问题,不看历史
  3. 类别少、清晰、互斥
  4. 提示词给定义 + 示例
  5. 强制只输出类别
  6. 收集错例,优化提示词
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐