Files
PlantAI-rag-new/docs/team/cases_bioflow_intent.md
adminandClaude Fable 5 bd011650f6 fix(bioflow): 意图分流收窄 v1.1——仅明确分析指令进生信流,问答句一律 qa
用户反馈:不是所有对话都走生信编排,只有「用xxx进行分析」「帮我分析xxx」
类明确指令才是生信流程;「水稻SPL基因家族的最新研究进展有哪些?」
等问答句必须走原正常问答流程。

- intent.py/intent.js 同表双跑:任务动词+对象 / 前缀分析句式 / 分析链句式
  三通道;新增疑问引导词+问答主题词两道拦截;「研究」移出任务动词
  (「帮我研究一下水稻SPL家族」经前缀通道仍保 bioflow)
- cases_bioflow_intent.md 升 v1.1:40+15 用例,新增 #41-#55 问答句收窄
- test_intent.py 补 v1.1 用例,50 条全绿;PRD FR-BIO-001 同步收窄
- 部署:8098 已重启,ui/dist 重建同步 deploy-unified,浏览器端到端验证 PASS
  (问答句走 /api/qa/chat/stream,分析指令走 /api/bioflow/chat/stream 出路径卡)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-07 18:13:52 +08:00

12 KiB
Raw Permalink Blame History

生信意图分流词典与用例表(唯一事实源)

冻结版本 1.1(2026-09-07 收窄)| 作者 T1 初版 1.0,TL 于 2026-09-07 按用户反馈收窄更新| 前后端同表双跑:A3 ui/src/utils/intent.js 与 A2 后端 chat 分流共用本表;任何改动需更新本文件并经 TL 确认。需求来源:PRD.md FR-BIO-001/FR-BIO-023/FR-BIO-026。

v1.1 变更动机(用户 2026-09-07 反馈):不是所有对话都走生信流程编排,只有用户明确说了「用 xxx 进行分析」或「帮我分析 xxxxx」才是生信流程;其余问答类(如「水稻 SPL 基因家族的最新研究进展有哪些?」)必须走原正常问答流程。v1.0 规则 6「分析动词+家族/对象」过宽(「研究」+「SPL 家族」命中问答句),v1.1 将命中通道收窄为三条:任务动词+对象、前缀分析句式、分析链句式;并新增疑问引导词与问答主题词两道拦截。

1. 路由签名

route(text, has_attachments, has_active_artifact, has_bioflow_context) -> "qa" | "docgen" | "edit" | "export" | "bioflow" | "bioflow_qa"

2. 判定顺序(按优先级从上到下,命中即返回)

1. export(需 has_active_artifact == True)

text 含任一 EXPORT_WORD 且含任一 FORMAT_WORD(沿用 docgen 词典:EXPORT_WORD=[导出,转成,转为,转换成,下载成,输出为,存为,转pdf,转word];FORMAT_WORD=[pdf,docx,doc,word] 小写不敏感)。不满足则继续向下。

2. edit(需 has_active_artifact == True)

text 含任一 EDIT_WORD=[改,修改,调整,删,删除,加一段,补充,润色,缩写,扩写,重写,改写,优化,加个,增加一段],且不含任一 CHART_WORD(见下)。含 CHART_WORD 时跳过本规则(图表调整走生信 FR-BIO-019)。不满足则继续向下。

3. docgen(写文档意图)

text 含任一 WRITE_VERB 且含任一 DOC_TYPE(沿用 docgen 词典全表)。命中→docgen。

4. docgen(附件信号)

has_attachments == True 且 text 含任一 WRITE_VERB。命中→docgen。

5. bioflow_qa(流程咨询,需 has_bioflow_context == True,即当前会话已有生信任务/生信对话上下文)

