我说过,等iOS 27发布时再回来看这件事
Ask Anything回到了Smart Budget 2.0中——只是没有用上我当初说要等的那个设备端模型。
我留给自己的那条注释
7月那篇关于在Apple设备端模型上开发的文章,结尾有一节叫“我做完了、却又藏起来的功能”。“Ask Anything”(有问必答)——一个针对您自己消费数据的对话式界面——已经完成,能编译通过,却被注释掉了。每一个入口都带着同一个标记:
// ASK-ANYTHING-DEFERRED-IOS27: chat sheet presentation
// disabled. Implementation kept intact in
// Intelligence/Chat/* + Views/Insights/AskAnythingSheet.swift
// — revisit when iOS 27 / a larger on-device model lands.
// The 3B model in iOS 26 was unable to reliably extract
// intent + filters even with constrained DynamicGenerationSchema
iOS 27已经发布。这个功能回到了Smart Budget 2.0中,现已在App Store上架。但回归的方式,并不是那个标记所暗示的那样。
那个标记的假设
当我写下“等iOS 27 / 更大的设备端模型推出时再看”时,我对“再看”的样子有一个清晰的设想:更大的模型,同样的设备端架构,取消注释那些sheet的呈现代码,发布。三阶段流水线——理解者提取意图,确定性的Swift执行查询,字符串模板叙述结果——的全部意义就在于模型是本地的。没有API密钥,没有网络调用,没有任何能看到您交易记录的服务器。设备端这条限制不是妥协,而是前提。
iOS 26中3B模型的问题不在于速度,而在于在理财应用最要紧的条件下的可靠性。即使用DynamicGenerationSchema约束输出,即使温度设为0.1,意图提取出错的频率仍然高到让我无法把“关于您的钱,问我什么都行”押在它身上。在记账应用里,意图分类出错不会产生一个稍有偏差的答案,而是产生一个言之凿凿的错误答案。而一个关于您财务的言之凿凿的错误答案会毁掉这个功能——不是逐渐地,而是立刻,就在它第一次发生在您身上的时候。
所以那个标记就一直放在那里,等待一个能够弥合可靠性差距的模型。
我实际发布的东西
“Money Advisor”(理财顾问)——这是它发布时的名字——不使用设备端模型。它运行在Apple的Private Cloud Compute上。
这是一种不同的架构,我想直截了当地说明这意味着什么。Private Cloud Compute是Apple的基础设施:您关于自己消费的问题会离开设备,在Apple的硬件上处理,然后答案返回。Apple表示不会存储任何内容,计算是临时性的——这是Apple需要为之负责的说法,不是我能替它担保的。但它确实是一次网络调用。在整个iOS 26周期里,我一直守着这条线,而为了这个功能,我跨过了它,依据的是Apple围绕PCC的隐私说明。
为什么还要跨过去?有两个原因。
第一是能力。Apple的Private Cloud Compute让您能用上一个处理自然语言意图足够可靠、可以押上用户信任的模型。模型的角色没有变——接收一个关于钱的问题,提取出结构化的意图,交给针对真实交易数据库运行的确定性Swift代码。变的是模型所在的位置。
第二是别的选择。对理财应用来说,第三方云API从来不在考虑之列。所以现实的选项只有两个:用一个不可靠的设备端模型,或者用Apple的私有基础设施,配上一套我足够放心、愿意据此发布的隐私说明。对这个功能,我选择了后者。
没有变的部分
Money Advisor底下的确定性层,和7月那篇文章描述的架构是同一套。模型理解语言;Swift负责计算数字。“How much did I spend on groceries?”(我在日用杂货上花了多少?)会变成一个带时间段和分类的有类型意图,再变成一次Core Data查询,最后变成由模板渲染的结果。模型从不接触真实的交易数据,从不做算术,也从不写关于某个具体商家的句子。
这一点我没有重新考虑。设备端工作给我的教训——只要您让语言模型根据原始数据来叙述,它就会幻觉出交易细节——对一个能力更强的云端模型同样适用。流水线的形态是对的。变的是执行环境。
仍然留着的代码
原来的AskAnythingSheet、设备端提取路径、整个Intelligence/Chat/——都还在代码库里,仍然被注释掉,仍然带着标记。如果Apple推出了能够弥合可靠性差距的设备端模型,这条路径还在。我不会赌它不会来。
我在7月看错的是,以为iOS 27对这个问题的答案必然是一个更大的设备端模型。Apple先给出了另一个答案,而它好到足以让我据此发布。
如果您在做类似的东西,这意味着什么
LLM功能在设备端与云端之间的选择不是非此即彼,而且合适的边界也并非对每个功能都一样。“任何数据都不离开这台设备”是一个强有力的承诺,对静态存放的交易数据来说,它是正确的承诺。但一个关于您消费情况的自然语言问题,其隐私特征与底层账本并不相同。对某个功能来说,Apple的Private Cloud Compute是否是您愿意跨越的边界,是一个需要判断的问题——取决于功能本身、涉及的数据,以及提供方的保证。
我想对7月的自己说:在推迟之前,先把限制条件表述得更精确。“等iOS 27推出时再看”是一个时间条件。真正的条件是“等到在我愿意据此发布的隐私边界之内,有了能够可靠提取意图的模型时再看”。这两者并不相同,而第二种表述能让您更快找到正确答案。
设备端模型在应用的其他部分确实很有用——洞察卡片、收据扫描和分类器在它上面都运行良好——而在iOS 27上的2.0中,它们也优先使用Private Cloud Compute,以设备端模型作为后备。只是对一项特定的工作、在一个特定的可靠性标准下,它还不够。这比我7月留下的批评范围更窄,也更准确。