← Todos los articulos

Casos de uso de Foundation Models: General vs Content Tagging

La documentación de SystemLanguageModel de Apple comienza con el modelo base, luego los casos de uso y después los adaptadores. SystemLanguageModel.default es el modelo base; SystemLanguageModel.UseCase documenta general y contentTagging; los adaptadores personalizados son la ruta entrenada por el desarrollador, que se cubre por separado.123

El post anterior sobre el protocolo Tool cubrió cómo hacer que el modelo predeterminado realice trabajo útil. La pregunta que responde este post es la siguiente: ¿cuándo basta con el modelo predeterminado más prompting y herramientas, y cuándo se gana su lugar el caso de uso .contentTagging de Apple? La ruta de adaptador personalizado es un post aparte; el ciclo de vida gestionado por el desarrollador tiene demasiada superficie como para compartirla con la rúbrica de decisión.

TL;DR

  • SystemLanguageModel.UseCase es un struct con dos propiedades estáticas: .general y .contentTagging.3 No hay otros casos de uso documentados.
  • .general es el predeterminado. Recurre a él primero. El prompting, las instrucciones, la generación guiada y las llamadas a herramientas se construyen sobre .general; la especialización es la última palanca que hay que mover.
  • .contentTagging pertenece a la guía de etiquetado de contenido de Apple: identifica temas, acciones, objetos y emociones en el texto de entrada, y luego recurre a .general cuando los límites declarados por Apple no encajan.5
  • El tercer carril (adaptadores personalizados, el tipo Adapter, la entitlement, el toolkit) es donde reside la complejidad operativa. Otro post.

Qué es realmente SystemLanguageModel

Apple describe SystemLanguageModel como el modelo de lenguaje en el dispositivo para tareas de generación de texto, con default como modelo base. La disponibilidad es estado en tiempo de ejecución: la elegibilidad del dispositivo, la configuración de Apple Intelligence y la preparación del modelo importan antes de que una app muestre una interfaz respaldada por el modelo.1

La documentación de Apple lista las plataformas del modelo (iOS, iPadOS, Mac Catalyst, macOS, visionOS, todas 26.0+) y dos versiones actuales del modelo: una para los lanzamientos del SO 26.0–26.3 y otra para 26.4. Apple actualiza el modelo en el dispositivo en actualizaciones rutinarias del SO.1

La disponibilidad se comprueba en tiempo de ejecución. SystemLanguageModel.availability es un enum Availability con los siguientes casos, tal como están documentados en el código de muestra de Apple:1

struct GenerativeView: View {
    private var model = SystemLanguageModel.default

    var body: some View {
        switch model.availability {
        case .available:
            // Show your intelligence UI.
        case .unavailable(.deviceNotEligible):
            // Show an alternative UI.
        case .unavailable(.appleIntelligenceNotEnabled):
            // Ask the person to turn on Apple Intelligence.
        case .unavailable(.modelNotReady):
            // The model isn't ready because it's downloading or because
            // of other system reasons.
        case .unavailable(let other):
            // The model is unavailable for an unknown reason.
        }
    }
}

isAvailable es un getter de conveniencia que devuelve true solo cuando el sistema está completamente listo.1 Compruébalo siempre antes de llamar.

El primer carril: hacer prompting al modelo general

La guía general de Apple dice que el modelo en el dispositivo admite generación y comprensión de texto para las tareas que se listan a continuación, incluida Generate tags from text.4

Capacidad Ejemplo de prompt
Resumir “Summarize this article.”
Extraer entidades “List the people and places mentioned in this text.”
Comprender texto “What happens to the dog in this story?”
Refinar o editar texto “Change this story to be in second person.”
Clasificar o juzgar texto “Is this text relevant to the topic ‘Swift’?”
Componer escritura creativa “Generate a short bedtime story about a fox.”
Generar etiquetas a partir de texto “Provide two tags that describe the main topics of this text.”
Generar diálogos de juego “Respond in the voice of a friendly inn keeper.”

La lista de cosas a evitar de Apple va aparte: matemáticas básicas, creación de código y razonamiento lógico.4

Evitar Ejemplo
Matemáticas básicas “How many b’s are there in bagel?”
Generación de código “Generate a Swift navigation list.”
Razonamiento lógico “If I’m at Apple Park facing Canada, what direction is Texas?”

Fíjate en que “generate tags from text” aparece en la tabla de cosas en las que es bueno del modelo general. Ese es un contexto importante para la decisión de especialización que viene a continuación.

El carril general es donde Apple documenta los prompts, las instrucciones, la generación guiada, las llamadas a herramientas y las opciones de generación.4

