View in English

  • Apple Developer
    • Get Started

    Explore Get Started

    • Overview
    • Learn
    • Apple Developer Program

    Stay Updated

    • Latest News
    • Hello Developer
    • Platforms

    Explore Platforms

    • Apple Platforms
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    Featured

    • Design
    • Distribution
    • Games
    • Accessories
    • Web
    • Home
    • CarPlay
    • Technologies

    Explore Technologies

    • Overview
    • Xcode
    • Swift
    • SwiftUI

    Featured

    • Accessibility
    • App Intents
    • Apple Intelligence
    • Games
    • Machine Learning & AI
    • Security
    • Xcode Cloud
    • Community

    Explore Community

    • Overview
    • Meet with Apple events
    • Community-driven events
    • Developer Forums
    • Open Source

    Featured

    • WWDC
    • Swift Student Challenge
    • Developer Stories
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Centers
    • Documentation

    Explore Documentation

    • Documentation Library
    • Technology Overviews
    • Sample Code
    • Human Interface Guidelines
    • Videos

    Release Notes

    • Featured Updates
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • Downloads

    Explore Downloads

    • All Downloads
    • Operating Systems
    • Applications
    • Design Resources

    Featured

    • Xcode
    • TestFlight
    • Fonts
    • SF Symbols
    • Icon Composer
    • Support

    Explore Support

    • Overview
    • Help Guides
    • Developer Forums
    • Feedback Assistant
    • Contact Us

    Featured

    • Account Help
    • App Review Guidelines
    • App Store Connect Help
    • Upcoming Requirements
    • Agreements and Guidelines
    • System Status
  • Quick Links

    • Events
    • News
    • Forums
    • Sample Code
    • Videos
 

Vídeos

Abrir menu Fechar menu
  • Coleções
  • Todos os vídeos
  • Sobre

