Исследование12 минИсточник проверен 26 июля 2026 г.

От @Generable к SwiftData: конвейер качества котировок на устройстве

Производственная архитектура генератора базовых моделей RiseHush: типизированная потоковая передача, многоуровневое отклонение, локальные инструменты, безопасная для актеров устойчивость и важные пути сбоя.

От @Generable к SwiftData: конвейер качества котировок на устройстве — RiseHush editorial illustration — risehush.comrisehush.com

Ограничением не было «заставить модель написать предложение».

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

У RiseHush нет бэкэнда вывода. На поддерживаемых устройствах Apple Intelligence приложение отправляет ограниченный запрос в языковую модель системы Apple на устройстве и сохраняет принятый результат в локальном SwiftData. Аналитическая страницаZZTAG0ZZобъясняет, что видит человек; в этой статье описывается путь реализации и его ограничения. Собственный API доступности Apple по-прежнему определяет, может ли модель работать сейчас.

«Воспроизводимость» здесь означает, что другой инженер может повторить матрицу готовности, приспособления для отклонения, пути тайм-аута и проверки на постоянство. Это не означает, что недетерминированная языковая модель будет возвращать одно и то же по кусочкам. На этой странице сообщается о проверенной исходной архитектуре, а не о свежих показателях качества физического устройства; результаты теста не выводятся из тестового сценария.

  • Вывод:Языковая модель системы Apple на устройстве.
  • Выходной контракт:Управляемый тип Swift, затем детерминированная проверка.
  • Хранилище:Локальные строки SwiftData, помеченные как сгенерированные.
  • Сетевой путь:Нет сервера генерации RiseHush или сторонней модели.

[1][2]

От подсказки к библиотеке: производственный путь

Это архитектура встроенного в устройство генератора котировок RiseHush, проверенная в текущем исходном коде приложения. Он документирует шлюзы, пути отказа и проверки, которые разработчик может воспроизвести; это не эталон модели или утверждение, что каждый проект хорош.

Порядок преднамеренный. Перед дальнейшими выводами проводятся дешевые и объяснимые проверки; запись не происходит до тех пор, пока все необходимые ворота не примут кандидата. Потоковой ответ представляет собой предварительный текст интерфейса, а не сохраненную цитату.

  1. Подтвердить готовность

    Служба проверяет доступность модели системы и запрошенную локаль перед созданием сеанса. Соответствие устройств, состояние Apple Intelligence, готовность модельных активов и языковая поддержка — это отдельные результаты.

  2. Ограничить черновик

    Тип @Generable Swift требует одно оригинальное предложение, обычно состоящее из 10–16 слов, но не более 18, без указания авторства, уценки, хэштегов, смайликов или заключающих кавычек.

  3. Трансляция главного актера

    Для запроса предварительно подготовлен новый LanguageModelSession. Частично структурированные снимки могут обновлять интерфейс, в то время как цикл Foundation Models остается вне основного актера.

  4. Отвергайте очевидные неудачи

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

  5. Тестируйте новизну и качество

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

  6. Настойчиво выживший

    Метаданные вычисляются отдельно от главного актера. Вставка SwiftData возвращается к основному актеру, помечает строку как сгенерированную, а не как общедоступную, и откатывает временные вставки, если сохранение не удалось.

  7. Повторное использование локального состояния

    Интерфейсы приложения и системы используют сохраненную цитату. Виджеты считывают сохраненные данные; они не пробуждают языковую модель внутри временной шкалы расширения.

[2][3][4][5]

Направленный вывод сужает форму; код по-прежнему владеет политикой

Черновик представляет собой тип Swift с пометкой@Generable. Его руководство требует одно оригинальное предложение, обычно 10–16 слов с жестким подсказкой максимум 18, и запрещает указание авторства, перенос кавычек, хэштеги, смайлики, уценку и разрывы строк. В производственных вариантах используется температура 0,7 и потолок в 40 токенов: достаточно места для структурированной оболочки и короткого предложения, без вывода текста длиной в абзац.

Это не делает проверку необязательной. Apple описывает управляемую генерацию как способ создания структурированных данных Swift, а не как гарантию того, что контент соответствует всем правилам продукта. Поэтому RiseHush рассматривает типизированное значение модели как ненадежный черновик. Сокращенный эскиз ниже сохраняет порядок производства и пороговые значения, но опускает подсказки и сведения о постоянстве, относящиеся к конкретному приложению.

Architecture sketch — abridged from the current app sourceswift
@Generable
private struct GeneratedQuoteDraft {
    @Guide(description: "One original sentence; 10–16 words; no attribution")
    var text: String
}

