数据应用通用智能体

取数不用排队,
答案带着口径

业务人员用一句话问出的每个数字,都来自 Mensura 治理过的指标定义,可追问、可溯源、可审计——不再等分析师排期,不再各团队各算各的口径。

Mensura 助手 合理用药
限制使用级以上抗菌药物使用比例,最近趋势怎么样?我们这块监管压力比较大
核对指标口径 0.3s 成功
查询指标:M_RESTRICTED_RATE 0.9s 依据 1 成功

2025年全院季度趋势:Q1 71.6% → Q2 68.4% → Q3 69.2% → Q4 65.3%,逐季下降约 6.3 个百分点,管控效果明显。

口径为「限制使用级及特殊使用级 DDD ÷ 全部抗菌药物 DDD × 100%」,数据来自已授权院内数据源,本次查询已写入审计。

看各科室占比 这个比例怎么算出来的? 跟床位周转放一起看
界面为真实组件,数据取自演示场景

Mensura 智能体层构建于

Mensura 指标引擎构建于

Spring Boot MyBatis-Plus MySQL Cube.js 语义层 Docker

这些场景,大概率你们正在经历

不是缺看板,是缺一个能随时被问、答得准、还能追问下去的数据入口。

取数要排队

业务人员想看一个数,要建需求单、等分析师写查询、来回对需求,一来一回好几天,等数据到手,决策窗口已经过去了。

口径各算各的

「日活」「转化率」「使用比例」在不同报表里数字对不上,开会先花半小时对齐口径,而不是讨论口径背后的问题。

异常没人主动发现

指标出了问题,往往是月底复盘时才被翻出来,没有人在那个时间点追着问「这个数字为什么变成这样」。

看板做了,没人看

BI 看板堆了一屏图表,但业务人员平时不会主动打开,真正要用的时候还是靠拍脑袋,或者临时拉人重新算一遍。

一个智能体,两层能力

指标先算对,人才能问得到

Mensura 内部分两层:指标引擎负责定义口径、执行查询,是数字的来源;智能体层是业务人员唯一接触到的入口,只能通过命名指标调用向指标引擎取数——内部两层谁都绕不过谁。

Mensura 指标引擎
  • 指标模板库:跨场景复用的业务指标定义,审定一次、全局生效
  • 语义层执行:把口径解析到你真实的数据源上,直接产出指标值
  • 比例指标原生建模:分子/分母两个原子指标即可派生复合口径,不用人肉写除法
  • 预聚合语义层:高基数指标查询靠预聚合压到毫秒级,而不是每次现算
查看分层架构
Mensura 智能体层
  • 自然语言问答:业务人员不用懂表结构,直接用人话提问
  • 严格参数网关:唯一能发出的是命名指标调用,没有自由 SQL
  • 出口脱敏与审计:PII 在返回前拦截,每次调用可回放
  • 多轮追问:趋势、下钻、口径解释,不用换工具接着问
查看治理链路

让模型写 SQL,等于把口径交给概率

同一个问题问两次,生成两套 SQL,得到两个数。这在演示里无所谓,在监管报表里不行——所以 Mensura 从不让 agent 自己写查询。

让 agent 自己写 SQL
  • 口径散落在提示词里,改一次要追着改很多处
  • 越权查询只能靠数据库权限兜底,网关层拦不住
  • 患者姓名、身份证号可能随结果集直接流回模型
  • 数字对不上时,没人说得清是哪一步出的错
Mensura 的做法
  • agent 唯一能发出的是命名指标调用,参数结构固定
  • 口径由指标引擎的模板定义,审定一次全局生效
  • 身份随请求透传,权限在网关和指标引擎双重生效
  • PII 在出口拦截,每次调用留痕可回放

真实效果

同一个对话,一路追问到管理动作

下面是两个真实场景的对话节选:从一个总量数字,追问到结构拆解、口径来源,全程没有换工具,也没有等人重新拉数。

Mensura 助手 合理用药
我们医院最近几年每年的抗菌药物总费用是多少?

2024年 ¥19,922,2025年 ¥960,150,2026年至今 ¥459,834。2025年较2024年增长显著。

各个科室在2025年的情况呢?

按费用排序:血液内科 ¥430,300、重症医学科 ¥327,514、神经外科 ¥214,178……前五科室合计占全院总费用的 86.2%

限制使用级以上抗菌药物使用比例呢?这块监管压力比较大

全院季度趋势逐季下降:Q1 71.6% → Q4 65.3%。但血液内科等四个科室 2025 年全年比例达 100%,建议结合病种构成评估是否有降级空间。

这个比例是如何算出来的?

口径为「限制使用级及特殊使用级抗菌药物 DDD 数 ÷ 所有抗菌药物 DDD 总数 × 100%」,以用药强度而非病例数计量——`describe_metric` 工具已返回该指标的完整组成定义。

用户总的商品页面浏览量大概是多少?

