Investigación12 minFuente comprobada 26 de julio de 2026

De @Generable a SwiftData: un canal de calidad de cotización en el dispositivo

La arquitectura de producción detrás del generador Foundation Models de RiseHush: transmisión escrita, rechazo en capas, herramientas locales, persistencia segura para los actores y las rutas de falla que importan.

De @Generable a SwiftData: un canal de calidad de cotización en el dispositivo — RiseHush editorial illustration — risehush.comrisehush.com

La restricción no era "hacer que un modelo escriba una cotización"

Un solo mensaje puede producir una oración. No puede establecer si el modelo del sistema está listo, mantener una interfaz receptiva, distinguir una línea generada de una cita histórica, evitar que un casi duplicado ingrese a una biblioteca o dejar el producto útil cuando falla la inferencia. Esas decisiones circundantes son la característica.

RiseHush no tiene backend de inferencia. En los dispositivos Apple Intelligence compatibles, la aplicación envía un mensaje limitado al modelo de idioma del sistema del dispositivo de Apple y almacena un resultado aceptado en SwiftData local. La página de inteligencia orientada al producto explica lo que ve una persona; Este artículo documenta la ruta de implementación y sus límites. La propia API de disponibilidad de Apple sigue siendo la autoridad para determinar si el modelo puede ejecutarse ahora.

"Reproducible" aquí significa que otro ingeniero puede repetir la matriz de preparación, los dispositivos de rechazo, las rutas de tiempo de espera y las comprobaciones de persistencia. Esto no significa que un modelo de lenguaje no determinista devolverá la misma prosa bit por bit. Esta página informa la arquitectura fuente inspeccionada, no nuevas métricas de calidad del dispositivo físico; no se infiere ningún resultado de referencia a partir de un script de prueba.

  • Inferencia: Modelo de lenguaje del sistema de Apple, en el dispositivo.
  • Contrato de salida: Un tipo Swift guiado, luego validación determinista.
  • Almacenamiento: Filas SwiftData locales marcadas como generadas.
  • Ruta de red: Sin servidor de generación RiseHush ni modelo de terceros.

[1][2]

Del indicador a la biblioteca: la ruta de producción

Esta es la arquitectura detrás del generador de cotizaciones en el dispositivo de RiseHush, tal como se inspecciona en la fuente actual de la aplicación. Documenta las puertas, las rutas de falla y las comprobaciones que un desarrollador puede reproducir; no es un modelo de referencia ni una afirmación de que cada borrador es bueno.

El orden es deliberado. Se realizan comprobaciones baratas y explicables antes de realizar más inferencias; no se produce ninguna escritura hasta que todas las puertas requeridas hayan aceptado al candidato. Una respuesta transmitida es un texto de interfaz provisional, no una cita guardada.

  1. Demostrar preparación

    El servicio verifica la disponibilidad del modelo del sistema y la configuración regional solicitada antes de crear una sesión. La elegibilidad del dispositivo, el estado de Apple Intelligence, la preparación de los activos del modelo y la compatibilidad con idiomas son resultados separados.

  2. Restringir el borrador

    Un tipo @Generable Swift solicita una oración original, normalmente de 10 a 16 palabras y nunca más de 18, sin atribución, rebajas, hashtags, emoji ni comillas envolventes.

  3. Transmitir al actor principal

    Se precalienta una nueva LanguageModelSession para la solicitud. Las instantáneas estructuradas parciales pueden actualizar la interfaz mientras el bucle de Foundation Models permanece fuera del actor principal.

  4. Rechazar fallas obvias

    Antes de cualquier evaluación basada en modelos, una puerta determinista verifica los límites de oraciones y palabras, la concordancia del idioma, los fragmentos prohibidos, la puntuación envolvente y los patrones de clichés multilingües.

  5. Prueba de novedad y calidad.

    Cuando las incrustaciones de comparación están disponibles, los sobrevivientes enfrentan una verificación semántica casi duplicada, luego un juez guiado por separado y una puntuación de distinción. Un borrador transmitido que no alcanza un umbral requerido se descarta en lugar de persistir silenciosamente.

  6. Persistir el sobreviviente

    Los metadatos se calculan sin tener en cuenta al actor principal. La inserción de SwiftData regresa al actor principal, etiqueta la línea como generada y no de dominio público, y revierte las inserciones transitorias si falla el guardado.

  7. Reutilizar el estado local

    Las superficies de la aplicación y del sistema consumen la cotización almacenada. Los widgets leen datos persistentes; no activan el modelo de lenguaje dentro de una línea de tiempo de extensión.