Mais vídeos

  • Sobre
  • Resumo
  • Código
  • Conheça o framework Foundation Models

    Saiba como usar o LLM (grande modelo de linguagem) diretamente no dispositivo que viabiliza a Apple Intelligence. Esta visão geral aborda tudo, desde a geração guiada para criar estruturas de dados em Swift e streaming para experiências responsivas até a chamada de ferramentas para integração de fontes de dados e sessões para gerenciamento de contexto. Esta sessão não tem pré-requisitos.

    Capítulos

    • 0:00 - Introdução
    • 2:05 - O modelo
    • 5:20 - Geração guiada
    • 7:45 - Streaming de snapshots
    • 11:28 - Chamada de ferramentas
    • 16:11 - Sessão stateful
    • 21:02 - Experiência do desenvolvedor

    Recursos

    • Human Interface Guidelines: Generative AI
      • Vídeo HD
      • Vídeo SD

    Vídeos relacionados

    WWDC25

    • Aprofunde-se no framework Foundation Models
    • Codificação guiada: integre a IA no dispositivo ao seu app usando o framework Foundation Models
    • Conheça os frameworks de aprendizado de máquina e IA nas plataformas Apple
    • Explore a criação de prompts e a segurança de IA para modelos base no dispositivo
  • Buscar neste vídeo...
    • 2:28 - Playground - Trip to Japan

      import FoundationModels
      import Playgrounds
      
      #Playground {
          let session = LanguageModelSession()
          let response = try await session.respond(to: "What's a good name for a trip to Japan? Respond only with a title")
      }
    • 2:43 - Playground - Loop over landmarks

      import FoundationModels
      import Playgrounds
      
      #Playground {
          let session = LanguageModelSession()
          for landmark in ModelData.shared.landmarks {
              let response = try await session.respond(to: "What's a good name for a trip to \(landmark.name)? Respond only with a title")
          }
      }
    • 5:32 - Creating a Generable struct

      // Creating a Generable struct
      
      @Generable
      struct SearchSuggestions {
          @Guide(description: "A list of suggested search terms", .count(4))
          var searchTerms: [String]
      }
    • 5:51 - Responding with a Generable type

      // Responding with a Generable type
      
      let prompt = """
          Generate a list of suggested search terms for an app about visiting famous landmarks.
          """
      
      let response = try await session.respond(
          to: prompt,
          generating: SearchSuggestions.self
      )
      
      print(response.content)
    • 6:18 - Composing Generable types

      // Composing Generable types
      
      @Generable struct Itinerary {
          var destination: String
          var days: Int
          var budget: Float
          var rating: Double
          var requiresVisa: Bool
          var activities: [String]
          var emergencyContact: Person
          var relatedItineraries: [Itinerary]
      }
    • 9:20 - PartiallyGenerated types

      // PartiallyGenerated types
      
      @Generable struct Itinerary {
          var name: String
          var days: [Day]
      }
    • 9:40 - Streaming partial generations

      // Streaming partial generations
      
      let stream = session.streamResponse(
          to: "Craft a 3-day itinerary to Mt. Fuji.",
          generating: Itinerary.self
      )
      
      for try await partial in stream {
          print(partial)
      }
    • 10:05 - Streaming itinerary view

      struct ItineraryView: View {
          let session: LanguageModelSession
          let dayCount: Int
          let landmarkName: String
        
          @State
          private var itinerary: Itinerary.PartiallyGenerated?
        
          var body: some View {
              //...
              Button("Start") {
                  Task {
                      do {
                          let prompt = """
                              Generate a \(dayCount) itinerary \
                              to \(landmarkName).
                              """
                        
                          let stream = session.streamResponse(
                              to: prompt,
                              generating: Itinerary.self
                          )
                        
                          for try await partial in stream {
                              self.itinerary = partial
                          }
                      } catch {
                          print(error)  
                      }
                  }
              }
          }
      }
    • 11:00 - Property order matters

      @Generable struct Itinerary {
        
        @Guide(description: "Plans for each day")
        var days: [DayPlan]
        
        @Guide(description: "A brief summary of plans")
        var summary: String
      }
    • 13:42 - Defining a tool

      // Defining a tool
      import WeatherKit
      import CoreLocation
      import FoundationModels
      
      struct GetWeatherTool: Tool {
          let name = "getWeather"
          let description = "Retrieve the latest weather information for a city"
      
          @Generable
          struct Arguments {
              @Guide(description: "The city to fetch the weather for")
              var city: String
          }
      
          func call(arguments: Arguments) async throws -> ToolOutput {
              let places = try await CLGeocoder().geocodeAddressString(arguments.city)
              let weather = try await WeatherService.shared.weather(for: places.first!.location!)
              let temperature = weather.currentWeather.temperature.value
      
              let content = GeneratedContent(properties: ["temperature": temperature])
              let output = ToolOutput(content)
      
              // Or if your tool’s output is natural language:
              // let output = ToolOutput("\(arguments.city)'s temperature is \(temperature) degrees.")
      
              return output
          }
      }
    • 15:03 - Attaching tools to a session

      // Attaching tools to a session
      
      let session = LanguageModelSession(
          tools: [GetWeatherTool()],
          instructions: "Help the user with weather forecasts."
      )
      
      let response = try await session.respond(
          to: "What is the temperature in Cupertino?"
      )
      
      print(response.content)
      // It’s 71˚F in Cupertino!
    • 16:30 - Supplying custom instructions

      // Supplying custom instructions
      
      let session = LanguageModelSession(
          instructions: """
              You are a helpful assistant who always \
              responds in rhyme.
              """
      )
    • 17:46 - Multi-turn interactions

      // Multi-turn interactions
      
      let session = LanguageModelSession()
      
      let firstHaiku = try await session.respond(to: "Write a haiku about fishing")
      print(firstHaiku.content)
      // Silent waters gleam,
      // Casting lines in morning mist—
      // Hope in every cast.
      
      let secondHaiku = try await session.respond(to: "Do another one about golf")
      print(secondHaiku.content)
      // Silent morning dew,
      // Caddies guide with gentle words—
      // Paths of patience tread.
      
      print(session.transcript)