La ventana de contexto es de 4.096 tokens para el modelo del sistema.4 Apple señala que un token corresponde a tres o cuatro caracteres en idiomas como inglés, español o alemán, y a un token por carácter en idiomas como japonés, chino o coreano. Las instrucciones, los prompts y las salidas cuentan todos para el límite. Cuando una sesión lo supera, el framework lanza LanguageModelSession.GenerationError.exceededContextWindowSize(_:).4

El segundo carril: .contentTagging

SystemLanguageModel.UseCase está documentado como un struct (no un enum) con dos propiedades estáticas:3

static let general: SystemLanguageModel.UseCase
static let contentTagging: SystemLanguageModel.UseCase

No hay otros casos documentados. Si un artículo menciona un tercer caso de uso, ese artículo se lo está inventando.

.contentTagging tiene una forma distinta a .general. La guía de Apple describe el modelo contentTagging como uno que “identifica temas, acciones, objetos y emociones en el texto de entrada” y produce etiquetas como “una a unas pocas palabras en minúsculas”.5 El modelo está construido para evaluar la entrada en lugar de responder de forma conversacional: “No es un modelo de lenguaje típico que responda a una consulta de una persona: en cambio, evalúa y agrupa la entrada que le proporcionas”.5

Cargar el modelo con .contentTagging:

let model = SystemLanguageModel(useCase: .contentTagging)
let session = LanguageModelSession(
    model: model,
    instructions: """
        Provide the two tags that are most significant in the context of topics.
        """
)

El inicializador de conveniencia documentado es init(useCase:guardrails:).1 El código de muestra de Apple lo llama sin el argumento guardrails, lo que sugiere que guardrails lleva un valor por defecto en el sitio de la llamada.

El modelo contentTagging se integra con Generable, así que puedes definir un tipo de Swift que capture la forma de las etiquetas que quieres:

@Generable
struct ContentTaggingResult {
    @Guide(
        description: "Most important actions in the input text.",
        .maximumCount(2)
    )
    let actions: [String]

    @Guide(
        description: "Most important emotions in the input text.",
        .maximumCount(3)
    )
    let emotions: [String]

    @Guide(
        description: "Most important objects in the input text.",
        .maximumCount(5)
    )
    let objects: [String]

    @Guide(
        description: "Most important topics in the input text.",
        .maximumCount(2)
    )
    let topics: [String]
}

let response = try await session.respond(
    to: prompt,
    generating: ContentTaggingResult.self
)

Nota de comportamiento de Apple: “Para consultas de entrada muy cortas, las instrucciones de etiquetado de tema y emoción ofrecen los mejores resultados. Las listas de acciones u objetos serán demasiado específicas y pueden repetir las palabras de la consulta”.5 El modelo contentTagging también “respeta el formato de salida que deseas, incluso en ausencia de instrucciones”, así que la forma Generable carga más peso del que cargaría un prompt de sistema extenso.

El árbol de decisión (palabras textuales de Apple)

Apple da la regla de decisión directamente. Usa .general para etiquetas que no sean acciones, objetos, emociones ni temas; para hashtags; para flujos de etiquetado con llamadas a herramientas; y para restricciones más allá de maximumCount.5

Las cuatro frases exactas de la guía de contentTagging de Apple:5

  1. “If you’re tagging content that’s not an action, object, emotion, or topic, use general instead.”
  2. “Use the general model to generate content like hashtags for social media posts.”
  3. “If you adopt the tool calling API, and want to generate tags, use general and pass the Tool output to the content tagging model.”
  4. “If you have a complex set of constraints on tagging that are more complicated than the maximum count support of the tagging model, use general instead.”

Elige .contentTagging solo cuando la tarea sea etiquetar texto en las cuatro categorías documentadas por Apple y las restricciones de salida encajen en maximumCount. Si ni .general ni .contentTagging encajan, deja la decisión sobre adaptadores personalizados al post sobre el ciclo de vida del adaptador.5

Lo que Apple no ha publicado

Apple documenta .contentTagging como un modelo de etiquetado de contenido adaptado, pero no publica el mecanismo de adaptación, los deltas de benchmark ni propiedades estáticas adicionales de UseCase. Trata cualquier cosa más allá de general y contentTagging como no verificada hasta que developer.apple.com lo documente.35

El propio enfoque de Apple sobre versionado: “Apple actualizará periódicamente SystemLanguageModel en actualizaciones rutinarias del SO para mejorar las capacidades y el rendimiento del modelo en el dispositivo”.1 Trata la superficie como versionada.

