Onderzoek12 minBron gecontroleerd 26 juli 2026

Van @Generable naar SwiftData: een pijplijn met prijsopgavekwaliteit op het apparaat

De productiearchitectuur achter de Foundation Models-generator van RiseHush: getypte streaming, gelaagde afwijzing, lokale tools, actor-veilige persistentie en de faalpaden die er toe doen.

Van @Generable naar SwiftData: een pijplijn met prijsopgavekwaliteit op het apparaat — RiseHush editorial illustration — risehush.comrisehush.com

De beperking was niet “laat een model een offerte schrijven”

Eén enkele prompt kan een zin opleveren. Het kan niet vaststellen of het systeemmodel klaar is, een interface responsief houden, een gegenereerde regel onderscheiden van een historisch citaat, voorkomen dat een bijna duplicaat een bibliotheek binnenkomt, of het product bruikbaar laten als gevolgtrekking mislukt. Die omliggende beslissingen zijn het kenmerk.

RiseHush heeft geen backend voor gevolgtrekkingen. Op ondersteunde Apple Intelligence-apparaten stuurt de app een begrensde prompt naar het systeemtaalmodel van Apple op het apparaat en slaat een geaccepteerd resultaat op in lokale SwiftData. Deproductgerichte intelligentiepagina legt uit wat een persoon ziet; dit artikel documenteert het implementatiepad en de limieten ervan. De eigen beschikbaarheids-API van Apple blijft de autoriteit voor de vraag of het model nu kan worden uitgevoerd.

“Reproduceerbaar” betekent hier dat een andere ingenieur de gereedheidsmatrix, afwijzingsarmaturen, time-outpaden en persistentiecontroles kan herhalen. Het betekent niet dat een niet-deterministisch taalmodel bit voor bit hetzelfde proza ​​zal teruggeven. Deze pagina rapporteert geïnspecteerde bronarchitectuur, geen nieuwe kwaliteitsstatistieken voor fysieke apparaten; uit een testscript wordt geen benchmarkresultaat afgeleid.

  • Gevolgtrekking:Het systeemtaalmodel van Apple, op het apparaat.
  • Uitvoercontract:Een geleid Swift-type, daarna deterministische validatie.
  • Opslag:Lokale SwiftData-rijen gemarkeerd als gegenereerd.
  • Netwerkpad:Geen RiseHush-generatieserver of model van derden.

[1][2]

Van prompt tot bibliotheek: het productietraject

Dit is de architectuur achter de offertegenerator van RiseHush op het apparaat, zoals geïnspecteerd in de huidige app-bron. Het documenteert de poorten, foutpaden en controles die een ontwikkelaar kan reproduceren; het is geen modelbenchmark of een bewering dat elk concept goed is.

De volgorde is bewust. Goedkope, verklaarbare controles worden uitgevoerd voordat er verdere conclusies worden getrokken; er vindt geen schrijfbewerking plaats totdat elke vereiste poort de kandidaat heeft geaccepteerd. Een gestreamd antwoord is een voorlopige interfacetekst en geen opgeslagen offerte.

  1. Bewijs bereidheid

    De service controleert de beschikbaarheid van het systeemmodel en de gevraagde landinstelling voordat er een sessie wordt gemaakt. Geschiktheid van apparaten, Apple Intelligence-status, gereedheid van modelmiddelen en taalondersteuning zijn afzonderlijke uitkomsten.

  2. Beperk de diepgang

    Een @Generable Swift-type vraagt om één originele zin, normaal gesproken 10-16 woorden en nooit meer dan 18, zonder toeschrijving, markdown, hashtags, emoji of aanhalingstekens.

  3. Stream de hoofdrolspeler

    Er wordt een nieuwe LanguageModelSession voorverwarmd voor de aanvraag. Gedeeltelijk gestructureerde snapshots kunnen de interface bijwerken terwijl de Foundation Models-lus buiten de hoofdacteur blijft.

  4. Wijs duidelijke mislukkingen af

    Voordat er op modellen gebaseerde oordelen plaatsvinden, controleert een deterministische poort zins- en woordlimieten, taalovereenkomsten, verboden fragmenten, interpunctie en meertalige clichépatronen.

  5. Test nieuwigheid en kwaliteit

    Wanneer vergelijkingsinsluitingen beschikbaar zijn, worden overlevenden geconfronteerd met een semantische bijna-duplicaatcontrole, gevolgd door een afzonderlijke begeleide beoordeling en een onderscheidende score. Een gestreamd concept dat een vereiste drempel mist, wordt weggegooid in plaats van stilzwijgend voortgezet.

  6. Houd de overlevende vol

    Metagegevens worden buiten de hoofdacteur berekend. SwiftData-invoeging keert terug naar de hoofdacteur, labelt de regel als gegenereerd en niet als publiek domein, en draait tijdelijke invoegingen terug als het opslaan mislukt.

  7. Hergebruik lokale staat

    De app- en systeemoppervlakken gebruiken de opgeslagen offerte. Widgets lezen persistente gegevens; ze wekken het taalmodel niet binnen een extensietijdlijn.

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