// (Prompt) Write a haiku about fishing
      // (Response) Silent waters gleam...
      // (Prompt) Do another one about golf
      // (Response) Silent morning dew...
    • 18:22 - Gate on isResponding

      import SwiftUI
      import FoundationModels
      
      struct HaikuView: View {
      
          @State
          private var session = LanguageModelSession()
      
          @State
          private var haiku: String?
      
          var body: some View {
              if let haiku {
                  Text(haiku)
              }
              Button("Go!") {
                  Task {
                      haiku = try await session.respond(
                          to: "Write a haiku about something you haven't yet"
                      ).content
                  }
              }
              // Gate on `isResponding`
              .disabled(session.isResponding)
          }
      }
    • 18:39 - Using a built-in use case

      // Using a built-in use case
      
      let session = LanguageModelSession(
          model: SystemLanguageModel(useCase: .contentTagging)
      )
    • 19:19 - Content tagging use case - 1

      // Content tagging use case
      
      @Generable
      struct Result {
          let topics: [String]
      }
      
      let session = LanguageModelSession(model: SystemLanguageModel(useCase: .contentTagging))
      let response = try await session.respond(to: ..., generating: Result.self)
    • 19:35 - Content tagging use case - 2

      // Content tagging use case
      
      @Generable
      struct Top3ActionEmotionResult {
          @Guide(.maximumCount(3))
          let actions: [String]
          @Guide(.maximumCount(3))
          let emotions: [String]
      }
      
      let session = LanguageModelSession(
          model: SystemLanguageModel(useCase: .contentTagging),
          instructions: "Tag the 3 most important actions and emotions in the given input text."
      )
      let response = try await session.respond(to: ..., generating: Top3ActionEmotionResult.self)
    • 19:56 - Availability checking

      // Availability checking
      
      struct AvailabilityExample: View {
          private let model = SystemLanguageModel.default
      
          var body: some View {
              switch model.availability {
              case .available:
                  Text("Model is available").foregroundStyle(.green)
              case .unavailable(let reason):
                  Text("Model is unavailable").foregroundStyle(.red)
                  Text("Reason: \(reason)")
              }
          }
      }
    • 22:13 - Encodable feedback attachment data structure

      let feedback = LanguageModelFeedbackAttachment(
        input: [
          // ...
        ],
        output: [
          // ...
        ],
        sentiment: .negative,
        issues: [
          LanguageModelFeedbackAttachment.Issue(
            category: .incorrect,
            explanation: "..."
          )
        ],
        desiredOutputExamples: [
          [
            // ...
          ]
        ]
      )
      let data = try JSONEncoder().encode(feedback)
    • 0:00 - Introdução
    • O framework Foundation Models oferece acesso a um LLM (grande modelo de linguagem) diretamente nos dispositivos macOS, iOS, iPadOS e visionOS. Ele permite criar recursos personalizados e inovadores, como sugestões de busca, roteiros e diálogos dentro de jogos, mantendo a privacidade do usuário, já que os dados permanecem no dispositivo e o modelo pode pode funcionar offline. O framework é otimizado para geração de conteúdo, resumo de textos e análise de entradas do usuário. Para auxiliar os desenvolvedores, a Apple preparou uma série de vídeos que abordam a visão geral do framework, geração guiada, APIs de streaming, chamada de ferramentas, suporte a múltiplas interações e integração perfeita com o ecossistema de desenvolvedores da Apple.

    • 2:05 - O modelo
    • O novo recurso Playgrounds do Xcode é a forma ideal para experimentar prompts com o LLM (grande modelo de linguagem) diretamente no dispositivo. Com apenas algumas linhas de código, você pode testar prompts e ver as respostas do modelo em tempo real. O modelo no dispositivo, embora conte com 3 bilhões de parâmetros, é otimizado para tarefas específicas como resumo, extração e classificação, e não é adequado para conhecimento geral ou raciocínio avançado. Divida tarefas complexas em partes menores para maximizar sua eficácia. A Geração Guiada, um componente central do framework Foundation Models, aborda o desafio de integrar a saída do modelo nos apps. Ela permite criar recursos de maneira mais confiável, fornecendo uma abordagem estruturada para a geração do modelo, superando as limitações de depender do modelo para produzir formatos facilmente interpretáveis, como JSON ou CSV.

    • 5:20 - Geração guiada
    • Com a importação dos Foundation Models, são introduzidas duas novas macros: @Generable e @Guide. '@Generable' permite descrever tipos para instâncias geradas pelo modelo, que podem ser construídas de tipos primitivos, matrizes ou tipos compostos ou recursivos. '@Guide' fornece descrições em linguagem natural das propriedades e controla os valores gerados, garantindo a correção estrutural por meio de decodificação restrita. Essa abordagem de Geração Guiada simplifica os prompts, melhora a precisão do modelo e acelera a inferência. Ela permite receber objetos Swift detalhados diretamente do modelo, que podem ser mapeados para visualizações atraentes, tudo sem necessidade de especificar o formato de saída no prompt.

    • 7:45 - Streaming de snapshots
    • O framework Foundation Models difere do streaming delta tradicional baseado em tokens para LLMs (grandes modelos de linguagem). Em vez disso, ele transmite snapshots, respostas parcialmente geradas com propriedades opcionais, que são mais robustos e convenientes para lidar com saídas estruturadas. Essa abordagem utiliza a macro '@Generable', que gera um tipo 'PartiallyGenerated' espelhando a estrutura externa com propriedades opcionais. O método 'streamResponse' retorna uma sequência assíncrona desses tipos parcialmente gerados, permitindo integração com frameworks declarativos como o SwiftUI. Use animações e transições do SwiftUI para melhorar a experiência durante o streaming. Além disso, é fundamental considerar a identidade das visualizações e a ordem de declaração das propriedades para obter resultados ideais.

    • 11:28 - Chamada de ferramentas
    • A chamada de ferramentas permite que um modelo de IA execute código personalizado dentro de um app. Esse recurso possibilita que o modelo decida autonomamente quando usar ferramentas externas para obter informações ou executar ações, como consultar restaurantes, hotéis ou dados meteorológicos, com base no contexto da solicitação do usuário. O modelo pode se integrar a diversas fontes confiáveis, como o MapKit, para fornecer informações precisas e atualizadas. Nesse processo, o modelo gera chamadas de ferramentas, que são executadas automaticamente pelo framework Foundation Models, e os resultados são inseridos de volta na transcrição da conversa, permitindo que o modelo os utilize na formulação da resposta final.

    • 16:11 - Sessão stateful
    • O framework Foundation Models permite sessões stateful utilizando um modelo de propósito geral no dispositivo. É possível fornecer instruções personalizadas para guiar as respostas do modelo, especificando estilo e nível de detalhamento, embora isso seja opcional. Essas instruções funcionam de forma independente dos prompts do usuário, e o modelo é treinado para segui-las em vez dos prompts, garantindo maior segurança. Durante uma sessão, o modelo preserva o contexto ao longo de interações de múltiplas etapas, permitindo que compreenda e faça referência a prompts e respostas anteriores. A propriedade transcript pode ser usada para inspecionar essas interações. O framework também oferece casos de uso, como o adaptador de marcação de conteúdo, que oferece suporte à geração de tags, extração de entidades e detecção de tópicos. É possível personalizar esses adaptadores para atender a necessidades específicas. Antes de criar uma sessão, verifique a disponibilidade do modelo, pois ele só pode ser executado em dispositivos compatíveis com a Apple Intelligence e em regiões com suporte. É fundamental implementar tratamento de erros adequado para lidar com possíveis problemas como violações de proteções, idiomas sem suporte ou estouro do limite de contexto.

    • 21:02 - Experiência do desenvolvedor
    • Os Playgrounds permitem a rápida iteração de prompts para LLMs (grandes modelos de linguagem) dentro de um projeto, permitindo o acesso a todos os tipos de projeto. O novo modelo de profiling do Instruments ajuda a otimizar a latência, identificando áreas de melhoria nas solicitações ao modelo e na verbosidade dos prompts. Recomenda-se enviar comentários por meio do Assistente de Feedback.

Developer Footer

  • Vídeos
  • WWDC25
  • Conheça o framework Foundation Models
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • Apple Intelligence
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Downloads
    • Sample Code
    • Videos
    Open Menu Close Menu
    • Help Guides & Articles
    • Contact Us
    • Forums
    • Feedback & Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • Mini Apps Partner Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Read the latest news.
    Get the Apple Developer app.
    Copyright © 2026 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines