Uber Finch:财务问答先解决口径和权限,再生成查询
本页目录 · 7 个段落
财务人员问出一个短问题,背后可能藏着数据源、指标定义、地域、时间和币种等多重选择。Uber 的 Finch 不是让模型凭记忆回答数字,而是在 Slack 中把问题转为受控的数据查询。
其值得借鉴的地方,是先降低数据面的复杂度,再给模型补足企业语义,最后检验查询结果。自然语言只是入口,可靠性仍取决于这些入口之后的工程约束。Uber 官方工程文章
- 01
确认指标、期间与区域
→ - 02
检索字段别名和表规则
→ - 03
核验用户权限后执行
→ - 04
交付查询及结果表格链接
→ - 05
追问仍核对口径与结果
依据 Uber 公开流程整理;结果比较不等于因果分析。
把多系统找数变成可追溯的请求
Uber 财务人员原来需要在 Presto、IBM Planning Analytics、Oracle EPM 和文档之间找数据;会写 SQL,也未必清楚当前指标应从哪个系统取。Finch 把请求留在已有协作环境中,监督代理负责选择适当的专业代理,专业代理调用数据工具。
这不是让一个 SQL 工具代替全部系统。官方集成图区分 SQL、MDX、JSON 等接口路径。SQL 面向关系查询,MDX 面向多维数据;同样一句业务问题,在不同系统中可能需要不同表达和口径。官方图示的工具列表也不能当成某次请求实际逐项执行的日志。
监督层的价值不只是“分发任务”。如果两个工具都能回答近似问题,却对应不同财务用途,路由错误仍可能得到一个能正常执行、看似可信的数字。因此路由需要单独评价,不能只看工具有没有报错。
数据集先收敛,模型才有可控的选择空间
Finch 使用经过整理的、领域专用的单表数据集,将常用指标集中起来,减少复杂关联。它没有把整个企业数据库的结构一股脑交给模型。
这项取舍把一部分难度前移给数据团队:指标整合和治理需要维护,但模型每次查询需要猜测的关联路径减少了。它尤其适用于高频、口径相对稳定的财务问题;不能由此推断任意跨库分析都已自动化。
另一层约束来自 OpenSearch 中的元数据。索引不仅有列名,还有列值的自然语言别名。以官方上下文图为例,GBs 指向 gross bookings,不能随意译成“收入”;US&C 需要落到美国与加拿大的区域表达。列名映射解决“取哪一个量”,列值映射解决“筛哪一部分”。
只给表结构和几行样本,往往覆盖不了企业缩写或历史命名。别名层把这些知识变成可查找的资产,也让错误定位有了对象:是没找到指标、选错候选,还是把业务地域翻译成了错误筛选值?这是语义问题,换一个更会写 SQL 的模型未必解决。
查询上下文里,字段和业务规则缺一不可
官方 Figure 2 把上下文取得拆为四项工具职责,而不是一次检索后就生成 SQL:
| 工具 | 原图实际展示的输入或输出 | 尚待完成的判断 |
|---|---|---|
| Column Finder | GBs 命中 finance_datamart.gross_bookings 与 tax_datamart.gross_bookings,均为 double | 同名同类型不代表同口径,还需选择数据集 |
| Value Finder | US&C 命中 jelines.country_name 的 US、CA,以及 finance_datamart.megaregion_name 的 US & Canada | 地域含义相近,具体谓词须与所选表对应 |
| Get Table Rules | accounting_date 必需、无默认;rate_type 必需、默认 USD,并提供规则和查询例子 | 时间不能静默缺省;默认值也需要符合当前问题 |
| Execute SQL | 查询结果返回代理上下文 | 结果参与业务解释,而非执行后直接抛给用户 |
这些工具结果逐步进入 Agent Context,SQL Writer 据此继续取证、构造和解释查询。最后的交付包括问题与查询的映射、带注释的查询和完整结果链接。图没有公开完整 SQL、候选排序算法或所有规则,所以不应从两个候选反推一套已知选表公式。
这个细节影响最终答案:字段存在,不等于适用于当前问题;日期范围补错、币种规则遗漏,查询照样可能成功执行。表级说明应与字段一起到达生成环节,而不是留在用户另一个文档标签里。
从输入到输出,公开可确认的职责链是:Slack 接收问题;监督代理选择专业代理;专业代理检索字段、值别名和表级说明;构造查询;执行前验证用户权限;执行错误反馈给代理用于改写;返回结果、所执行查询的细节及可用的 Sheets 链接。
这条链并未公开完整系统提示词、查询工具的参数结构或鉴权令牌如何跨服务传递。不能把一种合理的接口设计画成 Uber 已实现的接口。
图分别依据官方 Figure 2 与 Figure 3 重构。它们是不同证据视图,不能连成同一条调用日志。
文章文字按 SQL 解释用户旅程,但 Figure 3 界面列出的真实工具包括 mdx_writer、cube_element_finder、mdx_dim_writer、execute_dim_mdx_query、execute_cube_mdx_query。它们分别指向多维查询构建、维度元素查找、维度查询和立方体查询的工作职责。公开界面显示了这组工具,不足以确定每次调用的参数、完整内容或严格顺序;不能把它们拼进 Figure 2 的 SQL 执行链。
状态消息、追问和导出,是查询产品的一部分
查询不总能立即完成。Finch 的 LangGraph 应用通过回调更新 Slack 状态,让用户知道正在发生工具调用。Slack 的建议问题、固定入口和分栏交互降低了找入口的成本;状态反馈则减少用户把后台执行误认成卡住的机会。
官方演示允许在上一轮基础上追问、修改比较期间,再把结果送到 Google Sheets。连续追问要求系统保留业务上下文:变了时间,不意味着前面指标和其他限定条件都该消失。不过官方没有公开其会话状态对象、条件覆盖优先级或结果版本协议。
这也是产品设计和安全设计相遇的地方。查询时有权限,并不自动证明导出后仍维持相同访问范围。Uber 文章公开了查询权限与导出能力,没有披露 Sheets 分享策略、导出时再次鉴权或失效机制。它们应成为迁移项目的核查项,而不能借此案例宣称已有完整答案。
错误改写有用,但“最终执行成功”不是正确答案
数据库报错可以提示语法或字段错误,代理据此重写。它无法独自发现“选错了能正常查询的数据源”或“时间与口径不符”。所以 Finch 的评价分层展开:
| 评价对象 | 公开的判断方式 | 能发现的问题 |
|---|---|---|
| 专业查询代理 | 生成查询的结果与标准查询结果比较 | SQL 写法不同但结果等价,或执行成功却数值错误 |
| 监督代理 | 单独检查路由选择 | 模糊意图、相近工具能力造成的误路由 |
| 整体系统 | 场景验证与历史问题回归 | 提示词或模型更新引入的跨环节倒退 |
结果比较比逐字匹配 SQL 更贴近财务任务,但仍依赖标准查询可信、数据时间一致、比较规则合理。官方没有公布测试集大小、容差与具体分数,也没有给出足以独立复算的速度或成本结果。
文章还提到查询优化、可并行任务和高频指标预取。这些不能泛化成所有步骤并发:依赖表选择或权限判定的动作,仍有先后关系。具体并发控制和重试预算未公开。
人工验证按钮当时仍是计划
Uber 把“请求专家验证”列为未来方向:把问题与生成结果交给领域专家核对,再反馈用户。现有财务结果不代表逐份经过专家签署。
同样,未来更多意图和工具的架构图是扩展方向,不是当前覆盖清单。当前公开材料支持一个有明确边界的财务查数代理,尚不足以证明自动完成预测、预算和所有高风险决策。
迁移时,先验一个数字的来路
选择一项真实高频指标,沿一条已授权请求逐项核查:业务名命中什么表和列?地域、期间和币种如何确定?谁允许执行?追问改变了哪个条件?用户能否查看查询依据?导出后的访问范围由谁负责?
再用同一批问题分别检查路由、查询结果和整段对话。若最后只剩一个“回答正确率”,就会重新把口径错误、权限失败和语言表达混在一起。Finch 最有价值的经验,是让这些不同责任有可以分别检验的边界。
案例资料与日期
公开企业研究 · Uber · Finch 对话式财务经营分析
- 行业
- 出行与物流
- 场景
- 数据分析与核对
- 应用阶段
- 公开产品
- 上线时间
- 未披露
- 来源发布日期
- 2025-07-17
- 站点更新
- 2026-10-29
来源发布日期与上线时间分别记录;未披露不表示尚未上线。
公开来源
封面:AIMatrix 依据所列公开来源独立绘制;非产品截图。
来源与使用范围
基于公开来源的案例研究;能力、效果与规模以来源披露范围为准,参考设计单独标明。
一起判断下一步
带一笔任务,聊一个具体决定。
培训、方案评审或落地辅导,从你的工作材料与当前困难开始。