guard availability(locale: locale) == .available else {
    throw GenerationError.unavailable
}

let stream = session.streamResponse(
    to: prompt,
    generating: GeneratedQuoteDraft.self,
    options: generationOptions
)

for try await snapshot in stream {
    yield(snapshot.content.text)          // interface update
}

guard deterministicGate.passes(text, locale: locale),
      await noveltyGate.isNearDuplicate(text) == false,
      await judge.score(text).overall >= 6,
      distinctiveness.score(text).overall >= 5
else {
    throw GenerationError.noCandidate
}

return try persistAsGeneratedQuote(text)

This is explanatory code, not a drop-in package. It intentionally omits app-private prompt construction, error mapping, and SwiftData model definitions.

[4][5]

Почему второго прохода все равно оказалось недостаточно

Первый уровень отклонения является детерминированным: пустой вывод, запрещенный остаток подсказки, перенос кавычек, ограничения на количество слов и предложений, языковые разногласия и многоязычные клише. Локальный вкусовой фильтр Core ML может добавлять изученный сигнал для английского, немецкого, испанского, французского, итальянского и португальского языков; его намеренно пропускают, а не применяют неправильно за пределами этих откалиброванных регионов.

Затем, когда доступны вложения сравнения, семантический вентиль новизны сравнивает кандидата с ограниченным локальным каталогом и отклоняет почти дубликаты при пороге косинусного сходства 0,90. Если каталог пуст или вложение не может быть произведено, этот слой проходит, а не утверждает, что новизна доказана. Затем новый сеанс Foundation Models оценивается в целом за качество, оригинальность и теплоту. Этот судья представляет собой отдельное заседание, использующее ту же системную модель, а не независимую модель и не человеческое рассмотрение. Если он недоступен, отказывается или не может обеспечить структурированный вывод, детерминированная оценка обеспечивает ограниченный запасной вариант.

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

Производственные решения и провалы, которые каждый из них предотвращает
БеспокойствоРеализацияПочему это существует
ДоступностьПеред каждым путем генерации проверяйте состояние модели и поддержку локали; запишите, почему готовность не удалась.«Поддержка Apple Intelligence» не означает, что модель уже готова или поддерживает активный язык посетителя.
СтруктураИспользуйте @Generable и @Guide для черновика фигуры вместо анализа изобретенного ответа JSON.Тип Swift — это выходной контракт, тогда как детерминированный код по-прежнему владеет правилами продукта.
ПараллелизмДержите потоковую передачу модели и работу с метаданными вдали от главного участника; вернуться назад только для сохранения локальной модели.Поворот базовых моделей может занять несколько секунд, в то время как объекты модели SwiftData остаются привязанными к актеру.
КачествоСлой детерминированных правил, семантическая новизна, отдельный судья и пороги различимости.Управляемая генерация сужает форму; он не гарантирует правдивости, оригинальности, тональности или качества продукции.
ЗадержкаПредварительно прогревайте только поверхности переднего плана с возможностью генерации и применяйте ограниченные бюджеты: 45 секунд в интерфейсе, 20 для Siri, 120 для фонового пула.Запрос, обращенный к пользователю, не должен вечно ждать активов, ограничений скорости или медленного изменения модели.
настойчивостьСохраняйте принятые строки как локально сгенерированные записи, а не как общедоступные цитаты авторов; откатиться назад после неудачного сохранения.Созданное произведение требует надежного происхождения и никогда не должно наследовать авторство реального человека.

[7]

Держите модель отвернутой от главного актера.

Публичная служба возвращает объекты модели SwiftData, поэтому ее точки входа остаются привязанными к главному актеру. Дорогой цикл реагирования Foundation Models этого не делает. Каждый запрос имеет новыйLanguageModelSession; потоковая передача и вычисление метаданных уходят от основного актера с небольшими явными переходами для привязанных к актеру сигналов подсказки и постоянства.

Потоковая передача создает частично структурированные снимки интерфейса, а затем передает окончательный текст через те же панели ворот, новизны, оценки и отличительности, что и путь пула. Завершенный поток пересекает актеров по постоянному идентификатору, а не перемещает неотправляемую модель SwiftData. Вызывающая сторона разрешает этот идентификатор на своем собственном актере.

Вставляется только принятый текст. Запись создана как RiseHush, помеченаsource = .generatedиisPublicDomain = false, помечена своим языковым стандартом и дополнена локально вычисленными метаданными. Если сохранение не удалось, временные вставки удаляются до возврата ошибки.

[5][10]

Заземлите консьержа с помощью трех инструментов, доступных только для чтения

