J'avais dit que j'y reviendrais à la sortie d'iOS 27
Ask Anything revient dans Smart Budget 2.0 — mais pas sur le modèle embarqué que je disais attendre.
Le commentaire que je m'étais laissé
L'article de juillet sur le développement avec le modèle embarqué d'Apple se terminait par une section intitulée « la fonctionnalité que j'ai créée, terminée, puis cachée ». Ask Anything (« posez n'importe quelle question ») — une interface conversationnelle pour interroger vos propres données de dépenses — était terminée, compilait, et était commentée. Chaque point d'entrée portait le même marqueur :
// 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 est sorti. La fonctionnalité est de retour dans Smart Budget 2.0, disponible dès maintenant sur l'App Store. Mais pas de la façon que ce marqueur laissait entendre.
Ce que le marqueur supposait
Quand j'ai écrit « revisit when iOS 27 / a larger on-device model lands », j'avais une idée claire de ce à quoi ressemblerait ce retour : un modèle plus gros, la même architecture embarquée, on décommente les présentations de la feuille, on publie. Tout l'intérêt du pipeline en trois étapes — le modèle comprend et extrait l'intention, du Swift déterministe exécute la requête, un modèle de texte formule le résultat — était que le modèle était local. Pas de clé d'API, pas d'appel réseau, pas de serveur qui puisse un jour voir vos transactions. La contrainte de l'embarqué n'était pas un compromis ; c'était la prémisse.
Le problème du modèle 3B d'iOS 26 n'était pas la vitesse. C'était la fiabilité dans les conditions qui comptent pour une app de finances. Même avec DynamicGenerationSchema pour contraindre la sortie, même à une température de 0.1, l'extraction d'intention se trompait assez souvent pour que je ne puisse pas miser « demandez-moi n'importe quoi sur votre argent » dessus. Dans une app de budget, une mauvaise classification d'intention ne donne pas une réponse légèrement à côté. Elle donne une réponse fausse affirmée avec assurance. Et une réponse fausse affirmée avec assurance sur vos finances détruit la fonctionnalité — pas progressivement, immédiatement, la première fois que ça vous arrive.
Le marqueur est donc resté là, en attendant un modèle capable de combler l'écart de fiabilité.
Ce que j'ai réellement publié
Le Conseiller financier — c'est le nom sous lequel la fonctionnalité est publiée — n'utilise pas le modèle embarqué. Il tourne sur le Private Cloud Compute d'Apple.
C'est une architecture différente, et je veux être direct sur ce que ça implique. Le Private Cloud Compute est l'infrastructure d'Apple : votre question sur vos dépenses quitte l'appareil, elle est traitée sur le matériel d'Apple, et la réponse revient. Apple affirme que rien n'est stocké et que le calcul est éphémère — c'est une affirmation qui engage Apple, pas une chose dont je peux me porter garant. Mais c'est bien un appel réseau. J'avais tenu cette ligne pendant tout le cycle d'iOS 26, et je l'ai franchie pour cette fonctionnalité, sur la foi de ce qu'Apple dit de la confidentialité de PCC.
Pourquoi la franchir ? Pour deux raisons.
La première, ce sont les capacités. Le Private Cloud Compute d'Apple donne accès à un modèle capable de comprendre l'intention en langage naturel de façon assez fiable pour y miser la confiance des utilisateurs. Le rôle du modèle n'a pas changé — prendre une question sur l'argent, en extraire une intention structurée, la transmettre à du Swift déterministe qui interroge la vraie base de transactions. Ce qui a changé, c'est l'endroit où vit le modèle.
La seconde, c'est l'alternative. Une API cloud tierce n'a jamais été envisageable pour une app de finances. Les options réalistes étaient donc : l'embarqué avec un modèle peu fiable, ou l'infrastructure privée d'Apple, avec un discours de confidentialité qui me convient assez pour publier. J'ai choisi la seconde pour cette fonctionnalité.
Ce qui n'a pas changé
La couche déterministe sous le Conseiller financier suit la même architecture que celle décrite dans l'article de juillet. Le modèle comprend le langage ; Swift fait les calculs. « Combien ai-je dépensé en courses ? » devient une intention typée avec une période et une catégorie, qui devient une requête Core Data, qui devient un résultat formulé par un modèle de texte. Le modèle ne touche jamais aux données de transactions réelles, ne fait jamais d'arithmétique, n'écrit jamais de phrase sur un marchand précis.
Ce choix-là, je ne l'ai pas remis en question. La leçon du travail sur l'embarqué — un modèle de langage hallucine des détails de transactions dès que vous le laissez narrer à partir des données brutes — s'applique tout autant à un modèle cloud plus capable. La forme du pipeline est la bonne. C'est l'environnement d'exécution qui a changé.
Le code qui est toujours là
L'AskAnythingSheet d'origine, le chemin d'extraction embarqué, tout Intelligence/Chat/ — toujours dans le code, toujours commentés, toujours marqués. Si Apple publie un modèle embarqué qui comble l'écart de fiabilité, le chemin est prêt. Je ne parie pas contre.
Ce que j'ai mal jugé en juillet, c'est que la réponse d'iOS 27 au problème serait forcément un modèle embarqué plus gros. Apple a d'abord proposé une autre réponse, et elle était assez bonne pour publier dessus.
Ce que ça signifie si vous construisez quelque chose de similaire
La question embarqué ou cloud pour les fonctionnalités LLM n'est pas binaire, et la bonne frontière n'est pas la même pour chaque fonctionnalité. « Aucune donnée ne quitte jamais cet appareil » est une promesse forte, et c'est la bonne pour des données de transactions stockées. Mais une question en langage naturel sur vos dépenses n'a pas le même profil de confidentialité que le registre sous-jacent. Savoir si le Private Cloud Compute d'Apple est une frontière que vous êtes prêt à franchir pour une fonctionnalité donnée relève du jugement — sur la fonctionnalité, sur les données concernées, et sur les garanties du fournisseur.
Ce que je dirais à moi-même en juillet : formulez la contrainte plus précisément avant de reporter. « Y revenir à la sortie d'iOS 27 » est une condition de temps. La vraie condition était « y revenir quand un modèle capable d'extraire l'intention de façon fiable sera disponible à l'intérieur d'une frontière de confidentialité avec laquelle j'accepte de publier ». Ce n'est pas la même chose, et la seconde mène plus vite à la bonne réponse.
Le modèle embarqué s'est montré vraiment utile dans le reste de l'app — les cartes d'analyse, la lecture des reçus et le catégoriseur tournaient tous bien dessus — et, dans la version 2.0 sur iOS 27, eux aussi privilégient le Private Cloud Compute, avec le modèle embarqué en repli. Pour une tâche précise, avec un niveau de fiabilité précis, il ne suffisait pas. C'est une critique plus étroite que celle que j'avais laissée en juillet, et c'est la juste.