Исследование макросов @Generable и @Guide во фреймворке FoundationModels

Исследование макросов @Generable и @Guide во фреймворке FoundationModels

Макросы Swift предоставляют мощный механизм для генерации кода, позволяя разработчикам сокращать объём шаблонного кода и улучшать читаемость. Фреймворк FoundationModels предлагает новые макросы, упрощающие генерацию данных для моделей с использованием языковых моделей.

@Generable: генерация экземпляров моделей

Макрос @Generable применяется к структуре Swift, чтобы указать, что её экземпляры могут быть сгенерированы языковой моделью. Компилятор автоматически синтезирует необходимые реализации протоколов и методы для поддержки потоковой генерации.

Например, структура ShoppingItem становится совместимой с автоматической генерацией. Каждый её экземпляр ожидается как структурированный вывод языковой модели.

Можно указать описание, задающее контекст или цель генерации. Это помогает языковой модели выдавать более точные и релевантные результаты.

@Guide: управление генерацией на уровне свойств

Для тонкой настройки интерпретации отдельных полей используется макрос @Guide. Его можно применить к конкретному свойству, чтобы задать инструкции по его заполнению.

Каждая аннотация @Guide служит подсказкой для языковой модели, направляя генерацию значений в соответствии с ожидаемым содержанием.

Интеграция в приложение

После применения @Generable модель можно использовать в LanguageModelSession для запроса данных. Типичный сценарий — запуск генерации в ответ на ввод пользователя.

Метод streamResponse(generating:prompt:) инициирует потоковый запрос массива экземпляров ShoppingItem. По мере поступления данных они обрабатываются и добавляются в состояние интерфейса.

Заключение

Макрос @Generable предлагает декларативный способ интеграции генерации на основе языковых моделей в Swift-приложения. В паре с @Guide он обеспечивает гибкий и структурированный контроль над генерацией — как на уровне модели, так и на уровне отдельных свойств.

Читать оригинал