Skip to main content
Avec Foundation Models, une session représente un contexte de génération. Le modèle se souvient de ce qui s’est passé dans cette session, ainsi que des instructions et des tools que vous lui avez donnés. Le bon pattern est simple : une session doit rester ciblée.

Créer une session

Ou avec un cadrage plus précis :
Ou encore avec des tools :

Quand réutiliser une session

Réutilisez la même session si :
  • vous êtes dans une conversation multi-tours
  • la tâche reste la même
  • le contexte précédent est encore utile
Exemple : un chat ou un assistant attaché à une feature précise.

Quand créer une nouvelle session

Créez une nouvelle session si :
  • vous changez de tâche
  • vous changez de rôle ou d’instructions
  • le contexte précédent n’aide plus
  • la conversation est devenue trop longue
Exemple : ne réutilisez pas la même session pour une aide culinaire puis une analyse de ticket produit.

Un bon pattern avec un view model

Cette structure vous donne un cycle de vie clair et évite une session globale trop floue.

transcript

La session maintient un transcript. Il peut être utile pour :
  • inspecter la conversation
  • debugger le comportement
  • comprendre pourquoi une réponse a été influencée par le contexte précédent
Gardez en tête que plus le transcript grossit, plus la session devient coûteuse en contexte. Apple documente aussi init(model:tools:transcript:) pour réhydrater une session à partir d’un historique existant.
C’est utile si vous voulez reprendre une conversation, restaurer un brouillon ou déplacer l’état d’une feature entre plusieurs écrans.

isResponding

La propriété isResponding est la façon la plus simple de protéger votre UI contre les doubles envois :
Dans votre code produit, vous l’utiliserez souvent via un view model plutôt que directement depuis la vue.

prewarm

Le prewarming sert à réduire le coût du premier appel quand vous savez qu’une fonctionnalité IA va être utilisée.
Apple documente prewarm(promptPrefix:) pour un cas plus précis : charger les ressources de la session tout en mettant en cache un début de prompt commun. Vous pouvez l’utiliser :
  • quand une vue IA va s’ouvrir
  • quand l’utilisateur se prépare à interagir
  • quand la feature fait partie du parcours principal
Si votre feature répète toujours le même cadrage, ce préfixe commun peut réduire la latence du premier vrai appel. Ne prewarmez pas partout par défaut. Faites-le seulement pour les flows qui le justifient.

Le piège le plus courant

Le mauvais réflexe consiste à partager une seule session dans toute l’app. Cela crée vite :
  • un contexte pollué
  • des responsabilités floues
  • des collisions entre features
Préférez :
  • une session par conversation
  • ou une session par feature clairement identifiée

Streaming & UX

Afficher proprement les réponses.

Patterns d'architecture

Transformer ces principes en architecture d’app.