Geleide uitvoer vernauwt de vorm; code is nog steeds eigenaar van beleid

Het concept is van het Swift-type, gemarkeerd met@Generable. De gids vraagt ​​om één originele zin, normaal gesproken 10-16 woorden met een harde prompt van maximaal 18, en verbiedt attributie, aanhalingstekens, hashtags, emoji, markdown en regeleinden. De productieopties gebruiken een temperatuur van 0,7 en een plafond van 40 token: genoeg ruimte voor de gestructureerde omslag en korte zin, zonder dat er uitvoer van alinealengte nodig is.

Dit maakt validatie niet optioneel. Apple beschrijft begeleid genereren als een manier om gestructureerde Swift-gegevens te produceren, en niet als een garantie dat de inhoud aan elke productregel voldoet. RiseHush beschouwt de getypte waarde van het model daarom als een niet-vertrouwd concept. De verkorte schets hieronder behoudt de productievolgorde en drempels, terwijl app-specifieke prompt- en persistentiedetails worden weggelaten.

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]

Waarom een tweede pass nog steeds niet genoeg was

De eerste afwijzingslaag is deterministisch: lege uitvoer, verboden promptresten, aanhalingstekens, woord- en zinslimieten, taalonenigheid en meertalige cliché-fixes. Een lokaal Core ML-smaakfilter kan een geleerd signaal toevoegen voor Engels, Duits, Spaans, Frans, Italiaans en Portugees; het wordt doelbewust overgeslagen in plaats van verkeerd toegepast buiten de gekalibreerde landinstellingen.

Wanneer er vervolgens vergelijkingsinsluitingen beschikbaar zijn, vergelijkt een semantische nieuwigheidspoort de kandidaat met een begrensde lokale catalogus en wijst bijna-duplicaten af bij een cosinus-gelijkenisdrempel van 0,90. Als de catalogus leeg is of er geen inbedding kan worden geproduceerd, gaat die laag er doorheen in plaats van te beweren dat de nieuwigheid is bewezen. Een frisse Foundation Models-sessie scoort dan algehele kwaliteit, originaliteit en warmte. Die rechter is een aparte zitting die hetzelfde systeemmodel gebruikt – geen onafhankelijk model en geen menselijke beoordeling. Als het niet beschikbaar is, weigert of geen gestructureerde uitvoer kan produceren, biedt een deterministische score een beperkte terugval.

Ten slotte beloont een score voor onderscheidend vermogen concrete beelden, actie, emotionele specificiteit en keuzevrijheid, terwijl formules en recente negatieve ankers worden bestraft. Acceptatie vereist momenteel een juryscore van minimaal 6 en onderscheidend vermogen van minimaal 5. Dit zijn productdrempels, geen bewijs van mondiale originaliteit of veiligheid.

Productiebeslissingen en de mislukkingen die ze voorkomen
BezorgdheidImplementatieWaarom het bestaat
BeschikbaarheidControleer de modelstatus en locale-ondersteuning vóór elk generatiepad; leg vast waarom de gereedheid mislukte.“Apple Intelligence capabel” betekent niet dat het model nu klaar is of de actieve taal van de bezoeker ondersteunt.
StructuurGebruik @Generable en @Guide voor de conceptvorm in plaats van een verzonnen JSON-antwoord te ontleden.Het Swift-type is het outputcontract, terwijl deterministische code nog steeds de productregels bezit.
GelijktijdigheidHoud modelstreaming en metadatawerk buiten het bereik van de hoofdrolspeler; alleen teruggaan voor persistentie van het lokale model.De beurt aan Foundation Models kan seconden duren, terwijl SwiftData-modelobjecten actorgebonden blijven.
KwaliteitLaagdeterministische regels, semantische nieuwigheid, een aparte rechter en drempels voor onderscheidend vermogen.Begeleide generatie vernauwt vorm; het garandeert geen waarheid, originaliteit, toon of productkwaliteit.
LatentieVerwarm alleen voor op voorgrondoppervlakken die generaties mogelijk maken en pas beperkte budgetten toe: 45 seconden in de interface, 20 voor Siri, 120 voor een achtergrondpool.Een gebruikersgericht verzoek mag niet eeuwig wachten op activa, tarieflimieten of een langzame modelbeurt.
VolhardingBewaar geaccepteerde regels als lokaal gegenereerde records, nooit als auteurscitaten uit het publieke domein; terugdraaien na een mislukte opslag.Gegenereerd schrijven heeft een duurzame herkomst nodig en mag nooit de toeschrijving van een echte persoon overnemen.