text 含任一 FLOW_QA_WORD:

  • FLOW_QA_WORD = [需要什么输入, 有什么输入, 输入是什么, 需要什么参数, 参数是什么, 什么参数, 怎么设置, 如何设置, 什么软件, 用什么软件, 前置条件, 介绍, 是什么, 怎么跑, 怎么做] 命中→bioflow_qa(生信流内流程咨询,走 vstore flow_docs 检索+引用,不新建任务)。

5b. 流程咨询句式(无上下文)→ qa(漏判安全,用例表 #18)

5c. 疑问引导词拦截(v1.1)

text 含任一 QUESTION_WORD = [什么, 怎么, 如何, 哪些, 哪个, 什么软件] 且不含 REUSE_PHRASE → qa。 「水稻 SPL 家族怎么跑分析」类问句一律 qa;复用句式豁免(复用判定优先)。

5d. 问答主题词拦截(v1.1)

text 含任一 QA_TOPIC = [研究进展, 研究现状, 研究热点, 最新研究, 最新进展, 最新成果, 研究成果, 研究趋势, 综述, 进展] → qa。 「帮我分析水稻 SPL 家族的最新研究进展」也 qa(主题句优先于分析指令)。不含「研究」单字——「帮我研究一下水稻 SPL 家族」是分析指令(用例表 #5 保持 bioflow)。

6. bioflow(生信分析意图,v1.1 三通道,任一命中即 bioflow)

  • A. 任务动词 + 对象:text 含任一 TASK_VERB = [跑, 跑一下, 分析, 鉴定, 识别, 做个, 做一个, 做一下, 研究一下, 执行, 运行, run, identify] 且含任一 FAMILY_NAME 或 ANALYSIS_OBJECT。注意:裸「做」「研究」不在 TASK_VERB(v1.0 曾含),已移入 CHAIN_VERB——「研究」+ 家族名不再直接命中(「SPL 家族最新研究进展」走 qa)。
  • B. 前缀分析句式(v1.1):text 含前缀 [帮我, 请帮我, 请你, 帮我分析, 请帮我分析] + 链动词 + 宾语对象(家族名 或 分析对象)。「帮我分析水稻 SPL 家族」→ bioflow;「帮我研究一下水稻 SPL 基因家族」→ bioflow(补语「一下」容许);「帮我做水稻全基因组变异检测」→ bioflow(用例表 #12);「帮我看看水稻 SPL 家族」→ qa(「看」非链动词,漏判安全)。
  • C. 存档复用句式:text 含任一 REUSE_PHRASE = [存档任务的方法, 存档的方法] 且含任一 TASK_VERB 且含任一 FAMILY_NAME 或 ANALYSIS_OBJECT(如「用 XXX 存档任务的方法帮我跑水稻 SPL 家族鉴定」;复用的方法名 = REUSE_PHRASE 之前最近的 3-20 字符片段,如 XXX)。
  • D. 分析链句式(v1.1 附加通道):text 含链动词 CHAIN_VERB = [分析, 研究, 做, 跑](全词边界匹配,「关联分析」不被「分析」误拆)且其后含 ANALYSIS_OBJECT(如「什么软件做全基因组注释」已被 5c 拦截;「帮我分析水稻叶片 RNA-seq」命中)。 命中→bioflow;否则继续向下。

7. 其余一律 "qa"(漏判安全:不命中绝不进生信流)

3. 生信词典(两表共用,v1.1)

  • FAMILY_NAME(基因家族名,小写比较)= [spl, sbp, mads, mads-box, madsbox, wrky, nac, myb, bzip, bhlh, ap2, erf, gras, tcp, hd-zip, hdzip, arf, aux, iaa, dof, gata, hsf, lbd, lob, trihelix, e2f, cpp, nf-y, nfy, c2h2, zf-hd, zfhd, far1, frs, hb, wox, pin, mate, abc, pp2c, snrk, cdpk, mapk, rlck, nbs, lrr, nlr, tps, cyp, gst, ugt, 转录因子家族, 基因家族]
  • ANALYSIS_OBJECT(分析对象,小写比较)= [rna-seq, rnaseq, rna-seq, 转录组, 差异表达, wgs, 全基因组, 变异检测, 全基因组测序, gwas, 关联分析, 全基因组关联, 群体, 群体遗传, 遗传多样性, 进化, 系统发育, 选择性清除, 群体结构, 拷贝数变异, 基因预测, 基因注释, 结构注释, 功能注释, 宏基因组]
  • CHART_WORD(图表调整词,供 edit 规则排除)= [图表, 图颜色, 颜色换成, 图改成, 柱状图, 热图, 火山图, 曼哈顿图, 韦恩图, 气泡图, 散点图, 折线图, 改成红色, 换成蓝色, 颜色]
  • TASK_VERB(v1.1 任务动词) = [跑, 跑一下, 分析, 鉴定, 识别, 做个, 做一个, 做一下, 研究一下, 执行, 运行, run, identify]
  • CHAIN_VERB(v1.1 链动词) = [分析, 研究, 做, 跑](全词边界匹配)
  • VERB_PREFIX(v1.1 前缀) = [帮我, 请帮我, 请你, 帮我分析, 请帮我分析]
  • QUESTION_WORD(v1.1 疑问拦截) = [什么, 怎么, 如何, 哪些, 哪个, 什么软件]
  • QA_TOPIC(v1.1 主题拦截) = [研究进展, 研究现状, 研究热点, 最新研究, 最新进展, 最新成果, 研究成果, 研究趋势, 综述, 进展]

4. 用例表(40 条 v1.0 + 15 条 v1.1 新增,前端 intent.js 与后端分流同表双跑)

# 输入 text 附件 活动文档 生信上下文 期望
1 帮我跑水稻 SPL 家族鉴定 否 否 否 bioflow
2 跑一下拟南芥 MADS-box 家族分析 否 否 否 bioflow
3 请帮我鉴定水稻 SPL 家族 否 否 否 bioflow
4 识别玉米 bZIP 家族成员 否 否 否 bioflow
5 帮我研究一下水稻 SPL 基因家族 否 否 否 bioflow
6 分析小麦 WRKY 转录因子家族 否 否 否 bioflow
7 做个大豆 NAC 家族分析 否 否 否 bioflow
8 跑 SPL 家族 否 否 否 bioflow
9 水稻 SPL 家族,帮我跑 否 否 否 bioflow
10 基因家族鉴定:水稻 SPL 否 否 否 bioflow
11 帮我跑水稻叶片 RNA-seq 差异表达分析 否 否 否 bioflow
12 帮我做水稻全基因组变异检测 否 否 否 bioflow
13 帮我跑水稻产量性状 GWAS 关联分析 否 否 否 bioflow
14 什么是基因家族? 否 否 否 qa
15 帮我跑一下 否 否 否 qa
16 SPL 家族 否 否 否 qa
17 今天天气不错 否 否 否 qa
18 跑 SPL 家族鉴定需要准备什么输入? 否 否 否 qa(无生信上下文漏判安全)
19 帮我跑一个数据分析 否 否 否 qa
20 你好呀 否 否 否 qa
21 (空字符串) 否 否 否 qa
22 帮我跑香蕉 XYK 家族鉴定 否 否 否 qa(XYK 不在家族词典)
23 跑水稻 spl 家族鉴定 否 否 否 bioflow(家族名大小写不敏感)
24 Please run rice SPL family identification 否 否 否 bioflow
25 帮我跑(水稻 SPL 家族)鉴定! 否 否 否 bioflow
26 用 XXX 存档任务的方法帮我跑水稻 SPL 家族鉴定 否 否 否 bioflow(复用意图,方法名=XXX)
27 根据 XXX 存档任务的方法帮我跑一下玉米 bZIP 否 否 否 bioflow(复用)
28 参考 XXX 存档的方法再跑一个水稻 SPL 否 否 否 bioflow(复用)
29 用《XXX》存档任务的方法帮我跑小麦 WRKY 家族 否 否 否 bioflow(复用,方法名=XXX)
30 用 XXX 存档任务的方法 否 否 否 qa(无目标任务词)
31 用 XXX 存档任务的方法帮我跑 yyy 否 否 否 qa(yyy 无家族/对象匹配,漏判安全)
32 帮我生成一份水稻 SPL 家族分析报告 否 否 否 docgen(docgen 优先于 bioflow)
33 帮我写一篇水稻基因家族研究论文 否 否 否 docgen
34 导出成 PDF 否 是 否 export
35 把这句话改成红色 否 是 否 edit(无图表词)
36 xxx 图表颜色换成红色 否 是 否 bioflow(图表词,走 FR-BIO-019)
37 identify 需要什么输入 否 否 是 bioflow_qa(不新建任务)
38 帮我总结一下这个问题的要点 否 否 否 qa
39 写一段水稻基因的介绍 否 否 否 qa(介绍在 docgen 排除表)
40 跑水稻 SPL 家族鉴定 否 是 否 bioflow(活动文档不改判定)
41 水稻SPL基因家族的最新研究进展有哪些? 否 否 否 qa(v1.1:问答句不进生信流)
42 水稻 SPL 基因家族最新研究进展 否 否 否 qa(v1.1:主题词拦截)
43 水稻SPL基因家族研究进展如何? 否 否 否 qa(v1.1)
44 水稻SPL基因家族有哪些最新的研究成果? 否 否 否 qa(v1.1)
45 SPL 基因家族有什么新的发现吗? 否 否 否 qa(v1.1)
46 怎么用 PlantAI 分析水稻 SPL 家族 否 否 否 qa(v1.1:疑问引导词拦截)
47 如何跑水稻 SPL 家族鉴定 否 否 否 qa(v1.1:疑问引导词拦截)
48 什么软件做全基因组注释 否 否 否 qa(v1.1:疑问引导词拦截)
49 帮我分析水稻SPL基因家族 否 否 否 bioflow(v1.1:前缀分析句式)
50 帮我做水稻全基因组变异检测 否 否 否 bioflow(v1.1:链动词直接邻接宾语,金标 #12 保持)
51 帮我做一下水稻全基因组变异检测 否 否 否 bioflow(v1.1)
52 帮我分析鉴定水稻 SPL 家族 否 否 否 bioflow(v1.1)
53 帮我分析水稻 SPL 家族的最新研究进展 否 否 否 qa(v1.1:主题词优先于分析指令)
54 水稻 SPL 家族研究综述 否 否 否 qa(v1.1)
55 帮我看看水稻 SPL 家族 否 否 否 qa(v1.1:「看」非链动词,漏判安全)

5. 实现注意(前后端一致)

  1. 判定全部为纯文本子串匹配(小写化后),不依赖 LLM;命中即返回,顺序不可调换。
  2. 复用方法名提取:REUSE_PHRASE 命中时,取 REUSE_PHRASE 之前最近的连续 3-20 字符(去空白与书名号)为方法名,随路由结果一并返回。
  3. bioflow_qa 仅在 has_bioflow_context=true 时生效;无上下文时同类句子一律 qa(漏判安全)。
  4. 边界约定:文本长度 ≤1 或纯空白 → qa;文本 >2000 字符 → 按截断后前 2000 字符判定。
  5. 本词典为唯一事实源:前端 utils/intent.js 与后端分流实现必须与本表逐条双跑一致(同表双跑由 L3/L2 用例 TC-BIO-INTENT-001~047 执行;v1.1 新增 #41-#55 覆盖问答句收窄与补语边界)。
  6. v1.1 收窄原则:漏判安全优先——拿不准的句子一律 qa;三条命中通道(任务动词+对象 / 前缀分析句式 / 分析链句式)必须能明确读出「用户要求执行分析」;问答主题词(研究进展/综述等)与疑问引导词(什么/怎么/如何等)拦截一切生信通道。