Ask RiseHush не имеет права изобретать состояние библиотеки человека. API вызова инструментов Apple позволяет сеансовому запросу сузить функции приложения и включить возвращаемые данные. Приложение предоставляет три ограниченных инструмента только для чтения; ни один не достигает сервера RiseHush.

Аргументы инструмента и размеры вывода ограничены. Поиск по сохраненной цитате возвращает не более восьми результатов, поиск по каталогу — не более пяти, а общая производительность инструмента ограничена. Инструмент сохраненных котировок может возвращать последние совпадающие элементы, но не принимает календарный диапазон, поэтому продукт не должен обещать, что модель сможет ответить «что я сохранил на прошлой неделе?»

  • Поиск котировок по каталогу

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

  • Сохраненный поиск цитат

    Ищет собственные сохраненные и любимые цитаты человека в локальном хранилище.

  • Статус серии

    Читает местные источники вдохновения, чтобы Ask RiseHush мог ответить на ограниченный личный вопрос.

[6]

Поведение при отказе является частью архитектуры

Доступность не является логическим значением. На совместимом устройстве все еще может быть отключен Apple Intelligence, подготовлены ресурсы модели или язык, который модель системы не поддерживает. Генерация во время выполнения также может отказать, попасть в ограждение, выйти за рамки контекста, быть ограниченным, столкнуться с одновременным запросом, сбоем структурированного анализа или тайм-аутом.

RiseHush сопоставляет эти случаи с конечным поведением продукта. Бюджет генерации переднего плана составляет 45 секунд, Siri — 20 секунд, а генерации фонового пула — 120 секунд. Кураторская библиотека остается честным запасным вариантом; приложение никогда не сохраняет текст-заполнитель, как если бы модель была успешной.

Наблюдаемая ветвь и результирующее поведение продукта
СигналПоведение
Устройство не соответствует критериям или Apple Intelligence отключена.Генерация недоступна. Существующую курируемую библиотеку можно использовать, не притворяясь, что произошел ответ модели.
Ресурсы модели не готовыЗапрос сообщает о состоянии неготовности. Как только активы модели Apple присутствуют, сам вывод не требует сервера RiseHush.
Запрошенная локаль не поддерживаетсяПуть с возможностью перевода может полностью сохранить черновик на английском языке и перевести его локально, где платформа перевода Apple поддерживает эту пару; в противном случае приложение сохранит выбранный резервный вариант. Переведенный текст проверяется на непустой результат, но не повторяет полный стек шлюза, новизны и оценки целевого языка.
Ограждение, отказ, ограничение скорости, синтаксический анализ, контекст, параллелизм или ошибка тайм-аутаПуть потоковой передачи не проходит через неограниченную встроенную повторную попытку. Он не возвращает ни одного сгенерированного кандидата и позволяет продукту вернуться обратно без ошибок.
Черновик не соответствует порогу качестваПуть конечного пула может попробовать другой черновик; прямая трансляция прерывается, а не анимирует второй ответ. Отклоненный текст не сохраняется.
Сохранение SwiftData не выполненоСлужба удаляет свои временные вставки и выдает ошибку сохранения вместо того, чтобы оставить наполовину сохраненную цитату.

[2][3][7]

Протокол воспроизводимости без придуманных результатов

Приведенный ниже протокол отделяет проверку источника от проверки работающего устройства. Записывайте оборудование, сборку ОС, локаль, состояние Apple Intelligence, готовность модели, оперативное исправление, прошедшее время, ветвь терминала, причину отклонения и результат сохранения для каждого запуска. Инструменты Apple Foundation Models могут отображать поведение подсказок, инструментов, токенов и задержек во время реального сеанса.

Машиночитаемая версия доступна как протокол оценкиFoundation Models (JSON). Он содержит матрицу и контракт поля, а не сфабрикованные измерения. Когда текущий запуск на физическом устройстве будет одобрен, добавьте его анонимные строки и опубликуйте совокупные значения принятия, времени ожидания и задержки для конкретного устройства и ОС.

  1. Используйте совместимое оборудование с поддерживаемой ОС. Тестирование Apple Intelligence включено и готово, отключено и все еще загружается.
  2. Повторите действия с поддерживаемым и неподдерживаемым языковым стандартом; убедитесь, что приложение отличает поддержку модели от общего соответствия критериям устройства.
  3. После того, как ресурсы модели будут готовы, повторите действия в режиме полета и убедитесь, что конечная точка генерации RiseHush не требуется.
  4. Наблюдайте за частичным текстом при взаимодействии с интерфейсом; убедитесь, что прокрутка и элементы управления остаются отзывчивыми во время поворота модели.
  5. Фиксаторы ленты пусты, состоят из нескольких предложений, слишком длинны, заключены в кавычки, написаны на неправильном языке, клише или почти повторяются; ни одна не должна стать сохраненными сгенерированными строками.
  6. Триггер отклонения судьи и ограниченный тайм-аут; убедитесь, что ни один отклоненный черновик не сохранился и проверенный опыт остается доступным.
  7. Принудительно выполнить локальный сбой сохранения в тестовом хранилище; убедитесь, что вставленные модели отменены.
  8. Испытайте Siri с более коротким бюджетом времени и убедитесь, что виджеты только читают сохраненные данные, а не запускают генерацию в расширении.