[7]

Houd het model weg van de hoofdrolspeler

De publieke dienst retourneert SwiftData-modelobjecten, zodat de toegangspunten ervan gebonden blijven aan de hoofdacteur. De dure responslus van Foundation Models doet dat niet. Elk verzoek is eigenaar van een nieuweLanguageModelSession; streaming en metadataberekening lopen weg van de hoofdacteur, met kleine expliciete sprongen voor actorgebonden promptsignalen en persistentie.

Streaming levert gedeeltelijk gestructureerde momentopnamen op voor de interface en stuurt de uiteindelijke tekst vervolgens door dezelfde balken voor poort, nieuwheid, rechter en onderscheidend vermogen als het poolpad. Een voltooide stream kruist actoren via een persistente identificatie in plaats van een niet-verzendbaar SwiftData-model te verplaatsen. De beller lost die identificatie op via zijn eigen actor.

Alleen geaccepteerde tekst wordt ingevoegd. De record is geschreven als RiseHush, gemarkeerd metsource = .generatedenisPublicDomain = false, getagd met de landinstelling en verrijkt met lokaal berekende metagegevens. Als het opslaan mislukt, worden de tijdelijke invoegingen verwijderd voordat de fout terugkeert.

[5][10]

Aard de conciërge met drie alleen-lezen tools

Ask RiseHush mag de bibliotheekstatus van een persoon niet verzinnen. Met de tool-calling API van Apple kan een sessie specifieke app-functies aanvragen en de geretourneerde gegevens opnemen. De app biedt drie begrensde, alleen-lezen tools; geen enkele bereikt een RiseHush-server.

Toolargumenten en uitvoergroottes zijn beperkt. Het opzoeken van opgeslagen offertes levert maximaal acht resultaten op, het zoeken in de catalogus maximaal vijf en de totale uitvoer van het gereedschap is beperkt. De tool voor opgeslagen offertes kan recente overeenkomende items retourneren, maar accepteert geen kalenderbereik. Het product mag dus niet beloven dat het model kan antwoorden: 'Wat heb ik vorige week bespaard?'

  • Catalogus offerte zoeken

    Zoekt in de gebundelde offertecatalogus op stemming, categorie of thema. Het vraagt ​​niet van het model om een ​​bron te verzinnen.

  • Opzoeken van offertes opgeslagen

    Zoekt de eigen opgeslagen en favoriete citaten van de persoon op in de lokale opslag.

  • Streak-status

    Leest de lokale inspiratiereeks zodat Ask RiseHush een persoonlijke vraag kan beantwoorden.

[6]

Faalgedrag is onderdeel van de architectuur

Beschikbaarheid is geen Booleaanse waarde. Op een compatibel apparaat is Apple Intelligence mogelijk nog steeds uitgeschakeld, worden modelonderdelen voorbereid of is er een taal aanwezig die het systeemmodel niet ondersteunt. Het genereren van runtime kan ook weigeren, een vangrail raken, de context overschrijden, worden beperkt, een gelijktijdig verzoek tegenkomen, gestructureerde parsering mislukken of een time-out veroorzaken.

RiseHush brengt deze gevallen in kaart met eindig productgedrag. Voorgrondgeneratie heeft een budget van 45 seconden, Siri 20 seconden en achtergrondpoolgeneratie 120 seconden. De samengestelde bibliotheek blijft de eerlijke terugval; de app slaat nooit tijdelijk proza ​​op alsof een model is geslaagd.