[2][3][4][5]

La salida guiada estrecha la forma; el código todavía posee la política

El borrador es de tipo Swift marcado@Generable. Su guía solicita una oración original, normalmente de 10 a 16 palabras con un máximo de 18, y prohíbe la atribución, las comillas, los hashtags, los emoji, las rebajas y los saltos de línea. Las opciones de producción utilizan una temperatura de 0,7 y un límite máximo de 40 tokens: suficiente espacio para el envoltorio estructurado y la oración corta, sin invitar a una producción de párrafos largos.

Esto no hace que la validación sea opcional. Apple describe la generación guiada como una forma de producir datos Swift estructurados, no como una garantía de que el contenido cumpla con todas las reglas del producto. Por lo tanto, RiseHush trata el valor escrito del modelo como un borrador que no es de confianza. El esquema resumido a continuación conserva el orden de producción y los umbrales, al tiempo que omite los detalles de persistencia y avisos específicos de la aplicación.

Architecture sketch — abridged from the current app sourceswift
@Generable
private struct GeneratedQuoteDraft {
    @Guide(description: "One original sentence; 10–16 words; no attribution")
    var text: String
}

guard availability(locale: locale) == .available else {
    throw GenerationError.unavailable
}

let stream = session.streamResponse(
    to: prompt,
    generating: GeneratedQuoteDraft.self,
    options: generationOptions
)

for try await snapshot in stream {
    yield(snapshot.content.text)          // interface update
}

guard deterministicGate.passes(text, locale: locale),
      await noveltyGate.isNearDuplicate(text) == false,
      await judge.score(text).overall >= 6,
      distinctiveness.score(text).overall >= 5
else {
    throw GenerationError.noCandidate
}

return try persistAsGeneratedQuote(text)

This is explanatory code, not a drop-in package. It intentionally omits app-private prompt construction, error mapping, and SwiftData model definitions.

[4][5]

Por qué una segunda pasada aún no fue suficiente

La primera capa de rechazo es determinista: resultados vacíos, residuos de avisos prohibidos, comillas ajustadas, límites de palabras y oraciones, desacuerdos lingüísticos y clichés multilingües. Un filtro de sabor Core ML local puede agregar una señal aprendida para inglés, alemán, español, francés, italiano y portugués; se omite deliberadamente en lugar de aplicarlo incorrectamente fuera de esas zonas calibradas.

A continuación, cuando hay incrustaciones de comparación disponibles, una puerta de novedad semántica compara al candidato con un catálogo local limitado y rechaza los casi duplicados en un umbral de similitud de coseno de 0,90. Si el catálogo está vacío o no se puede producir una incrustación, esa capa pasa a través en lugar de afirmar que se demostró la novedad. Una nueva sesión de Foundation Models puntúa la calidad, la originalidad y la calidez generales. Ese juez es una sesión separada que utiliza el mismo modelo de sistema, no un modelo independiente ni una revisión humana. Si no está disponible, se niega o no puede producir resultados estructurados, una puntuación determinista proporciona un recurso limitado.

Finalmente, una puntuación de distinción premia las imágenes concretas, la acción, la especificidad emocional y la agencia, al tiempo que penaliza las fórmulas y los anclajes negativos recientes. Actualmente, la aceptación requiere una puntuación del juez de al menos 6 y un carácter distintivo de al menos 5. Estos son umbrales del producto, no pruebas de originalidad o seguridad global.

