IA no dispositivo em todo o iOS 27: Spotlight e mídia
No iOS 26, o grande modelo de linguagem no dispositivo vivia dentro do seu app. Você abria uma LanguageModelSession, anexava ferramentas, e o modelo raciocinava sobre qualquer contexto que você lhe entregasse1. O iOS 27 sobe esse mesmo modelo um nível. Agora a Apple o conecta ao Core Spotlight, de modo que o índice de busca já existente de um app vira fonte de ancoragem para o modelo2, e ao AVFoundation, de modo que o dispositivo transcreve e traduz legendas durante a reprodução sem que o app escreva uma única linha de código de inferência3. A mudança é a manchete: o modelo no dispositivo está se tornando um serviço do sistema, e não apenas uma API dentro do app. A mesma inteligência que você chama direto do seu código também roda por baixo da busca e por baixo da mídia, acessível por frameworks que você já usa.
Este post cobre duas dessas superfícies de sistema a partir de suas sessões da WWDC26: busca por LLM via Core Spotlight (sessão 246) e legendas geradas pela IA da Apple com pré-visualização de estilo na própria tela (sessão 256). Se você ainda não conhece os primitivos de framework por trás da primeira, o explicativo Foundation Models: LLM no dispositivo e o post sobre chamada de ferramentas no iOS 27 preparam o terreno.
TL;DR
- O
SpotlightSearchTooladota o protocoloTooldo Foundation Models, para que um modelo de linguagem possa buscar diretamente no índice do Core Spotlight do seu app na geração de respostas contextuais. A Apple o disponibiliza em iOS, iPadOS, macOS e visionOS2. - Você configura a ferramenta em cerca de uma linha, anexa-a a uma
LanguageModelSession, e o modelo gera suas próprias consultas, executa-as contra o seu índice e raciocina sobre os resultados2. - Um novo método de delegate de índice,
searchableItems(forIdentifiers:), permite recuperar oCSSearchableItemcompleto, para que o modelo enxergue metadados que o índice de busca compacto não consegue retornar2. - Perfis de orientação delimitam as capacidades de busca da ferramenta para modelos menores; estágios de pipeline personalizados deixam o índice executar cálculos (contagens, médias, pontuações próprias) em nome do modelo2.
- As legendas geradas pela IA da Apple rodam ao vivo e localmente durante a reprodução, sem nenhum código de app. Elas cobrem dois caminhos: transcrição de fala a partir do áudio e tradução de idioma a partir de legendas já existentes3.
- O
AVPlayerViewControllerganha legendas geradas e a nova pré-visualização de estilo dentro do player de graça; oAVPlayerLayere oAVCaptionRendererexpõem a API de pré-visualização de estilo para interfaces de player personalizadas3.
O que se mudou para dentro do sistema
A história do iOS 26 colocava um modelo no seu processo e lhe dava o protocolo Tool para estendê-lo1. O iOS 27 mantém esse modelo e acrescenta dois lugares onde o sistema o aciona em seu nome. O Core Spotlight vira uma superfície de recuperação que o modelo pode consultar, o que transforma o índice de busca que você já doa em contexto ancorado. O AVFoundation vira uma superfície de transcrição e tradução, o que significa legendas em idiomas que a mídia original nunca trouxe.
Os dois recursos parecem não ter relação até você perceber o padrão em comum. Em ambos, a Apple é dona do modelo e do trabalho pesado, e o seu app é dono do conteúdo e da superfície. Você doa itens pesquisáveis; o modelo escreve as consultas. Você reproduz um vídeo; o dispositivo gera as legendas. A inteligência é uma capacidade compartilhada do sistema, e o seu papel deixa de ser implementá-la para passar a ser alimentá-la com o conteúdo certo e apresentar bem o resultado.
Busca por LLM via Core Spotlight
SpotlightSearchTool, uma ferramenta que adota o protocolo Tool do Foundation Models para que um modelo de linguagem busque diretamente no conteúdo do Core Spotlight do seu app na geração de respostas.
O cenário, na narrativa da Apple, é um app de trilhas que já navega por parques estaduais e trilhas e deixa o usuário escrever anotações pessoais depois de cada caminhada. O desenvolvedor quer fazer ao modelo perguntas abertas sobre essas caminhadas. Uma LanguageModelSession simples responde a partir do próprio conhecimento de mundo do modelo, que é a fonte errada: as respostas deveriam vir das caminhadas que o app realmente conhece. O app já indexou cada trilha em um índice de busca do Core Spotlight, então a solução é deixar o modelo alcançar esse índice por chamada de ferramentas2.
É isso que o SpotlightSearchTool faz. A Apple o apresenta como uma ferramenta que adota o protocolo Tool para deixar um modelo de linguagem buscar diretamente no conteúdo do seu app no Core Spotlight na geração de respostas contextuais, disponível em iOS, iPadOS, macOS e visionOS2. O pré-requisito é o trabalho que você já teria feito: doar conteúdo pesquisável com o Core Spotlight, tema da sessão anterior da Apple, “Supporting semantic search with Core Spotlight”24. Depois que seus itens estão doados, você importa CoreSpotlight e FoundationModels, e a Apple diz que a ferramenta está pronta para buscar no seu índice em uma linha de código. Você escolhe um modelo, seja o SystemLanguageModel ou um fornecido pelas novas Model Provider APIs, e então adiciona uma instância de SpotlightSearchTool à sua sessão2.
import CoreSpotlight
import FoundationModels
// Apple: "in one line of code, the tool is ready to search
// your app's Core Spotlight index."
let session = LanguageModelSession(tools: [SpotlightSearchTool()])
let response = try await session.respond(to: "What hikes have I gone on?")
A trajetória, não a consulta
O detalhe que merece atenção é quem escreve a busca. Não é você. A Apple descreve a trajetória de uma pergunta como “What hikes have I gone on?” assim: o modelo decide que precisa do SpotlightSearchTool, gera a própria consulta, o Spotlight executa essa consulta e retorna uma descrição do conjunto de resultados, e o modelo raciocina sobre essa saída para gerar sua resposta final2. A frase de encerramento da sessão coloca a mudança em termos claros: os desenvolvedores não escrevem mais consultas de busca; eles fornecem o conteúdo e deixam a inteligência cuidar do resto2.
Uma lacuna aparece cedo, e a Apple é franca quanto a ela. Alguns metadados do índice do Spotlight, como conteúdo de texto e HTML, são armazenados em uma representação altamente compacta que pode ser pesquisada, mas não recuperada em uma forma legível para um modelo de linguagem2. O modelo encontra os itens certos sem conseguir ler tudo o que foi doado por eles. A solução fica no delegate de índice que você já implementa para lidar com pedidos de reindexação. A Apple acrescenta um método para recuperar o CSSearchableItem completo pelo seu identificador único, de modo que o modelo possa administrar respostas sobre potencialmente milhões de resultados sem carregar todos2.
// On your CSSearchableIndex delegate.
func searchableItems(
forIdentifiers identifiers: [String]
) async -> [CSSearchableItem] {
// Return the complete item for each id. The callback is also the
// place to attach metadata you would not donate for search but
// want the model to reason over.
identifiers.compactMap { fullItem(for: $0) }
}
A Apple deixa explícito o segundo ponto: se o seu app guarda metadados que não fazem sentido doar para busca, mas ajudariam o modelo a raciocinar, o callback do delegate é o lugar para definir esses atributos extras no item, para que o modelo os veja2.
Exibindo resultados
A Apple traça uma linha clara entre dois modos de exibição. A resposta da sessão é uma descrição concisa sobre o conjunto de resultados, que é o que uma interface no estilo de assistente quer mostrar. Para uma exibição em lista, os próprios resultados ficam disponíveis diretamente no SpotlightSearchTool, o que a Apple chama de a melhor maneira de acessar itens pesquisáveis quando o conjunto de resultados é grande2. As respostas de busca chegam como uma sequência assíncrona, cada uma podendo carregar um lote de resultados até a chamada da ferramenta se concluir. Como o modelo pode chamar a ferramenta mais de uma vez antes da resposta final, a Apple recomenda usar o queryToken de cada resposta para decidir quando a interface deve ser atualizada2.
Personalizando para o modelo que você escolher
O SpotlightSearchTool expõe um amplo conjunto de capacidades, da busca semântica sobre texto à busca estruturada sobre datas, pessoas e lugares2. A Apple dá três alavancas para ajustar essa superfície ao modelo que você roda. A primeira é o perfil de orientação. Entregar a um modelo pequeno todo o conjunto de capacidades da ferramenta queima um contexto que ele não tem, então um GuidanceProfile delimita a orientação apenas ao que o app precisa, até a lista exata de atributos de metadados que o modelo deve considerar, com um nível de guia dinâmico definido quando você cria a ferramenta2. O conselho da Apple para modelos no dispositivo, que têm um tamanho de contexto mais restrito, é orientação focada para capacidades de busca mais simples2.
A segunda alavanca é a resolução de referências. Se o app doa relações entre pessoas e o usuário pergunta sobre outras pessoas em uma trilha, o modelo precisa saber a quem “aquela pessoa” se refere. A resposta da Apple é um resolvedor de contatos que retorna informações de contato relacionadas à identidade do usuário, que a ferramenta confronta com os metadados do índice2.
A terceira alavanca é a que transforma busca em cálculo. Para uma solicitação complexa como “how many trails have I hiked this year, and for each month, how many miles on average?”, a Apple diz que o modelo pode abrir mão de uma consulta simples em favor de uma busca em pipeline que reúne consultas ao índice mais cálculo sobre o conjunto de resultados2. O modelo divide a pergunta em estágios: uma busca por caminhadas concluídas, um estágio de contagem que monta uma tabela por mês e, então, um estágio que calcula uma média sobre as contagens2. Os estágios de pipeline são Generable, de modo que o modelo gera um estágio sob demanda a partir do prompt, e um app pode registrar seus próprios estágios personalizados2. O exemplo da Apple é uma pontuação de felicidade calculada sobre as anotações de cada item, talvez via análise de sentimento ou uma avaliação de cinco estrelas, com propriedades Guide dizendo ao modelo quais resultados preferir2.
// Apple's example: a Generable pipeline stage that scores items so the
// model reasons over the top-scoring results, not the raw set.
@Generable
struct HappinessScoredTrail {
let item: CSSearchableItem
@Guide(description: "Prefer higher scores; 5-star hikes rank highest.")
let happinessScore: Double
}
// Register the stage on the tool's configuration.
A Apple fecha a seção falando em verificação, não em implementação, apontando para o framework Evaluations para medir o quão bem o modelo chama a ferramenta e o quão significativas são suas respostas, com a cobertura de resultados como métrica de exemplo para o app de trilhas2. Esse laço de avaliação é um assunto à parte, tratado no post sobre o framework Apple Evaluations.
Legendas geradas, no dispositivo
A superfície de mídia mostra o mesmo princípio por outro ângulo. As legendas geradas pela IA da Apple são criadas ao vivo, localmente no dispositivo, conforme a mídia é reproduzida3. O enquadramento na sessão 256 é o da acessibilidade em primeiro lugar: as legendas importam para pessoas surdas ou com deficiência auditiva, para quem acompanha o diálogo falado e para qualquer pessoa que simplesmente não consegue ouvir o áudio naquele momento. Quando o conteúdo chega sem um idioma que o espectador entenda, o dispositivo pode preencher a lacuna3.
A Apple descreve dois caminhos. O primeiro é a transcrição de fala: o áudio de origem entra no modelo de conversão de fala em texto no dispositivo e saem as legendas3. O segundo é a tradução de idioma: legendas existentes (em inglês, no exemplo da Apple) entram no modelo de tradução no dispositivo, que produz legendas em outro idioma, como o italiano3. As legendas autoradas, aquelas que um criador de conteúdo escreveu à mão, continuam preferenciais e inalteradas; as legendas geradas apenas acrescentam idiomas3. Essa mesma capacidade de tradução no dispositivo aparece diretamente para os desenvolvedores no framework Translation.
A parte que importa para a adoção: você não implementa nada para ligar isso. A Apple afirma que as legendas geradas ficam disponíveis automaticamente durante a reprodução de vídeo3. Elas cobrem transmissão ao vivo por HTTP, incluindo canais de TV ao vivo, vídeo sob demanda, eventos ao vivo como esportes e conteúdo baseado em arquivo, como mídia incluída no app ou baixada3. Tanto conteúdo profissional quanto conteúdo criado pelo cliente (captura pela câmera do iPhone, vídeos de redes sociais) se qualificam3.
A matriz de lançamento é restrita e merece leitura precisa. A partir do iOS e do macOS 27, legendas em inglês podem ser geradas a partir de áudio em inglês, com suporte também no tvOS e no visionOS 273. Além disso, vários idiomas de legenda podem ser gerados a partir de legendas em inglês no iOS e no macOS3. Ou seja, a transcrição é de inglês para inglês a princípio em quatro plataformas, e a tradução se ramifica a partir do inglês nas duas maiores.
Onde está, de fato, o seu trabalho
Habilitar as legendas geradas não custa nada, então seu esforço vai para a interface de seleção. A orientação da Apple é direta: ofereça uma interface de seleção de legendas durante a reprodução3. Três opções, em ordem decrescente de quanto a Apple já entrega pronto:
- O
AVPlayerViewControllerno iOS (e oAVPlayerViewno macOS) implementa por completo a seleção de legendas e os controles do player. Você não faz nada a mais3. - O
AVLegibleMediaOptionsMenuControllerapresenta os controles de seleção e o comportamento sem os controles do player, o que serve quando você já tem uma interface de player e só precisa do menu3. - Controles personalizados para seleção de mídia, quando você quer que o menu combine com o resto do seu app3.
Na demonstração da Apple, as opções geradas exibem um símbolo de brilho e a palavra “Translated”, para que os usuários consigam distingui-las das faixas autoradas3.
A pré-visualização de estilo
O segundo recurso da sessão é a apresentação. O app Ajustes deixa as pessoas escolherem e criarem estilos de legenda há anos, mas o ponto da Apple é que mudar o estilo no meio do vídeo, com uma pré-visualização ao vivo, é ao mesmo tempo mais fácil e mais acessível do que sair da reprodução para caçar pelos Ajustes3. Os mesmos estilos que um usuário definiu nos Ajustes, incluindo os personalizados, agora aparecem no menu de estilos do player com uma pré-visualização de cada um3.
O AVPlayerViewController implementa a pré-visualização de estilo e os controles do player de imediato3. Para players personalizados, o AVPlayerLayer expõe uma API de pré-visualização de estilo, e o AVCaptionRenderer pode fornecer a pré-visualização se você mesmo assumir a renderização3. O fluxo de AVPlayerLayer da Apple: cada estilo do sistema carrega um profile ID, então você busca todos os estilos pelos seus profile IDs, preenche sua interface com os nomes deles e chama a função de pré-visualização quando o usuário seleciona um. A nova legenda aparece no estilo escolhido enquanto quaisquer legendas existentes se ocultam automaticamente, para que não interfiram. Passar nil no parâmetro de texto mostra um texto de sistema localizado, e um parâmetro de posição desloca a pré-visualização para liberar seus controles. Você chama a função de novo a cada novo estilo, interrompe a pré-visualização quando a seleção termina (o que restaura as legendas ativas) e define o estilo escolhido para todas as legendas do sistema3.
Como adotar
Para a busca no Spotlight:
- Doe seu conteúdo ao Core Spotlight primeiro; a ferramenta busca no índice, então sem doação não há nada a buscar24.
- Anexe
SpotlightSearchTool()a umaLanguageModelSessione escolha seu modelo, oSystemLanguageModelou um vindo das Model Provider APIs2. - Implemente
searchableItems(forIdentifiers:)no seu delegate de índice para retornar itens completos e anexar metadados exclusivos do modelo que o índice compacto não consegue recuperar2. - Para uma visão de assistente, mostre a resposta da sessão; para uma visão de lista, leia os resultados de
CSSearchableItemna ferramenta e atualize a cadaqueryTokende resposta2. - Se você roda um modelo no dispositivo, delimite as capacidades com um
GuidanceProfilee recorra a estágios de pipeline apenas quando uma solicitação exigir contagem ou pontuação sobre um conjunto grande2.
Para as legendas geradas:
- Nada liga o recurso; ele roda automaticamente durante a reprodução3.
- Garanta que seu player exponha uma interface de seleção de legendas por meio do
AVPlayerViewController, doAVLegibleMediaOptionsMenuControllerou dos seus próprios controles3. - Adicione a pré-visualização de estilo pelo
AVPlayerViewControllerde graça ou conecte a API de pré-visualização doAVPlayerLayera um player personalizado3. - Leia a matriz de suporte antes de prometer idiomas: transcrição de inglês para inglês em quatro plataformas, tradução com origem em inglês no iOS e no macOS3.
FAQ
O que é o SpotlightSearchTool no iOS 27?
É uma ferramenta do Foundation Models que adota o protocolo Tool, para que um modelo de linguagem possa buscar diretamente no índice do Core Spotlight do seu app e usar os resultados na geração de respostas. A Apple a disponibiliza em iOS, iPadOS, macOS e visionOS. Você anexa uma instância de SpotlightSearchTool a uma LanguageModelSession, e o modelo gera as próprias consultas de busca em vez de você escrevê-las2.
Eu preciso escrever as consultas de busca?
Não. A narrativa da Apple é que os desenvolvedores não escrevem mais consultas de busca; eles fornecem o conteúdo e deixam o modelo cuidar do resto. O modelo decide que precisa da ferramenta, gera uma consulta, o Spotlight a executa e retorna uma descrição do conjunto de resultados, e o modelo raciocina sobre essa saída para produzir sua resposta2.
Por que o modelo não consegue ver todos os metadados que doei?
Alguns metadados do Spotlight, como conteúdo de texto e HTML, são armazenados em uma forma altamente compacta que pode ser pesquisada, mas não recuperada de modo legível. Para dar ao modelo o quadro completo, implemente searchableItems(forIdentifiers:) no seu delegate de índice para retornar o CSSearchableItem completo e use esse callback para anexar quaisquer atributos extras exclusivos do modelo2.
Preciso implementar algo para ter legendas geradas?
Não. A Apple afirma que as legendas geradas ficam disponíveis automaticamente durante a reprodução de vídeo, criadas ao vivo e localmente no dispositivo. Seu trabalho é a interface de seleção e, opcionalmente, a pré-visualização de estilo dentro do player, não a inferência3.
Quais idiomas as legendas geradas oferecem no lançamento?
A partir do iOS e do macOS 27, legendas em inglês podem ser geradas a partir de áudio em inglês, também no tvOS e no visionOS 27. Em separado, vários idiomas de legenda podem ser gerados a partir de legendas em inglês no iOS e no macOS. Ou seja, a transcrição é de inglês para inglês em quatro plataformas, e a tradução se ramifica a partir do inglês no iOS e no macOS3.
As legendas geradas e a busca no Spotlight são privadas?
Ambas rodam no dispositivo. As legendas geradas são criadas ao vivo e localmente conforme a mídia é reproduzida3, e o SpotlightSearchTool consulta o índice local do Core Spotlight do seu app por meio do modelo no dispositivo12. O fato de a Apple fornecer a implementação do sistema muda quem a mantém, não onde ela roda.
O cluster completo do Apple Ecosystem: o Foundation Models: LLM no dispositivo e o protocolo Tool que o SpotlightSearchTool adota; o controle de chamada de ferramentas no iOS 27, que governa o quão agressivamente o modelo chama ferramentas como esta; a superfície paralela dos App Intents no iOS 27 para execução em segundo plano, sincronização e Spotlight; e o Core AI: executando modelos no Apple Silicon para a camada abaixo do modelo do sistema. O eixo central está na Série Apple Ecosystem. Para um contexto mais amplo de iOS com agentes de IA, veja o guia de desenvolvimento de agentes iOS.
-
Apple Developer, visão geral do framework “Foundation Models” e protocolo “Tool”. O framework do iOS 26 introduziu o modelo no dispositivo, a
LanguageModelSession, a geração guiada via@Generablee o protocoloTool, que permite ao modelo invocar código do app no meio da geração. ↩↩↩ -
Apple, sessão 246 da WWDC26, “LLM search using Core Spotlight”. developer.apple.com/videos/play/wwdc2026/246. A Apple apresenta o
SpotlightSearchTool, uma ferramenta que adota o protocoloTooldo Foundation Models e permite a um modelo de linguagem buscar diretamente no índice do Core Spotlight de um app na geração de respostas contextuais, disponível em iOS, iPadOS, macOS e visionOS. A sessão cobre o fluxo de configurar/anexar, a trajetória de chamada de ferramentas, o método de delegate de índicesearchableItems(forIdentifiers:)para recuperar instâncias completas deCSSearchableItem, lotes de resposta de busca comqueryToken, perfis de orientação, a resolução de referências com resolvedor de contatos, estágios de pipeline Generable para cálculo sobre conjuntos de resultados e a avaliação via framework Evaluations, com a cobertura de resultados como métrica. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, sessão 256 da WWDC26, “Discover generated subtitles and subtitle styles”. developer.apple.com/videos/play/wwdc2026/256. A Apple descreve legendas geradas por IA criadas ao vivo e localmente no dispositivo durante a reprodução, por dois caminhos (transcrição por conversão de fala em texto no dispositivo e tradução no dispositivo a partir de legendas existentes), disponíveis automaticamente sem código de app. A sessão expõe a matriz de lançamento (transcrição de inglês a partir de inglês em iOS, macOS, tvOS e visionOS 27; tradução a partir de legendas em inglês em iOS e macOS), as opções de interface de seleção (
AVPlayerViewController,AVPlayerView,AVLegibleMediaOptionsMenuController, controles personalizados) e a pré-visualização de estilo de legenda viaAVPlayerViewController,AVPlayerLayereAVCaptionRenderer, usando profile IDs por estilo. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple Developer, framework “Core Spotlight” e as APIs
CSSearchableItemeCSSearchableIndexpara doar conteúdo pesquisável. A sessão 246 cita a sessão anterior “Supporting semantic search with Core Spotlight” como o pré-requisito para doar conteúdo, gerenciar doações com um delegate e uma extensão de reindexação e realizar busca estruturada e semântica. ↩↩