Waargenomen filiaal en daaruit voortvloeiend productgedrag
SignaalGedrag
Apparaat komt niet in aanmerking of Apple Intelligence is uitgeschakeldGeneratie is niet beschikbaar. De bestaande samengestelde bibliotheek blijft bruikbaar zonder te doen alsof er een modelreactie heeft plaatsgevonden.
Modelitems zijn niet gereedHet verzoek meldt de status 'Niet gereed'. Zodra de modelmiddelen van Apple aanwezig zijn, vereist de gevolgtrekking zelf geen RiseHush-server.
Gevraagde landinstelling wordt niet ondersteundEen pad dat geschikt is voor vertaling kan een Engelse versie volledig doorlaten en deze lokaal vertalen waar het vertaalframework van Apple dit paar ondersteunt; anders behoudt de app de samengestelde fallback. De vertaalde tekst wordt gecontroleerd op een niet-leeg resultaat, maar herhaalt niet de volledige doeltaalpoort, nieuwigheid en jurystapel.
Guardrail-, weigering-, snelheidslimiet-, parserings-, context-, gelijktijdigheids- of time-outfoutHet streamingpad draait niet door een onbegrensde inline nieuwe poging. Het retourneert geen gegenereerde kandidaat en laat het product netjes terugvallen.
Draft mist een kwaliteitsdrempelHet eindige poelpad kan een andere diepgang proberen; de livestream wordt afgebroken in plaats van een tweede antwoord te animeren. Geweigerde tekst wordt niet opgeslagen.
Het opslaan van SwiftData misluktDe service verwijdert de tijdelijke invoegingen en brengt een persistentiefout aan het licht in plaats van een half opgeslagen offerte achter te laten.

[2][3][7]

Een reproduceerbaarheidsprotocol, zonder verzonnen resultaten

Het onderstaande protocol scheidt broninspectie van live-apparaatbewijs. Registreer voor elke run de hardware, de build van het besturingssysteem, de landinstelling, de Apple Intelligence-status, de gereedheid van het model, de prompt, de verstreken tijd, de terminal branch, de reden van afwijzing en de persistentie. De Foundation Models Instruments van Apple kunnen tijdens een echte sessie prompt-, tool-, token- en latentiegedrag blootleggen.

Er is een machinaal leesbare versie beschikbaar als hetFoundation Models-evaluatieprotocol (JSON). Het bevat het matrix- en veldcontract, geen verzonnen metingen. Wanneer een huidige uitvoering van een fysiek apparaat wordt goedgekeurd, voegt u de geanonimiseerde rijen toe en publiceert u de totale acceptatie-, time-out- en latentiewaarden met het exacte apparaat en besturingssysteem.

  1. Gebruik compatibele hardware met een ondersteund besturingssysteem. Test Apple Intelligence ingeschakeld en gereed, uitgeschakeld en nog steeds aan het downloaden.
  2. Herhaal dit met een ondersteunde landinstelling en een niet-ondersteunde landinstelling; controleer of de app onderscheid maakt tussen modelondersteuning en algemene geschiktheid voor apparaten.
  3. Nadat de modelmiddelen gereed zijn, herhaalt u dit in de vliegtuigmodus en bevestigt u dat er geen RiseHush-generatie-eindpunt vereist is.
  4. Observeer gedeeltelijke tekst tijdens interactie met de interface; bevestig dat het scrollen en de bedieningselementen tijdens de modelbeurt blijven reageren.
  5. Feed-fixtures die leeg zijn, uit meerdere zinnen bestaan, te lang zijn, tussen aanhalingstekens staan, in de verkeerde taal staan, clichématig zijn of bijna dubbel zijn; geen enkele mag opgeslagen gegenereerde rijen worden.
  6. Trigger afwijzing van de rechter en een beperkte time-out; bevestig dat geen enkel afgewezen concept behouden blijft en dat de samengestelde ervaring beschikbaar blijft.
  7. Forceer een lokale opslagfout in een testarchief; bevestig dat ingevoegde modellen worden teruggedraaid.
  8. Oefen Siri met zijn kortere tijdsbudget en controleer of widgets alleen persistente gegevens lezen in plaats van het genereren ervan in de extensie te starten.

[8]

Wat deze architectuur niet bewijst

Een kwaliteitspijplijn kan falen zichtbaar maken en slechte persistentie verminderen. Het kan een klein taalmodel op het apparaat niet omzetten in een historische bron, bewijzen dat er nooit ergens een zin is geschreven, of smaak garanderen. Gegenereerde regels worden daarom nooit toegeschreven aan historische auteurs en komen nooit in de publiek-domeincatalogus terecht.