Conclusiones

  1. Dos casos de uso documentados. La página UseCase de Apple documenta general y contentTagging; no asumas un tercer valor.3
  2. Por defecto, usa .general. El prompting + las herramientas + la generación guiada cubren la mayoría de los casos de uso para los que está diseñado el modelo en el dispositivo. La especialización es la última palanca, no la primera.
  3. Elige .contentTagging solo cuando encaje la forma documentada por Apple. Temas, acciones, objetos, emociones. Etiquetas de una a unas pocas palabras en minúsculas. Restricciones del nivel de maximumCount. Cualquier cosa más, recurre al alternativo.
  4. Lee las reglas de “use general instead” de Apple. Son cuatro frases concretas en la guía de contentTagging.5 Cada una es un límite real.
  5. La ruta de adaptador personalizado es una decisión aparte. Distinta superficie, distinto ciclo de vida, distinto post.

El cluster completo de Apple Ecosystem: el LLM en el dispositivo y el protocolo Tool para las primitivas del framework; la división de flujo de trabajo agéntico entre LLMs en la app y de herramientas para desarrolladores; App Intents vs MCP para la cuestión del enrutamiento entre los tres. El hub está en la Apple Ecosystem Series. Para un contexto más amplio sobre iOS con agentes de IA, consulta la guía iOS Agent Development.

FAQ

¿Cuántos valores de SystemLanguageModel.UseCase hay?

Dos propiedades estáticas tal como están documentadas actualmente: .general y .contentTagging.3 Si ves un tercer valor referenciado en un tutorial o en una respuesta generada por LLM, verifícalo contra developer.apple.com antes de adoptarlo.

¿Cuándo debería usar .contentTagging en vez de simplemente hacer prompting a .general?

Usa .contentTagging cuando la tarea sea identificar temas, acciones, objetos o emociones en el texto de entrada y devolver etiquetas cortas en minúsculas. La guía de Apple lista cuatro escenarios donde .general es la respuesta correcta en su lugar: etiquetado que no encaja en esas cuatro categorías, generación de hashtags, pipelines de etiquetado que se enrutan a través de llamadas a herramientas y restricciones de etiquetado más ricas que maximumCount.5

¿El modelo contentTagging acepta instrucciones arbitrarias como hace el modelo general?

Acepta instrucciones, pero el diseño del modelo es evaluar la entrada en lugar de responder a consultas tipo usuario. La guía de Apple señala que el modelo contentTagging “respeta el formato de salida que deseas, incluso en ausencia de instrucciones”, así que una forma @Generable con anotaciones @Guide carga la restricción, no un prompt largo.5

¿Cuál es la ventana de contexto del modelo en el dispositivo?

4.096 tokens para el modelo del sistema.4 La proporción de token a carácter es de aproximadamente tres a cuatro caracteres por token en inglés/español/alemán y un token por carácter en japonés/chino/coreano.4 El framework lanza LanguageModelSession.GenerationError.exceededContextWindowSize(_:) cuando la sesión supera el límite.4

¿Por qué el código de muestra de Apple llama a SystemLanguageModel(useCase:) sin guardrails:?

Apple documenta init(useCase:guardrails:) y publica código de muestra de etiquetado de contenido que llama a SystemLanguageModel(useCase: .contentTagging). No verifiqué el parámetro guardrails con valor por defecto compilando contra el SDK de iOS 26.15

Referencias


  1. Apple Developer, “SystemLanguageModel”. La declaración de la clase, las anotaciones de disponibilidad, las versiones del modelo, la propiedad .default, los casos del enum Availability y el inicializador de conveniencia init(useCase:guardrails:). Recuperado el 2026-05-04. 

  2. Apple Developer, “Loading and using a custom adapter with Foundation Models” y la entitlement com.apple.developer.foundation-model-adapter. El carril del adaptador personalizado se cubre en un post de seguimiento sobre el ciclo de vida gestionado por el desarrollador. 

  3. Apple Developer, “SystemLanguageModel.UseCase”. Las propiedades estáticas del struct: static let general y static let contentTagging. Recuperado el 2026-05-04. 

  4. Apple Developer, “Generating content and performing tasks with Foundation Models”. Tablas de capacidades, tamaño de la ventana de contexto, tipo de error. Recuperado el 2026-05-04. 

  5. Apple Developer, “Categorizing and organizing data with content tags”. Descripción del comportamiento del modelo contentTagging, código de muestra y las cuatro reglas explícitas de “use general instead”. Recuperado el 2026-05-04. 

Artículos relacionados

Adaptadores personalizados de Foundation Models: cuándo entrenar uno

Los adaptadores personalizados de Foundation Models en iOS 26 entrenan pesos LoRA, exportan paquetes .fmadapter, se dist…

13 min de lectura

Foundation Models On-Device LLM: el protocolo Tool

El framework Foundation Models de iOS 26 coloca un LLM de 3 mil millones de parámetros en cada dispositivo con Apple Int…

15 min de lectura

La capa de limpieza es el verdadero mercado de los agentes de IA

Charlie Labs pasó de construir agentes a limpiar lo que dejan. El mercado de agentes de IA se está moviendo de la genera…

15 min de lectura