Dije que volvería a esto cuando saliera iOS 27
Pregunta lo que quieras vuelve en Smart Budget 2.0, solo que no con el modelo en el dispositivo que dije que estaba esperando.
El comentario que me dejé a mí mismo
El artículo de julio sobre construir sobre el modelo en el dispositivo de Apple terminaba con una sección titulada «la función que construí, terminé y luego escondí». Pregunta lo que quieras, una interfaz conversacional para tus propios datos de gastos, estaba terminada, compilaba y estaba comentada. Cada punto de entrada llevaba la misma etiqueta:
// 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 ya salió. La función vuelve en Smart Budget 2.0, ya disponible en el App Store. Pero no de la forma que daba a entender esa etiqueta.
Lo que daba por hecho la etiqueta
Cuando escribí «revisit when iOS 27 / a larger on-device model lands», tenía una imagen clara de cómo sería volver a ello: un modelo más grande, la misma arquitectura en el dispositivo, quitar los comentarios de las presentaciones de la hoja y publicar. El sentido de la canalización de tres etapas (el intérprete extrae la intención, Swift determinista ejecuta la consulta, una plantilla de texto narra el resultado) era que el modelo fuera local. Sin clave de API, sin llamadas de red, sin ningún servidor que pudiera ver nunca tus transacciones. La restricción de ejecutarse en el dispositivo no era una concesión; era la premisa.
El problema del modelo de 3B en iOS 26 no era la velocidad. Era la fiabilidad en las condiciones que importan en una app de finanzas. Incluso con DynamicGenerationSchema restringiendo la salida, incluso con temperatura 0.1, la extracción de intenciones fallaba con la frecuencia suficiente como para que no pudiera apostar en ella un «pregúntame lo que quieras sobre tu dinero». En una app de presupuesto, una intención mal clasificada no produce una respuesta un poco desviada. Produce una respuesta equivocada dicha con total seguridad. Y una respuesta equivocada y segura sobre tus finanzas destruye la función, no poco a poco, sino de inmediato, la primera vez que te pasa.
Así que la etiqueta se quedó ahí, esperando un modelo que pudiera cerrar la brecha de fiabilidad.
Lo que publiqué en realidad
Asesor financiero, que es el nombre con el que se publica, no usa el modelo en el dispositivo. Se ejecuta en Private Cloud Compute de Apple.
Es una arquitectura distinta, y quiero ser directo sobre lo que significa. Private Cloud Compute es infraestructura de Apple: tu pregunta sobre tus gastos sale del dispositivo, se procesa en el hardware de Apple y la respuesta vuelve. Apple dice que no se guarda nada y que el cálculo es efímero; esa afirmación es de Apple, no me corresponde a mí garantizarla. Pero es una llamada de red. Mantuve esa línea durante todo el ciclo de iOS 26, y la crucé para esta función, confiando en lo que Apple cuenta sobre la privacidad de PCC.
¿Por qué cruzarla? Por dos razones.
La primera es la capacidad. Private Cloud Compute de Apple te da acceso a un modelo capaz de manejar la intención en lenguaje natural con la fiabilidad suficiente como para apostar en él la confianza del usuario. El papel del modelo no ha cambiado: recibir una pregunta sobre dinero, extraer una intención estructurada y pasársela a Swift determinista, que la ejecuta contra la base de datos real de transacciones. Lo que cambió es dónde vive el modelo.
La segunda es la alternativa. Una API en la nube de terceros nunca fue una opción para una app de finanzas. Así que las opciones realistas eran: en el dispositivo con un modelo poco fiable, o en la infraestructura privada de Apple, con una historia de privacidad que me convence lo suficiente como para publicar. Elegí lo segundo para esta función.
Lo que sigue igual
La capa determinista que hay debajo de Asesor financiero es la misma arquitectura que describía el artículo de julio. El modelo entiende el lenguaje; Swift hace los números. «¿Cuánto gasté en el supermercado?» se convierte en una intención tipada con un periodo y una categoría, que se convierte en una consulta de Core Data, que se convierte en un resultado presentado con una plantilla. El modelo nunca toca los datos reales de las transacciones, nunca hace cálculos y nunca escribe una frase sobre un comercio concreto.
Esa no fue una decisión que replanteara. La lección del trabajo en el dispositivo (que un modelo de lenguaje alucinará detalles de transacciones en cuanto le dejes narrar a partir de los datos en bruto) se aplica igual a un modelo en la nube más capaz. La forma de la canalización es la correcta. Lo que cambió es el entorno de ejecución.
El código que sigue ahí
El AskAnythingSheet original, la ruta de extracción en el dispositivo, todo Intelligence/Chat/: sigue en el código, sigue comentado, sigue etiquetado. Si Apple lanza un modelo en el dispositivo que cierre la brecha de fiabilidad, la ruta está ahí. No apuesto en contra.
Lo que juzgué mal en julio fue suponer que la respuesta de iOS 27 al problema sería necesariamente un modelo en el dispositivo más grande. Apple ofreció antes otra respuesta, y fue lo bastante buena como para publicar con ella.
Qué significa esto si estás creando algo parecido
La disyuntiva entre el dispositivo y la nube para las funciones con LLM no es binaria, y el límite correcto no es el mismo para todas las funciones. «Ningún dato sale nunca de este dispositivo» es una promesa fuerte, y es la correcta para los datos de transacciones guardados. Pero una pregunta en lenguaje natural sobre tus gastos tiene un perfil de privacidad distinto al del registro subyacente. Si Private Cloud Compute de Apple es un límite que estás dispuesto a cruzar para una función concreta es una cuestión de criterio: sobre la función, los datos implicados y las garantías del proveedor.
Lo que me diría a mí mismo en julio: formula la restricción con más precisión antes de aplazar algo. «Volver a esto cuando salga iOS 27» es una condición de tiempo. La condición real era «volver a esto cuando haya disponible un modelo capaz de extraer intenciones de forma fiable, dentro de un límite de privacidad con el que esté dispuesto a publicar». No son lo mismo, y la segunda te lleva antes a la respuesta correcta.
El modelo en el dispositivo fue realmente útil en el resto de la app (las tarjetas de análisis, el escaneo de recibos y el categorizador funcionaban bien con él) y en la 2.0 sobre iOS 27 también prefieren Private Cloud Compute, con el modelo en el dispositivo como respaldo. Para un trabajo concreto, con un listón de fiabilidad concreto, no bastó. Es una crítica más acotada que la que dejé en julio, y es la acertada.