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.
- Intent-Parameter sind der Typvertrag der App
- JSON Schema ist dieselbe Feldliste, um Modellausgabe zu stoppen
- AppEnum wird zu enum. AppEntity nimmt eine Id, keinen Anzeigenamen
- Mit additionalProperties false scheitert ein Extra-Schlüssel sofort
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.
- 1Das 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.
- 2Die 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.
- 3Das 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 Intent | JSON Schema | Was Sie speichern |
|---|---|---|
| String, Ganzzahl | string / integer | Menge und Notiz im Originaltyp lassen. Nicht alles zu Strings machen |
AppEnum | enum | Nur die Werte zur Compile-Zeit, etwa pickup und delivery. Anzeigetext ist kein Enum-Wert. |
AppEntity | string + minLength | Nur eine nicht leere Id annehmen. Der Name bleibt in der Oberfläche und ist nicht der Prüfschlüssel. |
| Optionaler Parameter | Nicht 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.
{
"$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"] }
}
}
}
}
{
"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 auftauchte | Warum es scheitert |
|---|---|
| Zusätzliches note oder raw_text | Blockiert durch additionalProperties |
| fulfillment als Prosatext | Nicht in enum |
| item_id ist ein leerer String | Scheitert an minLength |
| quantity ist 0 oder ein Bruch | Unter 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 18 | Der Weg eines Auftrags | Dieser Artikel | |
|---|---|---|---|
| Frage | Warum die Funktionen mehr als Hardware sind | Wie ein Satz eine API erreicht | Welche Felder in diese Aktion dürfen |
| Hier nicht suchen | Noch eine Ankündigung | Noch einmal die fünf Schritte von der Sprache zum Server | Einen Anzeigenamen statt einer Entitäts-Id zu verwenden |
Die Feldliste in JSONNote prüfen
- 1Schema einfügen
Fügen Sie das Schema oben in JSON Schema ein. Prüfen Sie, dass intent const ist und fulfillment ein Enum.
- 2Einen Kandidaten dagegenhalten
Nutzen Sie JSON prüfen und fügen Sie einen Kandidaten ein. Leere Id, Extrafeld und falsches Enum sollen scheitern.
- 3Nach Feldänderungen vergleichen
Mit JSON Diff prüfen, ob
requireditem_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.