问AI数据库代理一个最简单的业务问题,是让它给出错误答案的最快方式。

上个月收入是多少?

打开网易新闻 查看精彩图片

听起来很简单。但数据库里有发票、订阅、付款、退款、信用额度、折扣、税费、试用、扣款失败和测试账户。模型看到的是表结构,而你的业务看到的是定义。如果这些定义不是系统的一部分,模型就只能猜。

打开网易新闻 查看精彩图片

语法正确的SQL仍然可能是错的。一个叫payments的表可能包含失败的尝试。subscriptions可能包含试用期。amount可能是总额、净额、税前、税后,或者以分为单位存储。created_at可能指发票创建、付款捕获或客户注册时间。AI代理可以针对所有这些写出语法正确的SQL,却仍然答错问题。

这就是为什么自然语言转SQL需要指标上下文,而不仅仅是模式上下文

经过审核的视图胜过聪明的提示词。提示词可以告诉模型如何计算月度经常性收入(MRR),但经过审核的视图能让定义变成可执行的东西。与其暴露原始的发票和付款表,不如暴露类似reporting.monthly_recurring_revenue这样的东西——审核过的列、租户范围、时间粒度、货币假设、测试账户过滤都已经处理好了。模型仍然帮助用户提出灵活的问题,但业务定义存在于基础设施中,而不是脆弱的指令里。

打开网易新闻 查看精彩图片

对于AI报表,MCP工具应该携带以下上下文:指标描述、允许的维度、时区和粒度、排除项、新鲜度时间戳、精确与估算状态、范围和租户边界、最终答案必须保留的警告。否则模型可能给出一个自信的答案,同时隐藏那些重要的注意事项。

实用的规则是:如果一个指标重要到值得在领导会议上讨论,那它就重要到值得在代理计算之前先定义好。