用户总的商品页面浏览量为 89,716,264 次(约 8,972 万次)。

从浏览、加购、收藏、购买这几种行为角度看看数据情况

浏览占 89.6%,加购 5.5%,收藏 2.9%,购买 2.0%。浏览到购买的转化率(CVR)约 2.25%

用户一天内什么时段最活跃?

12:00–15:00 是黄金时段,其中 13~14 点为全天峰值;凌晨 0~8 点也有可观的浏览量。

12月购买转化率多少?

看到 CVR 字段返回的是绝对数值而非百分比,先核对了指标定义(CVR = 购买次数 ÷ 浏览次数),再重新计算:707,885 ÷ 33,187,384 ≈ 2.13%

界面为真实组件,对话节选自真实演示场景
  • 一次提问延伸出四层追问,全程没有切换工具或等人重新建表
  • 任何一个数字都能倒推出计算公式和数据口径来源
  • 指标定义有歧义时,agent 会先核对口径再回答,而不是直接编造

指标是产品,不是提示词

指标引擎维护一套跨场景的业务指标模板库,映射到你的数据源上,成为智能体层唯一的取数入口。

Mensura 指标引擎 · 指标定义

模板定义语义,绑定落到你的列

模板只描述指标的业务语义和它需要的字段角色,与具体列名无关。接入时由绑定关系把角色解析成你库里的真实字段。

M_SPECIAL_USE_RATE
名称特殊使用级抗菌药物使用率
口径特殊使用级 DDDs ÷ 住院总床日数 × 100%
领域合理用药
单位%

Mensura 智能体层 · 对话能力

趋势追问不用换工具

时间范围是调用参数的一部分,追问「近 6 个月怎么变的」走的还是同一个指标。

2月7月

Mensura 智能体层 · 治理网关

治理不是事后补的

脱敏、引用、审计这三件事发生在网关内部,任何消费方都绕不过去。

已脱敏 2 依据 1 已写入审计 身份已透传 熔断后降级

Mensura 指标引擎 · 业务域

一个入口,多个业务域

业务域列表从指标引擎实时拉取,切换后重新划定智能体层可查询的指标范围,建议问题也跟着换。

合理用药 上月特殊使用级使用率是多少?
医疗质量 本季度非计划重返率
运营效率 平均住院日的科室分布

治理链路

一次提问,六道关卡

从自然语言到落库的数字,中间没有任何一步是模型可以自由发挥的。

提问

用业务语言描述,不需要知道表名

路由

判断走取数、查术语还是查规范

命名指标调用

参数结构固定,无自由文本字段

指标引擎执行

语义层解析并查询数据仓库

出口脱敏

PII 在返回模型之前被拦下

审计留痕

路由理由和工具调用可逐条回放

Mensura 智能体层向指标引擎能发出的唯一请求形状
// 没有 sql 字段,也就没有自由发挥的余地
POST /agent/query
{
  metricIds:      ["M_SPECIAL_USE_RATE"],
  dimensionCodes: ["dim_dept"],
  filters:        [{ dimensionCode: "dim_level", operator: "eq", values: ["特殊使用级"] }],
  timeFilter:     { dateRange: ["2026-06-01", "2026-06-30"], granularity: "month" }
}

参数不合法、指标未绑定、身份无权限,任意一条不满足,请求在网关就被拒绝,不会到达指标引擎的数据仓库。

Mensura 智能体层 · 接入与治理

接得进来,才谈得上治理

模板是通用的,你在指标引擎里连好的数据源是特殊的。中间这层映射由智能体层的 AI 匹配器给出草案,由人确认后才生效。

接入数据源

指标引擎连接数据源后自动读取表结构、字段类型和样本分布,形成一份可核对的清单。

映射字段角色

Mensura 的匹配器把你的列对应到模板要求的字段角色,给出置信度和它的判断依据。

人工复核发布

绑定关系经人工确认后写入,每次变更都记录在案,可以回溯是谁改的。

74%

覆盖率闸门

系统会算出这套数据源能支撑多少个模板指标。没到最小可用集之前,它会明确告诉你还差哪几个字段,而不是先上线再发现答不出来。

上图为示例数值

分层定位

智能体层治理对话,指标引擎定义并执行指标

指标的定义和执行留在指标引擎,智能体层负责语义路由、治理网关和对话这一层,两层通过一份严格的内部契约相连。

消费方
对话问答报告生成对话内下钻第三方 agent
Mensura 智能体层
严格参数网关PII 出口脱敏身份透传审计留痕知识库检索
Mensura 指标引擎
指标模板库绑定与校验语义层指标取值数据仓库权限上下文

上层换掉不影响指标引擎的治理规则,下层换掉不影响智能体层的调用契约。指标的定义和它的执行引擎解耦,这是这套分层唯一的目的。

先看一次真实提问

带上你们最常问、也最容易口径打架的那个指标。一次演示大约 30 分钟,我们直接在你的场景里过一遍。