De vertaling verdient een aparte waarschuwing. Voor een landinstelling die niet rechtstreeks door Foundation Models wordt ondersteund, gebruikt het optionele pad een Engelse versie volledig en wordt vervolgens het vertaalframework op het apparaat van Apple gebruikt waar het paar beschikbaar is. Het vertaalde resultaat wordt gecontroleerd op een niet-lege reactie en wordt bewaard met nieuwe metagegevens, maar herhaalt momenteel niet de volledige doeltaalpoort, nieuwigheid en beoordelingsvolgorde na vertaling. Dat pad is een terugval, geen bewijs van gelijke kwaliteit van directe generatie.

Model- en besturingssysteemupdates kunnen de beschikbaarheid, latentie, weigeringsgedrag en uitvoerdistributie wijzigen. Apple raadt aan om de aanwijzingen en evaluatie opnieuw te bekijken als Foundation Models veranderen. De testmatrix van RiseHush moet daarom opnieuw worden uitgevoerd na materiële platformupdates in plaats van deze pagina als permanent benchmarkbewijs te behandelen.

  • Het systeemmodel wordt niet gebruikt als bron van historische citaten of auteursvermeldingen.
  • Gestructureerde output en een tweede modelpass verminderen faalmodi; ze bewijzen niet dat een lijn diepgaand is, origineel in de mondiale zin van het woord, of geschikt voor iedereen.
  • De semantische nieuwigheidslaag gaat door wanneer de begrensde catalogus leeg is of vergelijkingsinsluitingen niet beschikbaar zijn; het vermindert bekende bijna-duplicaten, maar certificeert de mondiale originaliteit niet.
  • Offline genereren is afhankelijk van compatibele hardware, ingeschakelde Apple Intelligence, ondersteund taalgedrag en modelmiddelen die al gereed zijn.
  • Het optionele aangeleerde Core ML-smaakfilter is gekalibreerd voor Engels, Duits, Spaans, Frans, Italiaans en Portugees; andere locaties ontvangen nog steeds de deterministische en modelgebaseerde lagen die hen ondersteunen.
  • Een lokaal vertaalde fallback is niet gelijk aan het direct genereren van de doeltaal: het huidige vertaalde resultaat herhaalt niet elke kwaliteitslaag na de vertaling.
  • OS- en modelupdates kunnen de latentie en uitvoerdistributie veranderen, dus de apparaatmatrix moet opnieuw worden uitgevoerd na materiële platformwijzigingen.
  • Deze pagina beschrijft de huidige architectuur, niet een belofte dat elk platformoppervlak Foundation Models draait. Widgets verbruiken opzettelijk aanhoudende resultaten.

[3][9][11]

Stuurt RiseHush prompts voor het genereren van offertes naar zijn eigen server?

Nee. Op ondersteunde apparaten waarop het systeemmodel beschikbaar is, worden het offerteconcept en de kwaliteitspassen uitgevoerd met de on-device frameworks van Apple. RiseHush heeft geen gevolgtrekkingseindpunt voor dit pad.

Garandeert @Generable een goede of originele offerte?

Nee. Het beperkt de vorm van gestructureerde uitvoer. RiseHush past nog steeds deterministische opmaak- en taalregels toe, semantische bijna-duplicate detectie wanneer vergelijkingsinsluitingen beschikbaar zijn, een aparte beoordelingssessie, onderscheidendheidsscores en eindig afwijzingsgedrag.

Kan een andere ontwikkelaar de exact gegenereerde zin reproduceren?

Niet betrouwbaar. De uitvoer van het taalmodel is niet-deterministisch en kan veranderen met model- of besturingssysteemupdates. De reproduceerbare eenheid is het gereedheids-, armatuur-, poort-, time-out- en persistentieprotocol - niet identiek proza.

Krijgt elke ondersteunde taal hetzelfde kwaliteitspad?

Nee. Direct ondersteunde landinstellingen ontvangen het algemene generatiepad, terwijl het aangeleerde Core ML-filter is gekalibreerd voor zes talen. Een optionele lokaal vertaalde fallback vertrekt van een gated Engels concept, maar herhaalt niet elke kwaliteitslaag in de doeltaal na de vertaling.

  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