[8]

Чего эта архитектура не доказывает

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

Перевод заслуживает отдельного предупреждения. Для локали, не поддерживаемой напрямую моделями Foundation, необязательный путь полностью ограничивает черновик английского языка, а затем использует платформу перевода Apple на устройстве, где доступна пара. Переведенный результат проверяется на наличие непустого ответа и сохраняется с новыми метаданными, но в настоящее время он не повторяет полную последовательность шлюза, новизны и оценки целевого языка после перевода. Этот путь является запасным вариантом, а не свидетельством равного качества прямой генерации.

Обновления модели и ОС могут изменить доступность, задержку, поведение при отказе и распределение выходных данных. Apple рекомендует возвращаться к подсказкам и оценкам по мере изменения базовых моделей. Поэтому тестовую матрицу RiseHush необходимо повторно запускать после обновления материальной платформы, а не рассматривать эту страницу как постоянное контрольное доказательство.

  • Системная модель не используется в качестве источника исторических фактов цитат или указания автора.
  • Структурированный вывод и второй проход модели уменьшают количество отказов; они не доказывают, что линия глубока, оригинальна в глобальном смысле или подходит всем.
  • Уровень семантической новизны проходит, когда его ограниченный каталог пуст или встраивания сравнения недоступны; он уменьшает количество известных почти дубликатов, но не подтверждает глобальную оригинальность.
  • Автономное создание зависит от совместимого оборудования, включенного Apple Intelligence, поддерживаемого языкового поведения и уже готовых ресурсов модели.
  • Дополнительный обучаемый вкусовой фильтр Core ML откалиброван для английского, немецкого, испанского, французского, итальянского и португальского языков; другие локали по-прежнему получают поддерживающие их детерминированные и основанные на моделях уровни.
  • Резервный вариант локального перевода не эквивалентен прямой генерации целевого языка: текущий переведенный результат не повторяет каждый уровень качества после перевода.
  • Обновления ОС и модели могут изменить задержку и распределение выходных данных, поэтому матрицу устройств необходимо перезапускать после изменения материальной платформы.
  • На этой странице описана текущая архитектура, а не обещание, что на каждой поверхности платформы будут использоваться базовые модели. Виджеты намеренно используют сохраненные результаты.

[3][9][11]

Отправляет ли RiseHush запросы на создание котировок на свой сервер?

Нет. На поддерживаемых устройствах, где доступна модель системы, черновой вариант предложения и этапы проверки качества выполняются с помощью встроенных в устройство платформ Apple. У RiseHush нет конечной точки вывода для этого пути.

Гарантирует ли @Generable хорошее или оригинальное предложение?

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

Может ли другой разработчик воспроизвести точно сгенерированное предложение?

Не надежно. Вывод языковой модели недетерминирован и может меняться при обновлении модели или ОС. Воспроизводимая единица — это протокол готовности, фиксации, шлюза, тайм-аута и постоянства, но это не идентичная формулировка.

Все ли поддерживаемые языки получают одинаковое качество?

Нет. Локали, поддерживаемые напрямую, получают общий путь генерации, а изученный фильтр Core ML откалиброван для шести языков. Необязательный резервный вариант, переведенный на локальный язык, начинается с закрытого черновика на английском языке, но не повторяет каждый уровень качества целевого языка после перевода.

  1. Apple Developer Documentation — Foundation Models framework overview: direct access to Apple’s on-device language model
  2. Apple Developer Documentation — SystemLanguageModel availability and unavailable reasons
  3. Apple Developer Documentation — supporting languages and locales with Foundation Models
  4. Apple Developer Documentation — generating Swift data structures with guided generation
  5. Apple Developer Documentation — LanguageModelSession, responses, and streaming
  6. Apple Developer Documentation — expanding generation with tool calling
  7. Apple Developer Documentation — improving the safety of generative model output
  8. Apple Developer Documentation — analyzing Foundation Models runtime performance
  9. Apple Developer Documentation — Foundation Models framework updates
  10. Apple Developer Documentation — SwiftData
  11. Apple Developer Documentation — Translation framework