RexUniNLU 前端联动:Vue 组件库封装+Schema 可视化编辑器 + 实时效果预览
1. 为什么需要一套'看得见、调得动、信得过'的 NLU 前端方案?
你有没有遇到过这样的场景:后端模型已经跑通,analyze_text("查明天北京天气", ["查询天气", "城市", "时间"]) 能准确返回结构化结果,但业务同学盯着命令行输出直摇头——'这怎么嵌进我们 App 里?''客户要改个标签得找我改代码再发版?''能不能让我自己拖拽试试效果?'
RexUniNLU 本身是轻量、零样本、开箱即用的,但它默认只提供 Python 接口。真正落地到产品中,光有 test.py 远远不够。用户需要的是:能直观定义 Schema 的界面、能即时看到识别效果的预览区、能一键集成到 Vue 项目的可复用组件。
这不是锦上添花,而是把 NLU 能力从'技术验证'推向'业务可用'的关键一跃。本文不讲模型原理,不堆参数配置,只聚焦一件事:如何用前端工程化手段,让 RexUniNLU 真正活在业务系统里。
2. 整体架构设计:三层解耦,各司其职
我们没有选择'大而全'的单页应用,而是采用清晰分层的设计思路,确保每个模块专注解决一类问题:
2.1 数据层:Schema 驱动的统一数据模型
- Schema 是唯一数据源,编辑器修改它、预览器消费它、组件库接收它——避免状态散落。
所有交互围绕一个核心对象 Schema 展开,结构为:
interface Schema {
intent: string; // 主意图(如"订票意图")
entities: string[]; // 槽位列表(如["出发地", "目的地", "时间"])
examples?: string[]; // 可选:用于辅助理解的示例语句
}
2.2 视图层:三块独立但联动的 UI 区域
- 左侧 Schema 编辑器:可视化表单,支持增删改意图/槽位,带语义提示(如输入'订'自动联想'订票意图')。
- 中间实时预览区:输入任意测试文本,毫秒级触发
analyze_text()并高亮展示识别结果(意图置信度 + 槽位位置)。 - 右侧组件代码生成器:根据当前 Schema 自动生成可直接复制粘贴的 Vue 组件代码,含完整 props 和事件绑定。
2.3 集成层:开箱即用的 Vue 组件库
- 提供
<RexNluEditor />(Schema 编辑器)、<RexNluPreview />(预览面板)、<RexNluWidget />(生产环境嵌入式组件)三个基础组件。 - 所有组件均支持
v-model双向绑定,与 Vue 生态无缝融合,无需额外适配。
这种设计让技术同学专注模型能力,产品同学专注业务逻辑,前端同学专注交互体验——三方不再互相等待。
3. Vue 组件库封装:从命令行到 UI 组件的跨越
把 Python 函数变成 Vue 组件,核心不是'翻译',而是'抽象'。我们提炼出三个不可替代的能力点,并分别封装:

