Blog • AI / Agent
Siri AI va-t-elle devenir un Agent IA ? Apple Intelligence, App Actions, API et le rôle du JSON
En entendant « Siri AI », on imagine vite un agent façon ChatGPT qui choisit ses outils et invente des appels API. Ce n’est pas ce qu’Apple a annoncé à la WWDC 2026.
Siri AI devient un agent système : contexte personnel, contenu à l’écran, App Actions entre apps. Ce n’est pas un agent ouvert. Le modèle n’invente pas de chemins REST, et n’écrit pas de JSON arbitraire sur votre serveur.
Cet article explique :
- Quelle couche appartient à Apple Intelligence, laquelle à Siri AI
- À quoi App Actions correspond côté développeur (App Intents + App Schemas)
- Comment les données circulent dans une tâche entre apps
- À quel saut le JSON apparaît — et où il n’apparaît pas
- Comment cela se compare à un agent Function Calling / MCP, et comment valider les arguments d’action dans JSONNote
Retenez ceci :L’intelligence de Siri AI est à la couche OS ; la contrainte est à la couche outils. Le modèle ne choisit que parmi les actions que vous avez déclarées. JSON est le contrat runtime une fois ces actions sorties du processus. Ci-dessous : réponse → couches produit → App Actions → flux de données → JSON → comparaison.
La réponse d’abord : agent système, pas agent ouvert
Le mot « agent » est usé. Pour certains, c’est un assistant bavard. Pour d’autres, un runtime qui boucle sur des outils jusqu’à ce que le travail soit fait. Siri AI est plus proche du second, mais l’origine des outils n’a rien d’un agent ouvert.
Un agent ouvert (ChatGPT, Claude, un runtime maison) marche souvent ainsi : le modèle lit une conversation, choisit un name et des arguments dans une liste tools, le Runtime exécute, puis le résultat revient dans le chat. Vous écrivez le catalogue. JSON Schema est le contrat d’entrée. MCP gère souvent la découverte et l’exécution. Un autre article sur ce site découpe ces quatre couches :
Pile technique Agent IA 2026 : comment combiner LLM, MCP, Function Calling et JSON Schema ?
La boucle de Siri AI vit dans le système. L’utilisateur parle à Siri, ou pointe « ça » à l’écran. Le modèle côté système (sur l’appareil ou Private Cloud Compute) comprend l’intention, puis choisit dans le catalogue d’actions exposé par les apps installées. Votre app n’est pas maître de la session. Elle n’est que la capacité vers laquelle on route.
| Comparer | Siri AI (agent système) | Agent ouvert |
|---|---|---|
| Qui fait tourner le modèle | Apple (appareil ou Private Cloud Compute) | Vous ou un hôte tiers |
| Catalogue d’outils | App Intents + App Schemas | tableau tools ou MCP tools/list |
| Forme des arguments | types Swift + assistant schema | JSON Schema |
| Peut-il inventer une API ? | Non | Seulement si vous avez exposé cet outil |
| Entre apps | Le système orchestre | Vous reliez vous-même |
| Où apparaît le JSON | Après perform(), sur HTTP | Presque chaque saut |
Donc la réponse n’est pas un oui ou un non plat. Siri AI planifie, remplit les slots et enchaîne le travail entre apps — c’est déjà un comportement d’agent. Elle ne deviendra pas un runtime ouvert où vous montez un serveur MCP à volonté. Les deux chaînes touchent apps, API et JSON, mais qui possède la session et qui génère les arguments n’est pas la même chose.
Ce qu’est Apple Intelligence face à Siri AI
Séparez d’abord les noms de produit. Mélangez-les et App Actions plus JSON n’ont plus où atterrir.
Apple Intelligence est la plateforme : des modèles génératifs intégrés aux capacités système d’iPhone, iPad et Mac. Écriture, images, résumés de notifications, Visual Intelligence, et une partie de l’inférence qui doit quitter l’appareil s’accrochent à cette couche. Les requêtes hors appareil passent par Private Cloud Compute, pas par des logs cloud publics ordinaires. Entrée officielle :
Siri AI est la nouvelle Siri annoncée à la WWDC de juin 2026, portée par la génération suivante d’Apple Intelligence. Les mots d’Apple : plus conversationnelle, contexte personnel, connaissances du monde, conscience de l’écran, et plus d’App Actions à l’échelle du système. Il y a aussi une app Siri dédiée pour revoir les conversations entre appareils. Newsroom :
Les tests développeur ont commencé le jour de la WWDC sur iOS 27, iPadOS 27, macOS 27 et visionOS 27. Début septembre 2026, c’est encore dans le cycle bêta des OS d’automne (la developer beta 8 d’iOS 27 est arrivée fin août). Au moment d’écrire, ne la traitez pas comme une fonctionnalité finie, activée par défaut pour tous les utilisateurs.
Il y a une troisième chaîne. Ne la mélangez pas avec Siri : votre app démarre sa propre session Foundation Models. Le modèle tourne alors dans votre processus, vous injectez les outils, et le système ne choisit pas « quelle app ouvrir ». Notes du framework :
La WWDC 2026 a aussi ajouté Gemini comme modèle de fondation externe optionnel, aux côtés de ChatGPT déjà là. Pour les utilisateurs, c’est une autre porte vers les connaissances du monde. Pour les développeurs, le contrat App Actions bouge à peine : un modèle externe ne touche toujours pas un Intent que vous n’avez pas déclaré.
App Actions : comment Siri atteint votre app
Les utilisateurs entendent App Actions : ce que Siri peut faire à cette app. Les développeurs livrent des App Intents. Pour que Siri AI orchestre une action, il faut aussi l’aligner sur un App Schema (assistant schema) pour que le modèle préentraîné du système reconnaisse la catégorie d’action.
La phrase Apple à la WWDC26 est nette : Siri s’est renforcée grâce à Apple Intelligence ; la façon dont les développeurs participent à Apple Intelligence, c’est App Intents. La session
Build intelligent Siri experiences with App Schemas
ramène les capacités de Siri à trois choses : accéder à vos entités, agir via des Intent, comprendre le contexte à l’écran.
App Intents est un catalogue de capacités
Pour l’agent système, une app n’est pas « ouvrir et regarder ». C’est un catalogue de capacités découvrable. Vous déclarez noms d’actions, descriptions en langage naturel, types de paramètres et résultats avec AppIntent. Spotlight, Shortcuts, Siri et Apple Intelligence partagent ce catalogue. Quand quelqu’un dit « marque cette facture comme payée », le système doit mapper l’énoncé à votre MarkInvoicePaidIntent — pas laisser le modèle tapoter l’UI.
Docs :
et
Intégrer les actions à Siri et Apple Intelligence.
App Schemas apprend à Siri la catégorie
Un App Intent ordinaire peut déjà apparaître dans Shortcuts. Pour que Siri AI l’appelle en langage naturel, vous marquez Intent, Entity et Enum avec un assistant schema — photos.openAsset, notes.createNote, etc. Le schema a une forme d’arguments fixe. Xcode vérifie l’alignement à la compilation.
C’est le plus grand écart face à un agent ouvert. Les noms d’outils d’un agent ouvert sont les vôtres. Les noms d’outils de Siri AI doivent tomber dans un vocabulaire de domaine qu’Apple a déjà entraîné. Choisissez un nom d’action plus « créatif » et le système peut ne jamais le sélectionner.
@AppIntent(schema: .finance.markInvoicePaid)
struct MarkInvoicePaidIntent: AppIntent {
@Parameter var invoice: InvoiceEntity
@Parameter var paidAt: Date
func perform() async throws -> some IntentResult {
try await InvoiceService.markPaid(
id: invoice.id,
paidAt: paidAt
)
return .result()
}
}
Il n’y a pas de JSON dans cet extrait. Siri vous passe des paramètres typés. Vous faites le travail dans perform(). S’il faut le réseau, le service métier encode le JSON ensuite.
Ne commencez pas les tests par Siri. Apple fournit AppIntentsTesting pour invoquer un Intent isolé, passer des arguments et asserter le résultat. Puis vérifiez la forme dans Shortcuts. Seulement alors donnez à Siri le chemin bout en bout. Inversez l’ordre et cela ressemble à « le modèle improvise », alors que le schema n’a jamais concordé.
Flux de données d’une tâche entre apps
Reliez les couches avec une requête concrète. L’utilisateur voit « repas partagé vendredi, tu amènes la salade » dans Messages, pointe ce texte et dit à Siri : mets-le dans Notes, puis ajoute laitue et huile d’olive à la liste de courses.
-
1
Le contexte écran entre dans le système
Par onscreen awareness, Siri sait que « ça » est un message. Vos vues doivent se relier à une App Entity pour que le système résolve la référence — pas deviner des pixels.
-
2
Le modèle ne fait que planifier et choisir
Le modèle système découpe l’énoncé en deux étapes : une action de création dans Notes, une action d’ajout dans Shopping. Il n’invente pas d’URL et n’écrit pas de SQL.
-
3
Remplir les arguments selon le schema
Titre, date et noms d’articles deviennent des valeurs typées. Si un slot manque, Siri redemande. Le contrat de cette étape est l’assistant schema, pas votre document OpenAPI.
-
4
Chaque app exécute perform()
Notes et Shopping exécutent chacun leur Intent. Le JSON HTTP n’apparaît que si ce travail doit se synchroniser vers un serveur.
-
5
Les résultats reviennent à la session système
Siri compose la réponse à partir des résultats d’Intent. Le passage d’entités entre apps peut passer par Transferable, plutôt que de déverser un JSON entier dans la conversation.
Les pièges habituels sur ce chemin : un Intent qui fait tout ; une description trop large, le modèle tire à chaque requête ; ou perform() qui renvoie un JSON de commande entier et explose le contexte système. Renvoyez un résumé. Allez chercher le détail avec une seconde action par id.
Les trois rôles du JSON sur cette chaîne
Les types Swift sont le contrat de compilation. JSON est le contrat runtime. Le saut Siri peut n’avoir aucun JSON. Dès que l’action quitte le processus — backend, fichier, fixture de test, un autre agent — la forme doit devenir du texte indépendant du langage.
JSON joue au moins trois rôles. Mélangez-en deux et vous obtenez « ça parse, mais tous les champs sont faux ».
| Couche | Ce que fait le JSON | Ce qu’il ne doit pas faire |
|---|---|---|
| 1. Format d’échange des arguments d’action | Écrire les paramètres Intent en objet sérialisable pour logs, replay et validation serveur | Fourrer tout un paragraphe en langage naturel dans un seul champ prompt |
| 2. Payload d’API HTTP | Corps de requête et de réponse quand perform() appelle le service métier | Utiliser le nom de type interne de l’Intent système comme chemin REST |
| 3. Contrat pour un agent externe | Exposer la même fonction métier via JSON Schema à Function Calling ou MCP | Écrire un schema séparé côté Siri, qui dérive |
La première couche est la plus facile à sauter. La App Intents Console de Xcode imprime invocations et arguments. Il faut pouvoir écrire le même appel en objet JSON, sinon le débogage n’a pas de replay. La deuxième couche est là où facturation et auth se passent vraiment. La troisième est déjà courante en 2026 : le même markPaid sert Siri et un agent Claude interne.
JSON Schema ne remplace pas App Schema. App Schema est le contrat de domaine pour le modèle système. JSON Schema est le contrat de données pour votre backend, vos tests et les modèles externes. Les champs doivent s’aligner. N’imaginez pas que Siri lira votre fichier OpenAPI. Pourquoi le côté IA a besoin de ce contrat :
Pourquoi l’IA a besoin de JSON Schema ?
Quoi comparer avec Function Calling / MCP
Comparez une seule chose : en quoi la décision est sérialisée.
Dans un agent ouvert, l’API modèle renvoie du JSON : le nom d’outil choisi plus des arguments qui collent à parameters. Le Runtime valide, puis exécute. MCP pose la même forme sur inputSchema / structuredContent. Détails :
Pourquoi les AI Agents ont besoin de JSON Schema ? De Tool Calling à Structured Output.
{
"type": "function",
"function": {
"name": "mark_invoice_paid",
"description": "Mark one invoice as paid.",
"parameters": {
"type": "object",
"required": ["invoice_id", "paid_at"],
"properties": {
"invoice_id": { "type": "string" },
"paid_at": { "type": "string", "format": "date-time" },
"amount_cents": { "type": "integer", "minimum": 0 },
"currency": { "type": "string", "enum": ["USD", "CNY", "EUR"] }
},
"additionalProperties": false
}
}
}
Siri AI n’a pas ce JSON. L’équivalent est @AppIntent(schema:) plus @Parameter. Le modèle fait toujours « choisir une action, remplir les slots ». Seul le format de sérialisation est devenu un appel typé interne au système.
Donc n’enveloppez pas un App Intent d’une couche « faire sortir du JSON à Siri ». Un prompt de plus ne rend pas le système plus stable ; il retire seulement le typage de votre chemin de débogage. La stabilité que vous voulez arrive après perform() : l’objet reçu par le service métier peut-il s’encoder sans perte dans l’objet arguments ci-dessus ?
Le choix est concret. Utilisateurs déjà sur appareils Apple, actions qui tiennent dans un catalogue système : Siri AI. Actions réutilisées par Android, le web ou un bot Slack interne : Function Calling plus MCP. Ne dessinez pas les deux chaînes en un seul schéma « agent universel » juste pour dire que vous avez un agent.
À quoi ressemble le JSON à votre API HTTP
L’Intent doit-il frapper le réseau ? Les actions courtes peuvent finir dans perform(). Dès qu’il y a auth, pagination ou idempotence, perform() ne fait que « valider les paramètres + appeler le service métier » ; le service envoie la requête JSON.
Ci-dessous le payload quand « marquer la facture payée » atteint le backend. Les noms de champs sont typiques d’un système de facturation interne. Les chiffres sont des exemples, pas une vraie API bancaire.
{
"action": "invoices.markPaid",
"source": "siri-ai",
"idempotency_key": "inv_1842:paid:2026-09-09",
"arguments": {
"invoice_id": "inv_1842",
"paid_at": "2026-09-09T02:14:00Z",
"currency": "USD",
"amount_cents": 12800
}
}
Avec cet objet vous répondez à trois questions : qui a déclenché, si on peut rejouer, si l’argent colle. Sans idempotency_key, un retry Siri marque la facture payée deux fois. Si amount_cents devient une chaîne, tous les rapports en aval dérivent.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["action", "source", "idempotency_key", "arguments"],
"properties": {
"action": { "const": "invoices.markPaid" },
"source": { "type": "string", "enum": ["siri-ai", "shortcuts", "app"] },
"idempotency_key": { "type": "string", "minLength": 8 },
"arguments": {
"type": "object",
"required": ["invoice_id", "paid_at"],
"properties": {
"invoice_id": { "type": "string", "minLength": 1 },
"paid_at": { "type": "string", "format": "date-time" },
"amount_cents": { "type": "integer", "minimum": 0 },
"currency": { "type": "string", "enum": ["USD", "CNY", "EUR"] }
},
"additionalProperties": false
}
},
"additionalProperties": false
}
L’agent système n’a pas besoin de votre chemin REST. Il a besoin du succès ou de l’échec de l’Intent. Vous avez besoin du chemin, parce que l’audit et les retries vivent à la couche API. Concevez les paramètres Intent comme un ensemble de champs écrits en objet JSON et l’adaptateur agent ouvert coûte beaucoup moins.
Valider les arguments d’Action dans JSONNote
La partie lente est rarement la macro Swift. C’est deux appels dont le JSON ne colle pas : Siri a réessayé avec un champ en trop, Shortcuts a perdu un enum, un agent interne a écrit amount_cents comme 128.00. JSONNote reste dans le navigateur :
-
1
Formater d’abord un appel
Coller l’objet de la App Intents Console ou des logs backend dans Formatage JSON pour ôter le bruit d’indentation et de syntaxe.
-
2
Épingler les champs requis avec un schema
Coller le brouillon sur la page JSON Schema et confirmer que action, idempotency_key et invoice_id sont encore là.
-
3
Comparer un appel Siri et un appel d’agent ouvert
Utiliser JSON Diff pour voir si source est passé de siri-ai à mcp, et si arguments a dérivé.
-
4
Ne partager que si un collègue en a besoin
Utiliser Partage Hash pour mettre un échantillon (jamais de secrets) dans le fragment d’URL. Le serveur ne reçoit pas ces données.
FAQ
Siri AI est-elle un Agent IA ?
C’est un agent système, pas un agent ouvert. Elle peut choisir des actions, remplir les arguments et enchaîner entre apps, mais le catalogue est figé par App Intents et App Schemas. Le modèle n’invente pas d’API.
App Actions et App Intents, c’est la même chose ?
Pas un seul nom de produit. App Actions est le terme côté utilisateur et système : ce que Siri peut faire à une app. Les développeurs livrent des App Intents, puis les alignent sur un App Schema pour que Siri reconnaisse la catégorie d’action.
Siri va-t-elle appeler mon API REST directement ?
Non. Siri n’appelle que les Intent que vous avez déclarés. C’est perform() qui fait ses propres appels HTTP. L’agent système veut un succès ou un échec ; facturation, auth et retries restent à votre couche API.
Apple utilise des types Swift. Pourquoi encore un JSON Schema ?
Les types Swift couvrent la compilation. Une fois l’action sortie du processus — backend, logs, replay de tests, réemploi par un agent externe — la forme doit devenir du JSON indépendant du langage. Le schema valide ce saut, pas celui de Siri.
Faut-il utiliser Siri AI, ou construire son propre agent Function Calling ?
Si les utilisateurs sont déjà sur iPhone et que l’action tient dans un catalogue système, utilisez Siri AI. Si l’action doit traverser clouds, plateformes, ou votre propre choix de modèle, utilisez Function Calling plus MCP. Les mêmes fonctions métier peuvent servir les deux chaînes ; seul l’adaptateur change.
Résumé
Siri AI deviendra un agent — l’agent dans le système d’exploitation, pas un Runtime ouvert où vous montez des outils à volonté.
Apple Intelligence fournit le modèle. App Actions (App Intents + App Schemas) fournissent les actions orchestrables. JSON est le contrat une fois ces actions sorties de l’appareil.
Concevez d’abord les paramètres Intent comme des champs écrits en objet JSON, puis accrochez le même Schema à la chaîne Siri et à la chaîne Function Calling. Les modèles et les portes système continueront de changer. La validation est le fossé entre la démo et la production — formatez, validez et comparez ce JSON en local dans JSONNote. Rien n’a besoin d’être envoyé.