Las decisiones de producción y el fallo que cada una evita
Inquietud.ImplementaciónPor que existe
DisponibilidadVerifique el estado del modelo y el soporte local antes de cada ruta de generación; registre por qué falló la preparación."Compatible con Apple Intelligence" no significa que el modelo esté listo ahora o sea compatible con el idioma activo del visitante.
Estructura.Utilice @Generable y @Guide para la forma borrador en lugar de analizar una respuesta JSON inventada.El tipo Swift es el contrato de salida, mientras que el código determinista todavía posee las reglas del producto.
Concurrencia.Mantenga el trabajo de transmisión de modelos y metadatos alejado del actor principal; retroceda solo para la persistencia del modelo local.El cambio de Foundation Models puede tardar unos segundos, mientras que los objetos del modelo SwiftData permanecen vinculados al actor.
Calidad.Capa de reglas deterministas, novedad semántica, un juez separado y umbrales de distinción.La generación guiada estrecha la forma; no garantiza veracidad, originalidad, tono o calidad del producto.
Estado latente.Precaliente solo en superficies de primer plano con capacidad de generación y aplique presupuestos finitos: 45 segundos en la interfaz, 20 para Siri, 120 para un grupo de fondo.Una solicitud de cara al usuario no debe esperar eternamente a que lleguen activos, límites de tarifas o un cambio lento del modelo.
Persistencia.Almacene las líneas aceptadas como registros generados localmente, nunca como citas de autor de dominio público; retroceder después de un guardado fallido.La escritura generada necesita una procedencia duradera y nunca debe heredar la atribución de una persona real.

[7]

Mantenga al modelo alejado del actor principal.

El servicio público devuelve objetos del modelo SwiftData, por lo que sus puntos de entrada permanecen vinculados al actor principal. El costoso ciclo de respuesta de Foundation Models no lo hace. Cada solicitud posee una nueva LanguageModelSession; El streaming y el cálculo de metadatos se alejan del actor principal, con pequeños saltos explícitos para las señales de aviso y la persistencia vinculadas al actor.

La transmisión produce instantáneas estructuradas parciales para la interfaz, luego pasa el texto final a través de las mismas barras de puerta, novedad, juez y distinción que la ruta del grupo. Una secuencia completa cruza actores mediante un identificador persistente en lugar de mover un modelo SwiftData que no se puede enviar. La persona que llama resuelve ese identificador en su propio actor.

Sólo se inserta el texto aceptado. El registro está creado como RiseHush, marcado como source = .generated y isPublicDomain = false, etiquetado con su configuración regional y enriquecido con metadatos calculados localmente. Si el guardado falla, las inserciones transitorias se eliminan antes de que vuelva a aparecer el error.

[5][10]

Conecte al conserje con tres herramientas de solo lectura

Ask RiseHush no puede inventar el estado de la biblioteca de una persona. La API de llamada de herramientas de Apple permite que una sesión solicite funciones limitadas de la aplicación e incorpore los datos devueltos. La aplicación expone tres herramientas limitadas de sólo lectura; ninguno llega a un servidor RiseHush.

Los argumentos de las herramientas y los tamaños de salida están restringidos. La búsqueda de cotizaciones guardadas devuelve como máximo ocho resultados, la búsqueda de catálogo como máximo cinco y la producción total de la herramienta tiene un límite. La herramienta de cotizaciones guardadas puede devolver elementos coincidentes recientes, pero no acepta un rango de calendario, por lo que el producto no debe prometer que el modelo pueda responder "¿qué guardé la semana pasada?"

  • Búsqueda de cotizaciones en el catálogo.

    Busca en el catálogo de cotizaciones incluido por estado de ánimo, categoría o tema. No le pide al modelo que invente una fuente.

  • Búsqueda de cotización guardada

    Busca las citas favoritas y guardadas de la persona en el almacenamiento local.

  • Estado de racha

    Lee la racha de inspiración local para que Ask RiseHush pueda responder una pregunta personal específica.

[6]

El comportamiento de falla es parte de la arquitectura.

La disponibilidad no es booleana. Es posible que un dispositivo compatible aún tenga Apple Intelligence desactivado, recursos del modelo preparándose o un idioma que el modelo del sistema no admite. La generación del tiempo de ejecución también puede rechazarse, chocar con una barrera de seguridad, exceder el contexto, verse limitada, encontrar una solicitud simultánea, fallar en el análisis estructurado o expirar.

RiseHush asigna esos casos al comportamiento finito del producto. La generación de primer plano tiene un presupuesto de 45 segundos, Siri de 20 segundos y la generación de fondo de 120 segundos. La biblioteca seleccionada sigue siendo la alternativa honesta; la aplicación nunca almacena prosa de marcador de posición como si un modelo tuviera éxito.

