Blog • AI / JSON Schema

Die Datenform hinter der iPhone-18-KI: Wie Apple Intelligence, App Actions und JSON Schema zusammenpassen

Eine KI-Aktion auf dem iPhone 18 erreicht eine App über ein JSON Schema, das zu den Intent-Parametern passt, nicht über einen Produktabsatz. Das Systemmodell schlägt Felder vor. @Parameter erklärt, was die App annehmen kann. Das Schema sitzt dazwischen: Ein Objekt, das nicht passt, kommt nicht in die Aktion.

Die Produkterzählung steht in warum iPhone 18 mehr als Hardware ist. Wie ein Auftrag vom Satz zur API kommt, steht in dem Datenweg der App Actions. Dieser Artikel behandelt nur Felder: wie Typen abbilden und welche Werte abgelehnt werden.

Zuerst festhalten: Das Schema beschreibt die Äußerung nicht noch einmal. Es beantwortet nur, ob dieses Objekt an diese Aktion darf. Danach: wer Felder erklärt, die Typzuordnung, ein Schema, vier Ablehnungen.

Wie die drei Seiten zusammenkommen

Was eine App annimmt, steht in den Intent-Parametern. Siehe Parameter zu einem App Intent hinzufügen. Ein Modell darf ein JSON-Objekt vorschlagen. Die Feldliste darf es nicht umschreiben.

  1. 1
    Das System liefert einen Kandidaten

    Das Modell auf dem Gerät oder ein Kurzbefehl füllt ein Objekt: Aktionsname, Menge, Erfüllung, Artikel-Id. Das ist ein Kandidat, kein schon ausgeführter Aufruf.

  2. 2
    Die App erklärt Typen

    Jeder Parameter ist String, Ganzzahl, festes Enum oder eine Entität, die aufgelöst werden muss. Optionale Parameter bleiben außerhalb von required.

  3. 3
    Das Schema entscheidet, ob es weitergeht

    Der Kandidat besteht Ihr Schema, bevor er in den Intent geschrieben wird. Bei einem Fehler stoppt er bei der Prüfung. Die Aktion läuft nicht, die API wird nicht gerufen.

Wie die Typen passen

App IntentJSON SchemaWas Sie speichern
String, Ganzzahlstring / integerMenge und Notiz im Originaltyp lassen. Nicht alles zu Strings machen
AppEnumenumNur die Werte zur Compile-Zeit, etwa pickup und delivery. Anzeigetext ist kein Enum-Wert.
AppEntitystring + minLengthNur eine nicht leere Id annehmen. Der Name bleibt in der Oberfläche und ist nicht der Prüfschlüssel.
Optionaler ParameterNicht aufnehmen in required. Fehlt er, bleibt es gültig. Ein fehlendes Pflichtfeld scheitert.

Schlüssel außerhalb der Feldliste lehnt additionalProperties: false ab. Ein zusätzliches note oder user vom Modell kommt trotzdem nicht in die Aktion.

Ein Schema zum Einfügen in den Prüfer

Das Schema unten passt zu einer Bestellaktion: fester Intent-Name plus Artikel-Id, Menge und Erfüllung. Es ist Ihr Vertrag, nicht Apples Übertragungsformat.

JSON Schema für die Aktionsparameter. intent ist mit const festgenagelt.
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "additionalProperties": false,
  "required": ["intent", "parameters"],
  "properties": {
    "intent": { "const": "StartOrder" },
    "parameters": {
      "type": "object",
      "additionalProperties": false,
      "required": ["item_id", "quantity", "fulfillment"],
      "properties": {
        "item_id": { "type": "string", "minLength": 1 },
        "quantity": { "type": "integer", "minimum": 1 },
        "fulfillment": { "enum": ["pickup", "delivery"] }
      }
    }
  }
}
Ein Kandidat, der das Schema oben besteht. fulfillment muss ein Wert im Enum sein.
{
  "intent": "StartOrder",
  "parameters": {
    "item_id": "sku_42",
    "quantity": 1,
    "fulfillment": "pickup"
  }
}

Eine Erfüllung in natürlicher Sprache oder eine leere item_id besteht nicht. Erst ein bestandenes Objekt geht auf den Ausführungsweg des vorigen Artikels.

Vier Formen, die scheitern sollen

Was im Kandidaten auftauchteWarum es scheitert
Zusätzliches note oder raw_textBlockiert durch additionalProperties
fulfillment als ProsatextNicht in enum
item_id ist ein leerer StringScheitert an minLength
quantity ist 0 oder ein BruchUnter minimum

Warum Modellausgabe zuerst ein Schema braucht, steht in warum KI JSON Schema braucht. Dieser Artikel hängt die Liste an die Parameter einer App-Aktion.

Abgrenzung zu den anderen beiden Artikeln

Die Produkterzählung zum iPhone 18Der Weg eines AuftragsDieser Artikel
FrageWarum die Funktionen mehr als Hardware sindWie ein Satz eine API erreichtWelche Felder in diese Aktion dürfen
Hier nicht suchenNoch eine AnkündigungNoch einmal die fünf Schritte von der Sprache zum ServerEinen Anzeigenamen statt einer Entitäts-Id zu verwenden

Die Feldliste in JSONNote prüfen

  1. 1
    Schema einfügen

    Fügen Sie das Schema oben in JSON Schema ein. Prüfen Sie, dass intent const ist und fulfillment ein Enum.

  2. 2
    Einen Kandidaten dagegenhalten

    Nutzen Sie JSON prüfen und fügen Sie einen Kandidaten ein. Leere Id, Extrafeld und falsches Enum sollen scheitern.

  3. 3
    Nach Feldänderungen vergleichen

    Mit JSON Diff prüfen, ob required item_id verloren hat. Ein fehlendes Pflichtfeld ist gefährlicher als ein umgeschriebener Satz.

Häufige Fragen

Ist JSON Schema das Anfrageformat von Apple?

Nein. Apple beschreibt die Aktion mit Parametertypen des App Intent. Das Schema ist Ihre Prüfung zwischen Modellausgabe und perform(). Passt es nicht, rufen Sie die Aktion nicht auf.

Warum darf das Entitätsfeld nicht der Produktname sein?

Namen ändern sich und kollidieren. Der Schlüssel einer AppEntity ist eine stabile Id. Das Schema verlangt dafür einen nicht leeren String. Der Name ist nur zur Anzeige.

Gehört ein optionaler Parameter ins Schema?

In properties ja, in required nein. Fehlt er, bleibt es gültig. Ist er da, muss er zum Typ passen.

Darf die Aktion laufen, sobald die Prüfung besteht?

Noch nicht. Das Schema beweist nur die Form. Die Entitäts-Id muss sich noch auflösen. Eine gültige Form ohne Objekt ist keine Bestellung.

Ist das derselbe Artikel wie warum KI JSON Schema braucht?

Nein. Der erklärt, warum Modellausgabe eine Form braucht. Dieser richtet die Form an den Parametern einer App-Aktion aus. Ein Extra-Schlüssel oder ein falsches Enum ist eine Ablehnung.

Fazit

Apple Intelligence und eine App-Aktion treffen sich auf denselben Feldern: Aktionsname, Typen, Enums und eine Entitäts-Id. JSON Schema macht aus der Liste eine Prüfung, die scheitern kann.

Direktes Fazit: Parametertypen zuerst am Schema ausrichten. Extra-Schlüssel ablehnen. Für eine Entität nur eine Id annehmen. Eine gescheiterte Prüfung kommt nicht in die Aktion.

Als Nächstes: das Schema der Aktionsparameter bestehen lassen, dann an den Intent hängen.

Zurück zum Blog