Blog • AI / JSON Schema

La forme des données derrière l'IA de l'iPhone 18 : comment Apple Intelligence, les App Actions et JSON Schema se rejoignent

Une action d'IA sur l'iPhone 18 atteint une app grâce à un JSON Schema aligné sur les paramètres de l'Intent, pas grâce à un paragraphe produit. Le modèle système propose des champs. @Parameter déclare ce que l'app peut accepter. Le schéma est entre les deux : un objet qui ne correspond pas n'entre pas dans l'action.

Le récit produit est dans pourquoi l'iPhone 18 est plus que du matériel. Comment une demande va d'une phrase à une API est dans le chemin de données des App Actions. Cet article ne traite que les champs : comment les types correspondent, et quelles valeurs refuser.

À retenir d'abord : Le schéma n'est pas une autre description de la phrase. Il répond seulement si cet objet peut être remis à cette action. Ensuite : qui déclare les champs, la correspondance des types, un schéma, quatre refus.

Comment les trois côtés se rejoignent

Les valeurs qu'une app accepte sont écrites comme paramètres d'Intent. Voir Ajouter des paramètres à un app intent. Un modèle peut proposer un objet JSON. Il ne peut pas réécrire la liste de champs.

  1. 1
    Le système propose un candidat

    Le modèle sur l'appareil ou un raccourci remplit un objet : nom d'action, quantité, mode de remise, id d'article. C'est un candidat, pas un appel déjà exécuté.

  2. 2
    L'app déclare les types

    Chaque paramètre est une chaîne, un entier, un enum fixe, ou une entité à résoudre. Les paramètres facultatifs restent hors de required.

  3. 3
    Le schéma décide s'il continue

    Le candidat passe votre schéma avant d'être écrit dans l'Intent. En cas d'échec, il s'arrête à la validation. L'action ne s'exécute pas et l'API n'est pas appelée.

Comment les types s'alignent

App IntentJSON SchemaCe que vous stockez
Chaîne, entierstring / integerGardez quantité et note dans leur type d'origine. Ne transformez pas tout en chaîne
AppEnumenumSeulement les valeurs fixées à la compilation, comme pickup et delivery. Le texte affiché n'est pas une valeur d'enum.
AppEntitystring + minLengthN'acceptez qu'un id non vide. Le nom reste dans l'interface. Ce n'est pas la clé de validation.
Paramètre facultatifNe pas le mettre dans required. S'il manque, c'est encore valide. Un champ obligatoire manquant échoue.

Les clés hors de la liste sont refusées par additionalProperties: false. Un note ou un user ajouté par le modèle n'entre pas non plus dans l'action.

Un schéma à coller dans le validateur

Le schéma ci-dessous correspond à une action de commande : un nom d'intent fixe, plus l'id d'article, la quantité et le mode de remise. C'est votre contrat, pas le format réseau d'Apple.

JSON Schema des paramètres d'action. intent est fixé avec const.
{
  "$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"] }
      }
    }
  }
}
Un candidat qui passe le schéma ci-dessus. fulfillment doit être une valeur de l'enum.
{
  "intent": "StartOrder",
  "parameters": {
    "item_id": "sku_42",
    "quantity": 1,
    "fulfillment": "pickup"
  }
}

Un mode de remise en langage naturel, ou un item_id vide, ne passe pas. Seul un objet valide continue sur le chemin d'exécution de l'article précédent.

Quatre formes qui doivent échouer

Ce qui est apparu dans le candidatPourquoi cela échoue
Un note ou raw_text en plusBloqué par additionalProperties
fulfillment écrit en proseAbsent de enum
item_id est une chaîne videÉchoue à minLength
quantity vaut 0 ou une fractionEn dessous de minimum

Pourquoi la sortie du modèle a d'abord besoin d'un schéma est dans pourquoi l'IA a besoin de JSON Schema. Cet article attache cette liste aux paramètres d'une action d'app.

Différence avec les deux autres articles

Le récit produit de l'iPhone 18Le chemin d'une demandeCet article
QuestionPourquoi les fonctions dépassent le matérielComment une phrase atteint une APIQuels champs peuvent entrer dans cette action
Ne pas chercher iciUne autre annonceEncore les cinq étapes de la voix au serveurUtiliser un nom affiché à la place d'un id d'entité

Vérifier la liste de champs dans JSONNote

  1. 1
    Coller le schéma

    Collez le schéma ci-dessus dans JSON Schema. Vérifiez que intent est const et que fulfillment est un enum.

  2. 2
    Y opposer un candidat

    Utilisez Valider le JSON et collez un candidat. Un id vide, un champ en trop et un mauvais enum doivent échouer.

  3. 3
    Comparer après avoir modifié les champs

    Avec JSON Diff, voyez si required a perdu item_id. Perdre un champ obligatoire est plus grave que réécrire une phrase.

Questions fréquentes

JSON Schema est-il le format de requête d'Apple ?

Non. Apple décrit l'action avec les types de paramètres de l'App Intent. Le schéma est votre contrôle entre la sortie du modèle et perform(). S'il ne correspond pas, n'appelez pas l'action.

Pourquoi le champ d'entité ne peut-il pas être le nom du produit ?

Les noms changent et se répètent. La clé d'une AppEntity est un id stable. Le schéma exige une chaîne non vide pour cet id. Le nom sert seulement à l'affichage.

Un paramètre facultatif doit-il figurer dans le schéma ?

Dans properties, oui. Dans required, non. S'il manque, c'est encore valide. S'il est présent, il doit respecter le type.

L'action peut-elle s'exécuter dès que la validation passe ?

Pas encore. Le schéma ne prouve que la forme. L'id d'entité doit encore se résoudre. Une forme valide sans objet n'est pas une commande.

Est-ce le même article que pourquoi l'IA a besoin de JSON Schema ?

Non. Celui-là explique pourquoi la sortie du modèle a besoin d'une forme. Celui-ci aligne cette forme sur les paramètres d'une action d'app. Une clé en trop ou un mauvais enum est un refus.

Conclusion

Apple Intelligence et une action d'app se rejoignent sur les mêmes champs : nom d'action, types, enums et id d'entité. JSON Schema transforme cette liste en un contrôle qui peut échouer.

Conclusion directe : aligner d'abord les types de paramètres sur le schéma. Refuser les clés en trop. N'accepter qu'un id pour une entité. Un contrôle échoué n'entre pas dans l'action.

Ensuite : faites passer le schéma des paramètres d'action, puis branchez-le sur l'Intent.

Retour au blog