Rama observada y comportamiento resultante del producto.
Señal.Comportamiento.
Dispositivo no elegible o Apple Intelligence deshabilitadoLa generación no está disponible. La biblioteca seleccionada existente sigue siendo utilizable sin pretender que se haya producido una respuesta modelo.
Recursos del modelo no listosLa solicitud informa un estado no listo. Una vez que los activos del modelo de Apple están presentes, la inferencia en sí no requiere un servidor RiseHush.
Configuración regional solicitada no admitidaUna ruta con capacidad de traducción puede bloquear completamente un borrador en inglés y traducirlo localmente donde el marco de traducción de Apple admita el par; de lo contrario, la aplicación mantiene el respaldo seleccionado. Se comprueba que el texto traducido tenga un resultado que no esté vacío, pero no repite la lista completa de acceso, novedad y evaluación del idioma de destino.
Error de barrera, rechazo, límite de velocidad, análisis, contexto, simultaneidad o tiempo de esperaLa ruta de transmisión no pasa por un reintento en línea ilimitado. No devuelve ningún candidato generado y deja que el producto retroceda limpiamente.
El borrador no alcanza un umbral de calidadEl camino del grupo finito puede probar con otro calado; la transmisión en vivo se cancela en lugar de animar una segunda respuesta. El texto rechazado no se guarda.
El guardado de SwiftData fallaEl servicio elimina sus inserciones transitorias y muestra una falla de persistencia en lugar de dejar una cotización a medio guardar.

[2][3][7]

Un protocolo de reproducibilidad, sin resultados inventados

El siguiente protocolo separa la inspección de la fuente de la prueba de dispositivos activos. Registre el hardware, la compilación del sistema operativo, la configuración regional, el estado de Apple Intelligence, la preparación del modelo, el dispositivo de aviso, el tiempo transcurrido, la rama del terminal, el motivo del rechazo y el resultado de persistencia para cada ejecución. Los instrumentos Foundation Models de Apple pueden exponer el comportamiento de avisos, herramientas, tokens y latencia durante una sesión real.

Hay disponible una versión legible por máquina como protocolo de evaluación de modelos básicos (JSON). Contiene la matriz y el contrato de campo, no medidas fabricadas. Cuando se apruebe la ejecución de un dispositivo físico actual, agregue sus filas anónimas y publique valores agregados de aceptación, tiempo de espera y latencia con el dispositivo y el sistema operativo exactos.

  1. Utilice hardware compatible con un sistema operativo compatible. Pruebe Apple Intelligence habilitado y listo, deshabilitado y aún descargando.
  2. Repita con una configuración regional compatible y una configuración regional no compatible; verifique que la aplicación distinga la compatibilidad con el modelo de la elegibilidad general del dispositivo.
  3. Una vez que los recursos del modelo estén listos, repita en modo avión y confirme que no se requiere ningún punto final de generación de RiseHush.
  4. Observe texto parcial mientras interactúa con la interfaz; Confirme que el desplazamiento y los controles sigan respondiendo durante el giro del modelo.
  5. Elementos de alimentación que están vacíos, con varias oraciones, demasiado largos, entre comillas, en el idioma incorrecto, clichés o casi duplicados; ninguna debería convertirse en filas generadas guardadas.
  6. Disparar el rechazo del juez y un tiempo de espera finito; confirme que no persista ningún borrador rechazado y que la experiencia seleccionada permanezca disponible.
  7. Forzar un error de guardado local en una tienda de prueba; confirme que los modelos insertados se reviertan.
  8. Ejercite a Siri con su presupuesto de tiempo más corto y verifique que los widgets solo lean datos persistentes en lugar de iniciar la generación en la extensión.

[8]

Lo que esta arquitectura no prueba

Una canalización de calidad puede hacer visibles los fallos y reducir la mala persistencia. No puede convertir un pequeño modelo de lenguaje en el dispositivo en una fuente histórica, demostrar que una oración nunca se ha escrito en ninguna parte ni garantizar el gusto. Por lo tanto, las líneas generadas nunca se atribuyen a autores históricos y nunca entran en el catálogo de dominio público.

