Meet the Foundation Models framework
WWDC прошел и, как обычно, показали много нового и интересного (нет, особенно ужасен новый дизайн Liquid Glass). Для меня самое интересное – это новые AI инструменты и возможности и тут на самом деле было много интересного.
Apple показали фрейморк Foundation Models для работы с llm on-device в приложениях. Из основного:
- полностью нативная реализация и интеграция со swift'ом. Сама модель адаптирована под работу на Apple процессорах
- модель: 3B квантизованная до 2х бит: создать полноценного чат бота с ней не выйдет, но с задачами суммаризации, генерацией / понимаем текста и другими несложными llm-based задачами она более чем может справится
- есть возможность не промптом, а с помощью макросов управлять и структурировать формат ответа модели. Этот подход назвали "guided generation". Если кратко, то мы описываем энамы и структуры, и говорим, что хотим от модели в таком формате получать ответ и будем его именно так и получать
- появится новый инструмент отладки и тестирования работы с моделью
- самое важное и крутое на мой взгляд: "Tool calling": мы можем "зарегистрировать" функции приложения и сказать модели, что она может к ним обращаться и получать из них информации. Это крутое новшество, которое тянет на отдельный пост, который мы позже принесем
Отдельным пунктом хочу еще выделить, что наконец-то Xcode получит интеграцию с chatgpt и другими llm, в том числе и локально запущенными 🔥
Если хотите глубже погрузиться в архитектуру, узнать больше про пост/пре-трейн и оптимизации моделей, на каких данных и как обучалась, то вам точно нужно зайти сюда. Еще завезли отдельный HIG, посвященный генеративным AI.
#wwdc2025
WWDC прошел и, как обычно, показали много нового и интересного (нет, особенно ужасен новый дизайн Liquid Glass). Для меня самое интересное – это новые AI инструменты и возможности и тут на самом деле было много интересного.
Apple показали фрейморк Foundation Models для работы с llm on-device в приложениях. Из основного:
- полностью нативная реализация и интеграция со swift'ом. Сама модель адаптирована под работу на Apple процессорах
- модель: 3B квантизованная до 2х бит: создать полноценного чат бота с ней не выйдет, но с задачами суммаризации, генерацией / понимаем текста и другими несложными llm-based задачами она более чем может справится
- есть возможность не промптом, а с помощью макросов управлять и структурировать формат ответа модели. Этот подход назвали "guided generation". Если кратко, то мы описываем энамы и структуры, и говорим, что хотим от модели в таком формате получать ответ и будем его именно так и получать
- появится новый инструмент отладки и тестирования работы с моделью
- самое важное и крутое на мой взгляд: "Tool calling": мы можем "зарегистрировать" функции приложения и сказать модели, что она может к ним обращаться и получать из них информации. Это крутое новшество, которое тянет на отдельный пост, который мы позже принесем
Отдельным пунктом хочу еще выделить, что наконец-то Xcode получит интеграцию с chatgpt и другими llm, в том числе и локально запущенными 🔥
Если хотите глубже погрузиться в архитектуру, узнать больше про пост/пре-трейн и оптимизации моделей, на каких данных и как обучалась, то вам точно нужно зайти сюда. Еще завезли отдельный HIG, посвященный генеративным AI.
#wwdc2025
👍10
Code-along: Bring on-device AI to your app using the Foundation Models framework
😮 Продолжаем погружаться в нововведения AI от Apple.
В данном видео разбирают работу с новыми инструментами на примере разработки приложения, помогающего спланировать путешествия.
Из ключевых моментов:
➡️ Написание хорошего промпта играет ключевую роль в достижении хороших результатов. Для упрощения процесса мы можем воспользоваться макросом
Есть две сущности -
Еще в помощь🤫
➡️ Для отладки работы приложения, использующего Foundation Models подвезли новый инструмент. Он так и называется
Здесь будет видно и количество времени, потраченное на загрузку ассетов, обозначен трек инференса, отдельно будут вызовы тулов. Выглядит круто. После профилирования можно сразу заняться оптимизацией - например: делать загрузку модели еще до того, как пользователь отправит свой запрос.
#wwdc2025
В данном видео разбирают работу с новыми инструментами на примере разработки приложения, помогающего спланировать путешествия.
Из ключевых моментов:
#Playground
в любом файле и там экспериментировать с получаемыми результатами - ответ будет сразу на канвасе. Есть две сущности -
Prompt
и Instructions
. Вторая - это что-то вроде системного промпта, недоступного пользователю. Очень полезная штука для предварительной «настройки» модели перед ответом на запросы.Еще в помощь
#Generable
и #Guide
, но про них нужен отдельный пост Foundation Models Instrument
Здесь будет видно и количество времени, потраченное на загрузку ассетов, обозначен трек инференса, отдельно будут вызовы тулов. Выглядит круто. После профилирования можно сразу заняться оптимизацией - например: делать загрузку модели еще до того, как пользователь отправит свой запрос.
#wwdc2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Deep dive into the Foundation Models framework
😮 В этой сессии нам дают больше информации про три вещи:
➡️ В первой части достаточно знакомые вещи для всех, кто хоть как-то погружен в LLM: рассказывают, что такое токены, как они семплируются, влияние температуры на случайные ответы.
⚡️ Про
Итак, это макрос, который генерирует схему во время компиляции, после чего она инжектится в запросы к модели. Во время ответов модель генерирует различные токены. И если нас не устраивает название этого токена (например, модель вместо
⚙️ В дополнение есть макрос
- если это поле
- если это массив, то можно задать количество элементов, которое нужно сгенерировать;
- можно даже использовать регулярные выражения, чтобы сгенерировать строки по определенным шаблонам;
🔝 Еще есть такая штука, как DynamicGenerationSchema - если вам нужно генерировать структуру ответов не во время компиляции, а в рантайме. Пример: пользователь может добавить свои схемы для NPC - они могут начать задавать вопросы с выбором ответов. Это добавляет намного больше вариативности и гибкости.
🆕 Вообщем, выглядит очень круто - не нужно тратить кучу времени на правильный парсинг всех ответов.
В завершении нам рассказывают про то, как делать тулы и как с ними работать. Но об этом в следующий раз🙂
#wwdc2025
LanguageModelSession
, @Generable
и Tool calling
.Generable
уже интереснее.Итак, это макрос, который генерирует схему во время компиляции, после чего она инжектится в запросы к модели. Во время ответов модель генерирует различные токены. И если нас не устраивает название этого токена (например, модель вместо
name:
сгенерирует firstName:
), то согласно схеме этот токен «маскируется» под необходимый ответ. Это на самом деле очень круто, поскольку заставить модель отвечать так, как нужно не такая простая задача.@Guide
, который применяется к полям в схеме с @Generable. С его помощью можно наложить определенные ограничения на поля. Например: - если это поле
Int
, мы можем задать диапазон от 1 до 3 и ответы не будут выходить за его пределы;- если это массив, то можно задать количество элементов, которое нужно сгенерировать;
- можно даже использовать регулярные выражения, чтобы сгенерировать строки по определенным шаблонам;
В завершении нам рассказывают про то, как делать тулы и как с ними работать. Но об этом в следующий раз
#wwdc2025
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👍2
Tool Calling
В продолжении прошлого поста поговорим про тулинг для моделей.
⚡️
Например, в видео из поста выше делают запрос контактов и на основе результатов модель может сгенерировать нового персонажа в игре.
⚠️ Из рекомендаций:
- стоит давать название инструменту понятное и короткое на английском языке
- описание также рекомендуют делать в одно приложение.
❓ Это нужно для того, чтобы модель понимала когда использовать инструмент опираясь на название и описание - эти две части будут переданы в промпте.
Вот так выглядит пример инструмента:
А так его использование:
⚙️ Для дебага сессии можно использовать свойство
#wwdc2025
В продолжении прошлого поста поговорим про тулинг для моделей.
Tool
представляет из себя инструмент, с помощью которого модель может выполнять какой либо код в вашем приложении для получения актуальной или дополнительной информации. Например, в видео из поста выше делают запрос контактов и на основе результатов модель может сгенерировать нового персонажа в игре.
- стоит давать название инструменту понятное и короткое на английском языке
- описание также рекомендуют делать в одно приложение.
Вот так выглядит пример инструмента:
struct BreadDatabaseTool: Tool {
let name = "searchBreadDatabase"
let description = "Searches a local database for bread recipes."
@Generable
struct Arguments {
@Guide(description: "The type of bread to search for")
var searchTerm: String
@Guide(description: "The number of recipes to get", .range(1...6))
var limit: Int
}
struct Recipe {
var name: String
var description: String
var link: URL
}
func call(arguments: Arguments) async throws -> ToolOutput {
var recipes: [Recipe] = []
// Put your code here to retrieve a list of recipes from your database.
let formattedRecipes = recipes.map {
"Recipe for '\($0.name)': \($0.description) Link: \($0.link)"
}
return ToolOutput(GeneratedContent(properties: ["recipes": formattedRecipes]))
}
}
А так его использование:
let session = LanguageModelSession(
tools: [BreadDatabaseTool()]
)
let response = try await session.respond(
to: "Find three sourdough bread recipes"
)
transcript
самой сессии.
Оно даст полную историю взаимодействия модели: вызовы инструментов, ответы инструментов, промпты, инструкции.#wwdc2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Optimize CPU performance with Instruments
😮 Супер полезная сессия про оптимизации CPU. Тут и про то, как работает пайплан CPU, как устроена память и кеш в процессоре, а также про то, как это профилировать с помощью инструментов. Очень много полезного.
Вот пару моментов:
⚠️ Используйте
✔️ Новый инструмент
🔥 Инструмент
🔍 В сессии оптимизировали бинарный поиск - от начальной имплементации получилось ускорить в 25 раз. Однако, стоит всегда находить баланс - код становится сложным и трудным к пониманию, не говоря уже о том, что на такие оптимизации может уйти очень много времени.
#wwdc2025
Вот пару моментов:
CPU Profiler
для точных замеров использования процессора - замеры проводятся независимо базируясь на тактовой частоте, в то время как Time Profiler
делает общий замер. Processor Trace
позволяет записывать все инструкции, выполняемые приложением, с минимальным влиянием на производительность, что помогает точно выявлять узкие места.CPU Counters
помогает выявлять узкие места в производительности, анализируя события в каждом блоке CPU и предоставляя данные о производительности.#wwdc2025
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤1
Read documents using the Vision framework
Что нового в Vision фреймворке?
🔥 Новый режим распознавания документов в виде таблиц! API
😮 Функция
➡️ Новая модель определения позы руки более компактна и точна, но требует переобучения существующих классификаторов из-за изменения расположения суставов.
#wwdc2025
Что нового в Vision фреймворке?
RecognizeDocumentsRequest
позволяет извлекать структурированную информацию из документов, включая таблицы, списки и машинно-читаемые коды, что упрощает процесс обработки данных.DetectLensSmudgeRequest
определяет, было ли изображение снято с запачканным объективом, используя коэффициент уверенности от 0 до 1, что помогает фильтровать низкокачественные изображения.#wwdc2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
What’s new in UIKit
🆕
ℹ️ В iOS 26 представлен новый дизайн с материалом
✏️
➡️
➡️ Введен новый метод
#wwdc2025
UIKit
теперь поддерживает автоматическое отслеживание Observable объектов, что упрощает синхронизацию пользовательского интерфейса без необходимости вручную вызывать setNeedsLayout
.Liquid Glass
, который обновляет стандартные компоненты UIKit
и улучшает навигационные переходы.UIKit
теперь позволяет интегрировать сцены SwiftUI
с помощью нового протокола UIHostingSceneDelegate
, что упрощает совместное использование UIKit
и SwiftUI
в приложениях.UIKit
расширяет поддержку HDR, позволяя создавать HDR цвета и использовать их в UIColorPickerViewController
, что улучшает визуальные эффекты в приложениях.updateProperties
для UIView
и UIViewController
, который позволяет более эффективно обновлять свойства без лишних проходов по макету.#wwdc2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Profile and optimize power usage in your app
☄️ Очень крутая сессия про профилирование использования батареи приложением - вся функциональность блекнет на фоне быстро садящегося телефона.
🆕 Используйте
📊 При разработке новых функций сравнивайте влияние различных реализаций на энергопотребление, проводя тесты в разных условиях и усредняя результаты.
⚠️ Включите режим разработчика и
⚙️ Используйте инструменты
#wwdc2025
Power Profiler
в Instruments
для выявления и устранения проблем с энергопотреблением в приложениях, что позволяет улучшить время работы от батареи.Performance Trace
на устройстве, чтобы собирать данные о потреблении энергии в реальных условиях, что помогает выявить проблемы, которые невозможно воспроизвести в процессе разработки.Xcode
, такие как Energy
Gauges
, XCTest
и MetricKit
, для мониторинга и оптимизации энергопотребления на всех этапах разработки и после выпуска приложения.#wwdc2025
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2