Skip to content

意图路由使用手册

适用读者:Halo 管理员、内容运营人员
适用版本:AI 智能套件 0.2.23
前置条件:插件已启用,Chat 模型可用

适用场景

意图路由适合需要读取站内实时文章数据、规则明确且可验证的问题:

  • 最近发布了哪些 AI 文章?
  • 哪些文章最热门?
  • 给我看看 Java 标签下的文章。
  • 列出某个分类中最新的十篇文章。

如果问题需要从文章正文中寻找知识答案,应该继续走 RAG,而不是为每个问题建立意图。

意图路由管理页面

一次命中会发生什么

意图路由示例

路由字段

字段作用建议
ID路由唯一名称使用小写字母、数字和连字符
显示名称Console 中可读名称用业务语言命名
描述说明适用范围写清包含和不包含什么
启用是否参与检测调试完成后再开启
优先级多路由同时命中时的顺序越具体的路由优先级越高
触发规则正则表达式,任一命中即可避免过宽的单字触发词
LLM 兜底正则未命中时允许模型分类只对难以正则表达的场景开启
Pipeline有序文章处理步骤先过滤,再排序和限制数量
输出模板约束最终回答格式为空时使用默认模板

新建路由示例:Java 教程推荐

1. 基本信息

text
ID: java-tutorials
显示名称: Java 教程推荐
优先级: 100
启用: 先关闭

2. 触发规则

text
Java.*教程
学习.*Java
Java.*入门

触发规则是 OR 关系。表达式使用部分匹配,不需要手工在两端添加 .*,除非你确实要表达中间存在任意内容。

3. Pipeline

推荐步骤:

text
TOPIC_MATCH
  prompt=判断文章是否属于 Java 教程或 Java 学习资料
  aliases=Java=JVM,JDK,Spring
  candidateLimit=200
  limit=30

TIME_SORT
  order=desc
  limit=10

4. 输出模板

text
请按从新到旧的顺序推荐文章。每篇使用“标题 + 一句话说明”的格式,
只允许使用候选文章,不要虚构不存在的文章。

5. 试跑并启用

在编辑页使用试跑功能,输入:

text
我想系统学习 Java,有哪些教程?

检查每一步的输入、输出文章数和标题。结果正确后再开启路由。

处理器参数

TOPIC_MATCH

参数含义
prompt提供给主题判断的额外规则
aliases主题别名,使用 AI=人工智能,多组用分号分隔
candidateLimit进入 LLM 判断的候选上限
limit输出文章上限
onFailureempty(默认)或 keep

LLM_TITLE_FILTER

纯粹根据标题让 LLM 返回相关序号。它看不到完整正文,适合标题表达清楚的文章集合。

参数含义
prompt主题判断说明
limit输出上限
onFailure失败策略

TAG_MATCH / CATEGORY_MATCH

参数含义
modefrom_query 从问题提取;fixed 使用固定值
tags / categories固定模式使用的名称
onFailure失败策略

KEYWORD_MATCH

参数含义
mode从查询或固定参数取关键词
fieldstitle 或标题/内容组合
keyword固定关键词

它做字符串包含,不做语义理解。同义词需求优先使用 TOPIC_MATCH。

TIME_SORT

参数含义
orderdesc 最新优先;asc 最早优先
limit排序后保留数量

发布时间为空的文章会排在末尾。

VISIT_SORT

limit 控制保留数量,浏览量来自 Halo Counter。

优先级设计

意图优先级设计

如果两个路由都能匹配同一句话,只会返回排序后的第一个。优先级设计错误可能让通用意图“截胡”具体意图。

LLM 兜底的成本与边界

只有正则全部未命中后,才会考虑 llmFallback=true 的候选。分类超时 2 秒,失败后自动回到 RAG。开启后会增加 intent_detect 模型调用,因此不要给所有路由无差别开启。

失败策略

处理器异常时默认输出空列表。这是为了避免过滤失败后把所有文章当成匹配结果。只有明确接受这种风险时才设置 onFailure=keep

验证清单

  • 目标问题能命中。
  • 相似但不属于目标的问题不会误命中。
  • 多路由冲突时优先级符合预期。
  • 每一步输出数量合理。
  • 最终回答只包含真实候选文章。
  • 引用链接可以打开。
  • 用量统计中能区分 intent_detectintent_pipeline

相关文档

基于 GPL-3.0 许可发布