La traducción merece una advertencia aparte. Para una configuración regional que no es compatible directamente con Foundation Models, la ruta opcional incluye completamente un borrador en inglés y luego utiliza el marco de traducción en el dispositivo de Apple donde el par está disponible. El resultado traducido se verifica para detectar una respuesta que no esté vacía y se conserva con nuevos metadatos, pero actualmente no repite la secuencia completa de entrada, novedad y evaluación del idioma de destino después de la traducción. Ese camino es un retroceso, no una prueba de igual calidad de generación directa.

Las actualizaciones del modelo y del sistema operativo pueden cambiar la disponibilidad, la latencia, el comportamiento de rechazo y la distribución de resultados. Apple recomienda revisar las indicaciones y la evaluación a medida que cambian los modelos de base. Por lo tanto, la matriz de prueba de RiseHush debe volver a ejecutarse después de las actualizaciones materiales de la plataforma en lugar de tratar esta página como una prueba de referencia permanente.

  • El modelo del sistema no se utiliza como fuente de citas históricas ni de atribución de autores.
  • La salida estructurada y una segunda pasada del modelo reducen los modos de falla; no prueban que una línea sea profunda, original en el sentido global o adecuada para todos.
  • La capa de novedad semántica pasa cuando su catálogo delimitado está vacío o las incrustaciones de comparación no están disponibles; reduce los casi duplicados conocidos pero no certifica la originalidad global.
  • La generación sin conexión depende del hardware compatible, Apple Intelligence habilitado, el comportamiento del lenguaje admitido y los recursos del modelo que ya están listos.
  • El filtro de sabor Core ML aprendido opcional está calibrado para inglés, alemán, español, francés, italiano y portugués; otras configuraciones regionales aún reciben las capas deterministas y basadas en modelos que las respaldan.
  • Una alternativa traducida localmente no equivale a la generación directa del idioma de destino: el resultado traducido actual no repite cada capa de calidad después de la traducción.
  • Las actualizaciones del sistema operativo y del modelo pueden cambiar la latencia y la distribución de salida, por lo que la matriz del dispositivo debe volver a ejecutarse después de cambios de plataforma de material.
  • Esta página describe la arquitectura actual, no una promesa de que cada superficie de plataforma ejecute Foundation Models. Los widgets consumen intencionalmente resultados persistentes.

[3][9][11]

¿RiseHush envía mensajes de generación de cotizaciones a su propio servidor?

No. En los dispositivos compatibles donde el modelo del sistema está disponible, el borrador de la cotización y los pases de calidad se ejecutan con los marcos del dispositivo de Apple. RiseHush no tiene un punto final de inferencia para esta ruta.

¿@Generable garantiza una cotización buena u original?

No. Restringe la forma de la producción estructurada. RiseHush todavía aplica reglas de lenguaje y formato deterministas, detección semántica casi duplicada cuando hay incrustaciones de comparación disponibles, una sesión de evaluación separada, puntuación de distinción y comportamiento de rechazo finito.

¿Puede otro desarrollador reproducir la frase exacta generada?

No de manera confiable. La salida del modelo de lenguaje no es determinista y puede cambiar con las actualizaciones del modelo o del sistema operativo. La unidad reproducible es el protocolo de preparación, fijación, puerta, tiempo de espera y persistencia; no una prosa idéntica.

¿Todos los idiomas admitidos reciben la misma ruta de calidad?

No. Las configuraciones regionales admitidas directamente reciben la ruta de generación común, mientras que el filtro Core ML aprendido está calibrado para seis idiomas. Un respaldo opcional traducido localmente comienza a partir de un borrador en inglés cerrado, pero no repite todas las capas de calidad del idioma de destino después de la traducción.

  1. Apple Developer Documentation — Foundation Models framework overview: direct access to Apple’s on-device language model
  2. Apple Developer Documentation — SystemLanguageModel availability and unavailable reasons
  3. Apple Developer Documentation — supporting languages and locales with Foundation Models
  4. Apple Developer Documentation — generating Swift data structures with guided generation
  5. Apple Developer Documentation — LanguageModelSession, responses, and streaming
  6. Apple Developer Documentation — expanding generation with tool calling
  7. Apple Developer Documentation — improving the safety of generative model output
  8. Apple Developer Documentation — analyzing Foundation Models runtime performance
  9. Apple Developer Documentation — Foundation Models framework updates
  10. Apple Developer Documentation — SwiftData
  11. Apple Developer Documentation — Translation framework