- l’indisponibilité du modèle
- les prompts concurrents
- les réponses structurées qui échouent à se décoder
- les refus ou blocages de sécurité
- les erreurs de vos tools
Les erreurs les plus utiles à connaître
| Erreur | Ce que vous devez faire |
|---|---|
assetsUnavailable | Vérifier la disponibilité du modèle et proposer un retry |
concurrentRequests | Empêcher les doubles envois |
decodingFailure | Simplifier le type généré ou le prompt |
exceededContextWindowSize | Créer une nouvelle session ou raccourcir l’entrée |
guardrailViolation | Afficher un message clair et demander une reformulation |
rateLimited | Réessayer plus tard |
refusal | Expliquer que le modèle n’a pas répondu |
unsupportedGuide | Corriger les guides côté développement |
unsupportedLanguageOrLocale | Vérifier la locale prise en charge |
Un pattern de base en SwiftUI
Guardrails : ce que ça implique pour l’UI
Les guardrails sont intégrés au modèle. Vous ne définissez pas vos propres règles, mais Apple expose tout de même des profils prêts à l’emploi..default reste le choix normal. .permissiveContentTransformations vise surtout les cas où vous transformez un texte fourni par l’utilisateur, même si ce texte peut contenir du contenu sensible.
Côté produit, cela signifie :
- ne promettez pas que le modèle répondra à tout
- prévoyez un message de reformulation
- évitez d’afficher des erreurs techniques brutes
refusal n’est pas toujours une erreur spectaculaire
Parfois le modèle lève une erreur. Parfois il produit simplement une réponse de refus. Dans les deux cas, votre app doit rester compréhensible.
Ne basez pas toute votre stratégie uniquement sur une exception.
Gérer les erreurs de tools
Quand un tool échoue, vous pouvez récupérer unToolCallError.
ToolCallError est qu’il vous donne deux informations utiles :
toolpour savoir quelle capacité a échouéunderlyingErrorpour garder la vraie cause technique
LocalizedError.
Ce qu’il faut faire dans l’app
- bloquer les doubles envois avec
isResponding - différencier erreur technique et message utilisateur
- réinitialiser la session si le contexte devient trop long
- prévoir un fallback si le modèle n’est pas disponible