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.
- Les paramètres d'Intent sont le contrat de types de l'app
- JSON Schema est la même liste de champs, pour arrêter la sortie du modèle
- AppEnum correspond à enum. AppEntity n'accepte qu'un id, pas un nom affiché
- Avec additionalProperties à false, une clé en trop échoue tout de suite
À 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.
- 1Le 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é.
- 2L'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.
- 3Le 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 Intent | JSON Schema | Ce que vous stockez |
|---|---|---|
| Chaîne, entier | string / integer | Gardez quantité et note dans leur type d'origine. Ne transformez pas tout en chaîne |
AppEnum | enum | Seulement les valeurs fixées à la compilation, comme pickup et delivery. Le texte affiché n'est pas une valeur d'enum. |
AppEntity | string + minLength | N'acceptez qu'un id non vide. Le nom reste dans l'interface. Ce n'est pas la clé de validation. |
| Paramètre facultatif | Ne 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.
{
"$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"
}
}
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 candidat | Pourquoi cela échoue |
|---|---|
| Un note ou raw_text en plus | Bloqué par additionalProperties |
| fulfillment écrit en prose | Absent de enum |
| item_id est une chaîne vide | Échoue à minLength |
| quantity vaut 0 ou une fraction | En 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 18 | Le chemin d'une demande | Cet article | |
|---|---|---|---|
| Question | Pourquoi les fonctions dépassent le matériel | Comment une phrase atteint une API | Quels champs peuvent entrer dans cette action |
| Ne pas chercher ici | Une autre annonce | Encore les cinq étapes de la voix au serveur | Utiliser un nom affiché à la place d'un id d'entité |
Vérifier la liste de champs dans JSONNote
- 1Coller le schéma
Collez le schéma ci-dessus dans JSON Schema. Vérifiez que intent est const et que fulfillment est un enum.
- 2Y opposer un candidat
Utilisez Valider le JSON et collez un candidat. Un id vide, un champ en trop et un mauvais enum doivent échouer.
- 3Comparer après avoir modifié les champs
Avec JSON Diff, voyez si
requireda 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.